summaryrefslogtreecommitdiff
path: root/context/data/scite/context
diff options
context:
space:
mode:
Diffstat (limited to 'context/data/scite/context')
-rw-r--r--context/data/scite/context/documents/scite-context-readme.pdfbin0 -> 221437 bytes
-rw-r--r--context/data/scite/context/documents/scite-context-readme.tex828
-rw-r--r--context/data/scite/context/documents/scite-context-visual.pdf1364
-rw-r--r--context/data/scite/context/documents/scite-context-visual.pngbin0 -> 77849 bytes
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-context.lua4
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-interfaces.lua10
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-metafun.lua4
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-metapost.lua9
-rw-r--r--context/data/scite/context/lexers/data/scite-context-data-tex.lua9
-rw-r--r--context/data/scite/context/lexers/lexer.lua3
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-bibtex.lua195
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cld.lua23
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua23
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-cpp.lua188
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-dummy.lua35
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua31
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-lua.lua387
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-mps.lua177
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-pdf-object.lua136
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-pdf-xref.lua43
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-pdf.lua204
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-tex-web.lua23
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-tex.lua565
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-txt.lua80
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua133
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-web.lua67
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua33
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua33
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml-script.lua33
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer-xml.lua350
-rw-r--r--context/data/scite/context/lexers/scite-context-lexer.lua2177
-rw-r--r--context/data/scite/context/lexers/themes/scite-context-theme.lua150
-rw-r--r--context/data/scite/context/scite-context-data-context.properties206
-rw-r--r--context/data/scite/context/scite-context-data-interfaces.properties1812
-rw-r--r--context/data/scite/context/scite-context-data-metafun.properties59
-rw-r--r--context/data/scite/context/scite-context-data-metapost.properties127
-rw-r--r--context/data/scite/context/scite-context-data-tex.properties238
-rw-r--r--context/data/scite/context/scite-context-external.properties104
-rw-r--r--context/data/scite/context/scite-context-internal.properties86
-rw-r--r--context/data/scite/context/scite-context-user.properties15
-rw-r--r--context/data/scite/context/scite-context.properties685
-rw-r--r--context/data/scite/context/scite-ctx-context.properties49
-rw-r--r--context/data/scite/context/scite-ctx-example.properties23
-rw-r--r--context/data/scite/context/scite-ctx.lua1398
-rw-r--r--context/data/scite/context/scite-ctx.properties172
-rw-r--r--context/data/scite/context/scite-metapost.properties76
-rw-r--r--context/data/scite/context/scite-pragma.properties41
-rw-r--r--context/data/scite/context/scite-tex.properties116
48 files changed, 12524 insertions, 0 deletions
diff --git a/context/data/scite/context/documents/scite-context-readme.pdf b/context/data/scite/context/documents/scite-context-readme.pdf
new file mode 100644
index 000000000..2bd7d4216
--- /dev/null
+++ 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
new file mode 100644
index 000000000..cbfc00a33
--- /dev/null
+++ b/context/data/scite/context/documents/scite-context-readme.tex
@@ -0,0 +1,828 @@
+% interface=en modes=icon,screen language=uk
+
+\usemodule[art-01]
+\usemodule[abr-02]
+
+\unexpanded\def\METAPOST{MetaPost}
+\unexpanded\def\METAFUN {MetaFun}
+
+\setuphead
+ [section]
+ [color=darkblue]
+
+\setuptype
+ [color=darkblue]
+
+\setuptyping
+ [color=darkblue]
+
+\setuptyping
+ [margin=yes]
+
+\setupwhitespace
+ [big]
+
+\definecolor[gray][s=.2,t=.5,a=1]
+
+\startuseMPgraphic{TitlePage}{darkness}
+ StartPage ;
+
+ numeric factor ; factor := 1/3 ;
+ numeric multiple ; multiple := PaperHeight/PaperWidth ; % 1.6 ;
+ numeric stages ; stages := multiple/16 ; % .1 ;
+ numeric darkness ; darkness := \MPvar{darkness} ;
+
+ def Scaled(expr s, m) =
+ if m = 1 :
+ scaled (2*s*PaperWidth)
+ else :
+ xscaled (2*s*PaperWidth) yscaled (2*s*PaperHeight)
+ fi
+ enddef ;
+
+ fill Page withcolor (factor*white) ;
+
+ fill fullcircle scaled (multiple*PaperWidth) shifted llcorner Page withcolor (factor*red) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted ulcorner Page withcolor (factor*green) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted urcorner Page withcolor (factor*blue) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted lrcorner Page withcolor (factor*yellow) ;
+
+ for i = llcorner Page, ulcorner Page, urcorner Page, lrcorner Page :
+ for j = 0 step stages until (10*stages-eps) : % or .8
+ fill fullcircle Scaled(j,1) shifted i withcolor transparent(1,\MPvar{darkness}*(1-j),white) ;
+ endfor ;
+ endfor ;
+
+ draw Page withpen pencircle scaled .1PaperWidth withcolor transparent(1,.5,.5white) ;
+
+ StopPage
+\stopuseMPgraphic
+
+\startmode[icon,screen]
+
+ \setuppapersize[S66][S66]
+
+ \setupbodyfont[10pt]
+
+\stopmode
+
+\startmode[icon]
+
+ \starttext
+
+ \startTEXpage
+ \useMPgraphic{TitlePage}{darkness=0.4}
+ \stopTEXpage
+
+ \stoptext
+
+\stopmode
+
+\starttext
+
+% title page
+
+\definelayer
+ [TitlePage]
+ [width=\paperwidth,
+ height=\paperheight]
+
+\setlayer
+ [TitlePage]
+ {\useMPgraphic{TitlePage}{darkness=1}}
+
+\setlayerframed
+ [TitlePage]
+ [preset=rightbottom,
+ hoffset=.1\paperwidth,
+ voffset=.1\paperwidth]
+ [align=left,
+ width=\hsize,
+ frame=off,
+ foregroundcolor=gray]
+ {\definedfont[SerifBold sa 10]SciTE\endgraf
+ \definedfont[SerifBold sa 2.48]IN CONTEXT MkIV\kern.25\bodyfontsize}
+
+\startTEXpage
+ \tightlayer[TitlePage]
+\stopTEXpage
+
+% main text
+
+\subject{About \SCITE}
+
+{\em This manual is under (re)construction.}
+
+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).
+
+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\
+we decided to use that editor because it frees us from maintaining our own. I
+ported our \TEX\ and \METAPOST\ (line based) syntax highlighting to \SCITE\ and
+got a lot of others for free.
+
+After a while I found out that there was an extension interface written in \LUA.
+I played with it and wrote a few extensions too. This pleasant experience later
+triggered the \LUATEX\ project.
+
+A decade into the century \SCITE\ got another new feature: you can write dynamic
+external lexers in \LUA\ using \LPEG. As in the meantime \CONTEXT\ has evolved in
+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 \CONTEXT\ (standalone) distribution you will find the relevant files
+under:
+
+\starttyping
+<texroot>/tex/texmf-context/context/data/scite
+\stoptyping
+
+Normally a user will not have to dive into the implementation details but in
+principle you can tweak the properties files to suit your purpose.
+
+\subject{The look and feel}
+
+The color scheme that we use is consistent over the lexers but we use more colors
+that in the traditional lexing. For instance, \TEX\ primitives, low level \TEX\
+commands, \TEX\ constants, basic file structure related commands, and user
+commands all get a different treatment. When spell checking is turned on, we
+indicate unknown words, but also words that are known but might need checking,
+for instance because they have an uppercase character. In \in {figure}
+[fig:colors] we some of that in practice.
+
+\placefigure
+ [page]
+ [fig:colors]
+ {Nested lexers in action.}
+ {\rotate
+ [rotation=90]
+ {\externalfigure
+ [scite-context-visual.png]
+ [maxheight=1.2\textwidth,
+ maxwidth=.9\textheight]}}
+
+\subject{Installing \SCITE}
+
+Installing \SCITE\ is straightforward. We are most familiar with \MSWINDOWS\ but
+for other operating systems installation is not much different. First you need to
+fetch the archive from:
+
+\starttyping
+www.scintilla.org
+\stoptyping
+
+The \MSWINDOWS\ binaries are zipped in \type {wscite.zip}, and you can unzip this
+in any directory you want as long as you make sure that the binary ends up in
+your path or as shortcut on your desktop. So, say that you install \SCITE\ in:
+
+\starttyping
+c:\data\system\scite\wscite
+\stoptyping
+
+You need to add this path to your local path definition. Installing \SCITE\ to
+some known place has the advantage that you can move it around. There are no
+special dependencies on the operating system.
+
+On \MSWINDOWS\ you can for instance install \SCITE\ in:
+
+\starttyping
+c:\data\system\scite
+\stoptyping
+
+and then end up with:
+
+\starttyping
+c:\data\system\scite\wscite
+\stoptyping
+
+and that is the path you need to add to your environment \type {PATH} variable.
+
+On \LINUX\ the files end up in:
+
+\starttyping
+/usr/bin
+/usr/share/scite
+\stoptyping
+
+Where the second path is the path we will put more files.
+
+\subject{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
+
+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:
+
+\starttyping
+c:\data\system\scite\wscite\lexers
+\stoptyping
+
+And on \LINUX:
+
+\starttyping
+/usr/share/scite/lexers
+\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.
+
+\subject{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.
+
+Anyway, if you want to use \CONTEXT, you need to copy the relevant files from
+
+\starttyping
+<texroot>/tex/texmf-context/context/data/scite
+\stoptyping
+
+to the path were \SCITE\ keeps its property files (\type {*.properties}). This is
+the path we already mentioned. There should be a file there called \type
+{SciteGlobal.properties}.
+
+So,in the end you get on \MSWINDOWS\ new files in:
+
+\starttyping
+c:\data\system\scite\wscite
+c:\data\system\scite\wscite\context
+c:\data\system\scite\wscite\context\lexer
+c:\data\system\scite\wscite\context\lexer\themes
+c:\data\system\scite\wscite\context\lexer\data
+c:\data\system\scite\wscite\context\documents
+\stoptyping
+
+while on \LINUX\ you get:
+
+\starttyping
+/usr/bin/share/
+/usr/bin/share/context
+/usr/bin/share/context/lexer
+/usr/bin/share/context/lexer/themes
+/usr/bin/share/context/lexer/data
+/usr/bin/share/context/documents
+\stoptyping
+
+At the end of the \type {SciteGlobal.properties} you need to add the following
+line:
+
+\starttyping
+import context/scite-context-user
+\stoptyping
+
+After this, things should run as expected (given that \TEX\ runs at the console
+as well).
+
+% In order to run the commands needed, we assume that the following programs
+% are installed:
+%
+% \startitemize[packed]
+% \item tidy (for quick and dirty checking of \XML\ files)
+% \item xsltproc (for converting \XML\ files into other formats)
+% \item acrobat (for viewing files)
+% \item ghostview (for viewing files, use gv on \UNIX)
+% \item rxvt (a console, only needed on \UNIX)
+% \stopitemize
+
+\subject{Fonts}
+
+The configuration file defaults to the Dejavu fonts. These free fonts are part of
+the \CONTEXT\ suite (also known as the standalone distribution). Of course you
+can fetch them from \type {http://dejavu-fonts.org} as well. You have to copy
+them to where your operating system expects them. In the suite they are available
+in:
+
+\starttyping
+<contextroot>/tex/texmf/fonts/truetype/public/dejavu
+\stoptyping
+
+\subject{Extensions}
+
+Just a quick note to some extensions. If you select a part of the text (normally
+you do this with the shift key pressed) and you hit \type {Shift-F11}, you get a
+menu with some options. More (robust) ones will be provided at some point.
+
+\subject{Spell checking}
+
+If you want to have spell checking, you need have files with correct words on
+each line. The first line of a file determines the language:
+
+\starttyping
+% language=uk
+\stoptyping
+
+When you use the external lexers, you need to provide some files. Given that you
+have a text file with valid words only, you can run the following script:
+
+\starttyping
+mtxrun --script scite --words nl uk
+\stoptyping
+
+This will convert files with names like \type {spell-nl.txt} into \LUA\ files
+that you need to copy to the \type {lexers/data} path. Spell checking happens
+realtime when you have the language directive (just add a bogus character to
+disable it). Wrong words are colored red, and words that might have a case
+problem are colored orange. Recognized words are greyed and words with less than
+three characters are ignored.
+
+A spell checking file has to be put in the \type {lexers/data} directory and
+looks as follows (e.g. \type {spell-uk.lua}):
+
+\starttyping
+return {
+ ["max"]=40,
+ ["min"]=3,
+ ["n"]=151493,
+ ["words"]={
+ ["aardvark"]="aardvark",
+ ["aardvarks"]="aardvarks",
+ ["aardwolf"]="aardwolf",
+ ["aardwolves"]="aardwolves",
+ ...
+ }
+}
+\stoptyping
+
+The keys are words that get checked for the given value (which can have uppercase
+characters). The word files are not distributed (but they might be at some point).
+
+In the case of internal lexers, the following file is needed:
+
+\starttyping
+spell-uk.txt
+\stoptyping
+
+If you use the traditional lexer, this file is taken from the path determined by
+the environment variable:
+
+\starttyping
+CTXSPELLPATH
+\stoptyping
+
+As already mentioned, the lpeg lexer expects them in the data path. This is
+because the \LUA\ instance that does the lexing is rather minimalistic and lacks
+some libraries as well as cannot access the main \SCITE\ state.
+
+Spell checking in \type {txt} files is enabled by adding a first line:
+
+\starttyping
+[#!-%] language=uk
+\stoptyping
+
+The first character on that line is one of the four mentioned between square
+brackets. So,
+
+\starttyping
+# language=uk
+\stoptyping
+
+should work. For \XML\ files there are two methods. You can use the following (at
+the start of the file):
+
+\starttyping
+<?xml ... language="uk" ?>
+\stoptyping
+
+But probably better is to use the next directive just below the
+usual \XML\ marker line:
+
+\starttyping
+<?context-directive editor language uk ?>
+\stoptyping
+
+\subject{Interface selection}
+
+In a similar fashion you can drive the interface checking:
+
+\starttyping
+% interface=nl
+\stoptyping
+
+\subject{Property files}
+
+The internal lexers are controlled by the property files while the external ones
+are steered with themes. Unfortunately there is hardly any access to properties
+from the external lexer code nor can we consult the file system and/or run
+programs like \type {mtxrun}. This means that we cannot use configuration files
+in the \CONTEXT\ distribution directly. Hopefully this changes with future
+releases.
+
+\subject{The external lexers}
+
+These are the more advanced lexers. They provide more detail and the \CONTEXT\
+lexer also supports nested \METAPOST\ and \LUA. Currently there is no detailed
+configuration but this might change once they are stable.
+
+The external lexers operate on documents while the internal ones operate on
+lines. This can make the external lexers slow on large documents. We've optimized
+the code somewhat for speed and memory consumption but there's only so much one
+can do. While lexing each change in style needs a small table but allocating and
+garbage collecting many small tables comes at a price. Of course in practice this
+probably gets unnoticed. \footnote {I wrote the code in 2011 on a more than 5
+years old Dell M90 laptop, so I suppose that speed is less an issue now.}
+
+The external lpeg lexers work okay with the \MSWINDOWS\ and \LINUX\ versions of
+\SCITE, but unfortunately at the time of writing this, the \LUA\ library that is
+needed is not available for the \MACOSX\ version of \SCITE. Also, due to the fact
+that the lexing framework is rather isolated, there are some issues that cannot
+be addressed in the properly, at least not currently.
+
+In addition to \CONTEXT\ and \METAFUN\ lexing a \LUA\ lexer is also provided so
+that we can handle \CONTEXT\ \LUA\ Document (\CLD) files too. There is also an
+\XML\ lexer. This one also provides spell checking. The \PDF\ lexer tries to do a
+good job on \PDF\ files, but it has some limitations. There is also a simple text
+file lexer that does spell checking. Finally there is a lexer for \CWEB\ files.
+
+Don't worry if you see an orange rectangle in your \TEX\ or \XML\ document. This
+indicates that there is a special space character there, for instance \type
+{0xA0}, the nonbreakable space. Of course we assume that you use \UTF8 as input
+encoding.
+
+\subject{The internal lexers}
+
+\SCITE\ has quite some built in lexers. A lexer is responsible for highlighting
+the syntax of your document. The way a \TEX\ file is treated is configured in the
+file:
+
+\starttyping
+tex.properties
+\stoptyping
+
+You can edit this file to your needs using the menu entry under \type {options}
+in the top bar. In this file, the following settings apply to the \TEX\ lexer:
+
+\starttyping
+lexer.tex.interface.default=0
+lexer.tex.use.keywords=1
+lexer.tex.comment.process=0
+lexer.tex.auto.if=1
+\stoptyping
+
+The option \type {lexer.tex.interface.default} determines the way keywords are
+highlighted. You can control the interface from your document as well, which
+makes more sense that editing the configuration file each time.
+
+\starttyping
+% interface=all|tex|nl|en|de|cz|it|ro|latex
+\stoptyping
+
+The values in the properties file and the keywords in the preamble line have the
+following meaning:
+
+\starttabulate[|lT|lT|p|]
+\NC 0 \NC all \NC all commands (preceded by a backslash) \NC \NR
+\NC 1 \NC tex \NC \TEX, \ETEX, \PDFTEX, \OMEGA\ primitives (and macros) \NC \NR
+\NC 2 \NC nl \NC the dutch \CONTEXT\ interface \NC \NR
+\NC 3 \NC en \NC the english \CONTEXT\ interface \NC \NR
+\NC 4 \NC de \NC the german \CONTEXT\ interface \NC \NR
+\NC 5 \NC cz \NC the czech \CONTEXT\ interface \NC \NR
+\NC 6 \NC it \NC the italian \CONTEXT\ interface \NC \NR
+\NC 7 \NC ro \NC the romanian \CONTEXT\ interface \NC \NR
+\NC 8 \NC latex \NC \LATEX\ (apart from packages) \NC \NR
+\stoptabulate
+
+The configuration file is set up in such a way that you can easily add more
+keywords to the lists. The keywords for the second and higher interfaces are
+defined in their own properties files. If you're curious about the way this is
+configures, you can peek into the property files that start with \type
+{scite-context}. When you have \CONTEXT\ installed you can generate configuration
+files with
+
+\starttyping
+mtxrun --script interface --scite
+\stoptyping
+
+You need to make sure that you move the result to the right place so best not
+mess around with this command and use the files from the distribution.
+
+Back to the properties in \type {tex.properties}. You can disable keyword
+coloring alltogether with:
+
+\starttyping
+lexer.tex.use.keywords=0
+\stoptyping
+
+but this is only handy for testing purposes. More interesting is that you can
+influence the way comment is treated:
+
+\starttyping
+lexer.tex.comment.process=0
+\stoptyping
+
+When set to zero, comment is not interpreted as \TEX\ code and it will come out
+in a uniform color. But, when set to one, you will get as much colors as a \TEX\
+source. It's a matter of taste what you choose.
+
+The lexer tries to cope with the \TEX\ syntax as good as possible and takes for
+instance care of the funny \type {^^} notation. A special treatment is applied to
+so called \type {\if}'s:
+
+\starttyping
+lexer.tex.auto.if=1
+\stoptyping
+
+This is the default setting. When set to one, all \type {\ifwhatever}'s will be
+seen as a command. When set to zero, only the primitive \type {\if}'s will be
+treated. In order not to confuse you, when this property is set to one, the lexer
+will not color an \type {\ifwhatever} that follows an \type {\newif}.
+
+\subject{The \METAPOST\ lexer}
+
+The \METAPOST\ lexer is set up slightly different from its \TEX\ counterpart,
+first of all because \METAPOST\ is more a language that \TEX. As with the \TEX\
+lexer, we can control the interpretation of identifiers. The \METAPOST\ specific
+configuration file is:
+
+\starttyping
+metapost.properties
+\stoptyping
+
+Here you can find properties like:
+
+\starttyping
+lexer.metapost.interface.default=1
+\stoptyping
+
+Instead of editing the configuration file you can control the lexer with the
+first line in your document:
+
+\starttyping
+% interface=none|metapost|mp|metafun
+\stoptyping
+
+The numbers and keywords have the following meaning:
+
+\starttabulate[|lT|lT|p|]
+\NC 0 \NC none \NC no highlighting of identifiers \NC \NR
+\NC 1 \NC metapost or mp \NC \METAPOST\ primitives and macros \NC \NR
+\NC 2 \NC metafun \NC \METAFUN\ macros \NC \NR
+\stoptabulate
+
+Similar to the \TEX\ lexer, you can influence the way comments are handled:
+
+\starttyping
+lexer.metapost.comment.process=1
+\stoptyping
+
+This will interpret comment as \METAPOST\ code, which is not that useful
+(opposite to \TEX, where documentation is often coded in \TEX).
+
+The lexer will color the \METAPOST\ keywords, and, when enabled also additional
+keywords (like those of \METAFUN). The additional keywords are colored and shown
+in a slanted font.
+
+The \METAFUN\ keywords are defined in a separate file:
+
+\starttyping
+metafun-scite.properties
+\stoptyping
+
+You can either copy this file to the path where you global properties files lives,
+or put a copy in the path of your user properties file. In that case you need to
+add an entry to the file \type {SciTEUser.properties}:
+
+\starttyping
+import metafun-scite
+\stoptyping
+
+The lexer is able to recognize \type {btex}||\type {etex} and will treat anything
+in between as just text. The same happens with strings (between \type {"}). Both
+act on a per line basis.
+
+\subject{Using \ConTeXt}
+
+When \type {mtxrun} is in your path, \CONTEXT\ should run out of the box. You can
+find \type {mtxrun} in:
+
+\starttyping
+<contextroot>/tex/texmf-mswin/bin
+\stoptyping
+
+or in a similar path that suits the operating system that you use.
+
+When you hit \type{CTRL-12} your document will be processed. Take a look at the
+\type {Tools} menu to see what more is provided.
+
+\subject{Extensions (using \LUA)}
+
+When the \LUA\ extensions are loaded, you will see a message in the log pane that
+looks like:
+
+\starttyping
+- see scite-ctx.properties for configuring info
+
+- ctx.spellcheck.wordpath set to ENV(CTXSPELLPATH)
+- ctxspellpath set to c:\data\develop\context\spell
+- ctx.spellcheck.wordpath expands to c:\data\develop\context\spell
+
+- ctx.wraptext.length is set to 65
+- key bindings:
+
+Shift + F11 pop up menu with ctx options
+
+Ctrl + B check spelling
+Ctrl + M wrap text (auto indent)
+Ctrl + R reset spelling results
+Ctrl + I insert template
+Ctrl + E open log file
+Ctrl + + show language character strip (key might change)
+
+- recognized first lines:
+
+xml <?xml version='1.0' language='nl'
+tex % language=nl
+\stoptyping
+
+This message tells you what extras are available. The language character strip feature
+is relatively new and displays buttons at the bottom of the screen for the characters
+in a (chosen) language. This is handy when you occasionally have to key in (snippets) of
+a language you're not familiar with. More alphabets will be added (we take data from some
+\CONTEXT\ language relates files).
+
+\subject{Templates}
+
+There is an experimental template mechanism. One option is to define templates in
+a properties file. The property file \type {scite-ctx-context} contains
+definitions like:
+
+\starttyping
+command.25.$(file.patterns.context)=insert_template \
+$(ctx.template.list.context)
+
+ctx.template.list.context=\
+ itemize=structure.itemize.context|\
+ tabulate=structure.tabulate.context|\
+ natural TABLE=structure.TABLE.context|\
+ use MP graphic=graphics.usemp.context|\
+ reuse MP graphic=graphics.reusemp.context|\
+ typeface definition=fonts.typeface.context
+
+ctx.template.structure.itemize.context=\
+\startitemize\n\
+\item ?\n\
+\item ?\n\
+\item ?\n\
+\stopitemize\n
+\stoptyping
+
+The file \type {scite-ctx-example} defines \XML\ variants:
+
+\starttyping
+command.25.$(file.patterns.example)=insert_template \
+$(ctx.template.list.example)
+
+ctx.template.list.example=\
+ bold=font.bold.example|\
+ emphasized=font.emphasized.example|\
+ |\
+ inline math=math.inline.example|\
+ display math=math.display.example|\
+ |\
+ itemize=structure.itemize.example
+
+ctx.template.structure.itemize.example=\
+<itemize>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+</itemize>\n
+\stoptyping
+
+For larger projects it makes sense to keep templates with the project. In one of
+our projects we have a directory in the path where the project files are kept
+which holds template files:
+
+\starttyping
+..../ctx-templates/achtergronden.xml
+..../ctx-templates/bewijs.xml
+\stoptyping
+
+One could define a template menu like we did previously:
+
+\starttyping
+ctx.templatelist.example=\
+ achtergronden=mathadore.achtergronden|\
+ bewijs=mathadore.bewijs|\
+
+ctx.template.mathadore.achtergronden.file=smt-achtergronden.xml
+ctx.template.mathadore.bewijs.file=smt-bewijs.xml
+\stoptyping
+
+However, when no such menu is defined, we will automatically scan the directory
+and build the menu without user intervention.
+
+\subject{Using \SCITE}
+
+The following keybindings are available in \SCITE. Most of this list is taken
+from the on|-|line help pages.
+
+\startbuffer[keybindings]
+\starttabulate[|l|p|]
+\FL
+\NC \rm \bf keybinding \NC \bf meaning (taken from the \SCITE\ help file) \NC \NR
+\ML
+\NC \type{Ctrl+Keypad+} \NC magnify text size \NC \NR
+\NC \type{Ctrl+Keypad-} \NC reduce text size \NC \NR
+\NC \type{Ctrl+Keypad/} \NC restore text size to normal \NC \NR
+\ML
+\NC \type{Ctrl+Keypad*} \NC expand or contract a fold point \NC \NR
+\ML
+\NC \type{Ctrl+Tab} \NC cycle through recent files \NC \NR
+\ML
+\NC \type{Tab} \NC indent block \NC \NR
+\NC \type{Shift+Tab} \NC dedent block \NC \NR
+\ML
+\NC \type{Ctrl+BackSpace} \NC delete to start of word \NC \NR
+\NC \type{Ctrl+Delete} \NC delete to end of word \NC \NR
+\NC \type{Ctrl+Shift+BackSpace} \NC delete to start of line \NC \NR
+\NC \type{Ctrl+Shift+Delete} \NC delete to end of line \NC \NR
+\ML
+\NC \type{Ctrl+Home} \NC go to start of document; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+End} \NC go to end of document; \type{Shift} extends selection \NC \NR
+\NC \type{Alt+Home} \NC go to start of display line; \type{Shift} extends selection \NC \NR
+\NC \type{Alt+End} \NC go to end of display line; \type{Shift} extends selection \NC \NR
+\ML
+\NC \type{Ctrl+F2} \NC create or delete a bookmark \NC \NR
+\NC \type{F2} \NC go to next bookmark \NC \NR
+\ML
+\NC \type{Ctrl+F3} \NC find selection \NC \NR
+\NC \type{Ctrl+Shift+F3} \NC find selection backwards \NC \NR
+\ML
+\NC \type{Ctrl+Up} \NC scroll up \NC \NR
+\NC \type{Ctrl+Down} \NC scroll down \NC \NR
+\ML
+\NC \type{Ctrl+C} \NC copy selection to buffer \NC \NR
+\NC \type{Ctrl+V} \NC insert content of buffer \NC \NR
+\NC \type{Ctrl+X} \NC copy selection to buffer and delete selection \NC \NR
+\ML
+\NC \type{Ctrl+L} \NC line cut \NC \NR
+\NC \type{Ctrl+Shift+T} \NC line copy \NC \NR
+\NC \type{Ctrl+Shift+L} \NC line delete \NC \NR
+\NC \type{Ctrl+T} \NC line transpose with previous \NC \NR
+\NC \type{Ctrl+D} \NC line duplicate \NC \NR
+\ML
+\NC \type{Ctrl+K} \NC find matching preprocessor conditional, skipping nested ones \NC \NR
+\NC \type{Ctrl+Shift+K} \NC select to matching preprocessor conditional \NC \NR
+\NC \type{Ctrl+J} \NC find matching preprocessor conditional backwards, skipping nested ones \NC \NR
+\NC \type{Ctrl+Shift+J} \NC select to matching preprocessor conditional backwards \NC \NR
+\ML
+\NC \type{Ctrl+[} \NC previous paragraph; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+]} \NC next paragraph; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+Left} \NC previous word; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+Right} \NC next word; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+/} \NC previous word part; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+\ } \NC next word part; \type{Shift} extends selection \NC \NR
+\ML
+\NC \type{F12 / Ctrl+F7} \NC check (or process) \NC \NR
+\NC \type{Ctrl+F12 / Ctrl+F7} \NC process (run) \NC \NR
+\NC \type{Alt+F12 / Ctrl+F7} \NC process (run) using the luajit vm (if applicable) \NC \NR
+\LL
+\stoptabulate
+\stopbuffer
+
+\getbuffer[keybindings]
+
+\page
+
+\subject{Affiliation}
+
+\starttabulate[|l|l|]
+\NC author \NC Hans Hagen \NC \NR
+\NC copyright \NC PRAGMA ADE, Hasselt NL \NC \NR
+\NC more info \NC \type {www.pragma-ade.com} \NC \NR
+\NC \NC \type {www.contextgarden.net} \NC \NR
+\NC version \NC \currentdate \NC \NR
+\stoptabulate
+
+\stoptext
diff --git a/context/data/scite/context/documents/scite-context-visual.pdf b/context/data/scite/context/documents/scite-context-visual.pdf
new file mode 100644
index 000000000..69d82eda6
--- /dev/null
+++ b/context/data/scite/context/documents/scite-context-visual.pdf
@@ -0,0 +1,1364 @@
+%PDF-1.6
+%
+17 0 obj
+<</Length 57118 >>
+stream
+0 g 0 G
+0 g 0 G
+BT
+/F1 11.955168 Tf 1 0 0 1 280.5345 760.6422 Tm [<0052>]TJ
+/F1 20.658493 Tf 1 0 0 1 70.867 696.3895 Tm [<0052>-750<00610051004B0032>-326<0037001C004D002B0076>-326<00690042006900480032>]TJ
+/F1 11.955168 Tf 1 0 0 1 83.2207 641.7609 Tm [<0068003F0032>-326<0069003F00420060002F>-326<0032004D0069006000760035>]TJ
+ET
+q
+1 0 0 1 70.867 664.3031 cm
+[]0 d 0 J 0.3985 w 0 0 m 318.8947 0 l S
+Q
+q
+1 0 0 1 71.0662 625.3676 cm
+[]0 d 0 J 0.3985 w 0 0 m 0 39.1348 l S
+Q
+q
+1 0 0 1 389.5625 625.3676 cm
+[]0 d 0 J 0.3985 w 0 0 m 0 39.1348 l S
+Q
+q
+1 0 0 1 70.867 625.5668 cm
+[]0 d 0 J 0.3985 w 0 0 m 318.8947 0 l S
+Q
+BT
+/F1 11.955168 Tf 1 0 0 1 83.2207 589.6746 Tm [<0068003F0032>-326<00370051006D00600069003F>-326<0032004D0069006000760035>]TJ
+ET
+q
+1 0 0 1 70.867 612.2169 cm
+[]0 d 0 J 0.3985 w 0 0 m 318.8947 0 l S
+Q
+q
+1 0 0 1 71.0662 573.2813 cm
+[]0 d 0 J 0.3985 w 0 0 m 0 39.1348 l S
+Q
+q
+1 0 0 1 389.5625 573.2813 cm
+[]0 d 0 J 0.3985 w 0 0 m 0 39.1348 l S
+Q
+q
+1 0 0 1 70.867 573.4806 cm
+[]0 d 0 J 0.3985 w 0 0 m 318.8947 0 l S
+Q
+BT
+/F1 11.955168 Tf 1 0 0 1 70.867 550.9383 Tm [<0068003F00420062>-293<00420062>-293<0044006D00620069>-293<00620051004B0032>-293<0069003200740069>-293<00690051>-293<002F0032004B0051004D006200690060001C00690032>-293<0069003F0032>-293<00600032001C004800690042004B0032>-293<00620054>-27<003200480048002B>26<003F0032002B>27<0046>27<00320060>-292<0042004D>-293<002B0051004B00230042004D001C006900420051004D>-293<007200420069003F>]TJ
+1 0 0 1 70.867 536.5108 Tm [<0069003F0032>-326<0032004B0023>-27<0032002F002F0032002F>-326<0048006D001C>-326<001C004D002F>-326<004B00320069001C0054>-27<005100620069>-326<004800320074003200600062>-326<001C004D002F>-326<0042004D00480042004D0032>-326<001C0062>-326<0072>27<003200480048>-326<001C0062>-326<002F0042006200540048001C>27<0076>-326<0048006D001C>-326<002B0051>-27<002F00320058>]TJ
+ET
+1 0 0 1 212.8474 389.4945 cm
+% mps graphic 1: begin
+q
+0 g 0 G
+10.000000 M
+1 j
+1 J
+0.500000 w
+1.417328 0.000000 m
+1.417328 0.375916 1.267960 0.736389 1.002182 1.002182 c
+0.736389 1.267960 0.375916 1.417328 0.000000 1.417328 c
+-0.375916 1.417328 -0.736389 1.267960 -1.002182 1.002182 c
+-1.267960 0.736389 -1.417328 0.375916 -1.417328 0.000000 c
+-1.417328 -0.375916 -1.267960 -0.736389 -1.002182 -1.002182 c
+-0.736389 -1.267960 -0.375916 -1.417328 0.000000 -1.417328 c
+0.375916 -1.417328 0.736389 -1.267960 1.002182 -1.002182 c
+1.267960 -0.736389 1.417328 -0.375916 1.417328 0.000000 c
+h S
+0.500000 w
+2.834641 0.000000 m
+2.834641 0.751831 2.535934 1.472778 2.004349 2.004349 c
+1.472778 2.535934 0.751831 2.834641 0.000000 2.834641 c
+-0.751831 2.834641 -1.472778 2.535934 -2.004349 2.004349 c
+-2.535934 1.472778 -2.834641 0.751831 -2.834641 0.000000 c
+-2.834641 -0.751831 -2.535934 -1.472778 -2.004349 -2.004349 c
+-1.472778 -2.535934 -0.751831 -2.834641 0.000000 -2.834641 c
+0.751831 -2.834641 1.472778 -2.535934 2.004349 -2.004349 c
+2.535934 -1.472778 2.834641 -0.751831 2.834641 0.000000 c
+h S
+0.500000 w
+4.251968 0.000000 m
+4.251968 1.127747 3.803894 2.209152 3.006531 3.006531 c
+2.209152 3.803894 1.127747 4.251968 0.000000 4.251968 c
+-1.127747 4.251968 -2.209152 3.803894 -3.006531 3.006531 c
+-3.803894 2.209152 -4.251968 1.127747 -4.251968 0.000000 c
+-4.251968 -1.127747 -3.803894 -2.209152 -3.006531 -3.006531 c
+-2.209152 -3.803894 -1.127747 -4.251968 0.000000 -4.251968 c
+1.127747 -4.251968 2.209152 -3.803894 3.006531 -3.006531 c
+3.803894 -2.209152 4.251968 -1.127747 4.251968 0.000000 c
+h S
+0.500000 w
+5.669281 0.000000 m
+5.669281 1.503647 5.071869 2.945541 4.008698 4.008698 c
+2.945541 5.071869 1.503647 5.669281 0.000000 5.669281 c
+-1.503647 5.669281 -2.945541 5.071869 -4.008698 4.008698 c
+-5.071869 2.945541 -5.669281 1.503647 -5.669281 0.000000 c
+-5.669281 -1.503647 -5.071869 -2.945541 -4.008698 -4.008698 c
+-2.945541 -5.071869 -1.503647 -5.669281 0.000000 -5.669281 c
+1.503647 -5.669281 2.945541 -5.071869 4.008698 -4.008698 c
+5.071869 -2.945541 5.669281 -1.503647 5.669281 0.000000 c
+h S
+0.500000 w
+7.086609 0.000000 m
+7.086609 1.879562 6.339828 3.681931 5.010880 5.010880 c
+3.681931 6.339828 1.879562 7.086609 0.000000 7.086609 c
+-1.879562 7.086609 -3.681931 6.339828 -5.010880 5.010880 c
+-6.339828 3.681931 -7.086609 1.879562 -7.086609 0.000000 c
+-7.086609 -1.879562 -6.339828 -3.681931 -5.010880 -5.010880 c
+-3.681931 -6.339828 -1.879562 -7.086609 0.000000 -7.086609 c
+1.879562 -7.086609 3.681931 -6.339828 5.010880 -5.010880 c
+6.339828 -3.681931 7.086609 -1.879562 7.086609 0.000000 c
+h S
+0.500000 w
+8.503922 0.000000 m
+8.503922 2.255478 7.607803 4.418320 6.013062 6.013062 c
+4.418320 7.607803 2.255478 8.503922 0.000000 8.503922 c
+-2.255478 8.503922 -4.418320 7.607803 -6.013062 6.013062 c
+-7.607803 4.418320 -8.503922 2.255478 -8.503922 0.000000 c
+-8.503922 -2.255478 -7.607803 -4.418320 -6.013062 -6.013062 c
+-4.418320 -7.607803 -2.255478 -8.503922 0.000000 -8.503922 c
+2.255478 -8.503922 4.418320 -7.607803 6.013062 -6.013062 c
+7.607803 -4.418320 8.503922 -2.255478 8.503922 0.000000 c
+h S
+0.500000 w
+9.921249 0.000000 m
+9.921249 2.631393 8.875763 5.154694 7.015228 7.015228 c
+5.154694 8.875763 2.631393 9.921249 0.000000 9.921249 c
+-2.631393 9.921249 -5.154694 8.875763 -7.015228 7.015228 c
+-8.875763 5.154694 -9.921249 2.631393 -9.921249 0.000000 c
+-9.921249 -2.631393 -8.875763 -5.154694 -7.015228 -7.015228 c
+-5.154694 -8.875763 -2.631393 -9.921249 0.000000 -9.921249 c
+2.631393 -9.921249 5.154694 -8.875763 7.015228 -7.015228 c
+8.875763 -5.154694 9.921249 -2.631393 9.921249 0.000000 c
+h S
+0.500000 w
+11.338562 0.000000 m
+11.338562 3.007309 10.143738 5.891083 8.017410 8.017410 c
+5.891083 10.143738 3.007309 11.338562 0.000000 11.338562 c
+-3.007309 11.338562 -5.891083 10.143738 -8.017410 8.017410 c
+-10.143738 5.891083 -11.338562 3.007309 -11.338562 0.000000 c
+-11.338562 -3.007309 -10.143738 -5.891083 -8.017410 -8.017410 c
+-5.891083 -10.143738 -3.007309 -11.338562 0.000000 -11.338562 c
+3.007309 -11.338562 5.891083 -10.143738 8.017410 -8.017410 c
+10.143738 -5.891083 11.338562 -3.007309 11.338562 0.000000 c
+h S
+0.500000 w
+12.755890 0.000000 m
+12.755890 3.383224 11.411697 6.627472 9.019592 9.019592 c
+6.627472 11.411697 3.383224 12.755890 0.000000 12.755890 c
+-3.383224 12.755890 -6.627472 11.411697 -9.019592 9.019592 c
+-11.411697 6.627472 -12.755890 3.383224 -12.755890 0.000000 c
+-12.755890 -3.383224 -11.411697 -6.627472 -9.019592 -9.019592 c
+-6.627472 -11.411697 -3.383224 -12.755890 0.000000 -12.755890 c
+3.383224 -12.755890 6.627472 -11.411697 9.019592 -9.019592 c
+11.411697 -6.627472 12.755890 -3.383224 12.755890 0.000000 c
+h S
+0.500000 w
+14.173203 0.000000 m
+14.173203 3.759140 12.679672 7.363861 10.021759 10.021759 c
+7.363861 12.679672 3.759140 14.173203 0.000000 14.173203 c
+-3.759140 14.173203 -7.363861 12.679672 -10.021759 10.021759 c
+-12.679672 7.363861 -14.173203 3.759140 -14.173203 0.000000 c
+-14.173203 -3.759140 -12.679672 -7.363861 -10.021759 -10.021759 c
+-7.363861 -12.679672 -3.759140 -14.173203 0.000000 -14.173203 c
+3.759140 -14.173203 7.363861 -12.679672 10.021759 -10.021759 c
+12.679672 -7.363861 14.173203 -3.759140 14.173203 0.000000 c
+h S
+0.500000 w
+15.590530 0.000000 m
+15.590530 4.135040 13.947632 8.100235 11.023941 11.023941 c
+8.100235 13.947632 4.135040 15.590530 0.000000 15.590530 c
+-4.135040 15.590530 -8.100235 13.947632 -11.023941 11.023941 c
+-13.947632 8.100235 -15.590530 4.135040 -15.590530 0.000000 c
+-15.590530 -4.135040 -13.947632 -8.100235 -11.023941 -11.023941 c
+-8.100235 -13.947632 -4.135040 -15.590530 0.000000 -15.590530 c
+4.135040 -15.590530 8.100235 -13.947632 11.023941 -11.023941 c
+13.947632 -8.100235 15.590530 -4.135040 15.590530 0.000000 c
+h S
+0.500000 w
+17.007843 0.000000 m
+17.007843 4.510956 15.215607 8.836624 12.026108 12.026108 c
+8.836624 15.215607 4.510956 17.007843 0.000000 17.007843 c
+-4.510956 17.007843 -8.836624 15.215607 -12.026108 12.026108 c
+-15.215607 8.836624 -17.007843 4.510956 -17.007843 0.000000 c
+-17.007843 -4.510956 -15.215607 -8.836624 -12.026108 -12.026108 c
+-8.836624 -15.215607 -4.510956 -17.007843 0.000000 -17.007843 c
+4.510956 -17.007843 8.836624 -15.215607 12.026108 -12.026108 c
+15.215607 -8.836624 17.007843 -4.510956 17.007843 0.000000 c
+h S
+0.500000 w
+18.425171 0.000000 m
+18.425171 4.886871 16.483566 9.573013 13.028290 13.028290 c
+9.573013 16.483566 4.886871 18.425171 0.000000 18.425171 c
+-4.886871 18.425171 -9.573013 16.483566 -13.028290 13.028290 c
+-16.483566 9.573013 -18.425171 4.886871 -18.425171 0.000000 c
+-18.425171 -4.886871 -16.483566 -9.573013 -13.028290 -13.028290 c
+-9.573013 -16.483566 -4.886871 -18.425171 0.000000 -18.425171 c
+4.886871 -18.425171 9.573013 -16.483566 13.028290 -13.028290 c
+16.483566 -9.573013 18.425171 -4.886871 18.425171 0.000000 c
+h S
+0.500000 w
+19.842484 0.000000 m
+19.842484 5.262787 17.751541 10.309402 14.030472 14.030472 c
+10.309402 17.751541 5.262787 19.842484 0.000000 19.842484 c
+-5.262787 19.842484 -10.309402 17.751541 -14.030472 14.030472 c
+-17.751541 10.309402 -19.842484 5.262787 -19.842484 0.000000 c
+-19.842484 -5.262787 -17.751541 -10.309402 -14.030472 -14.030472 c
+-10.309402 -17.751541 -5.262787 -19.842484 0.000000 -19.842484 c
+5.262787 -19.842484 10.309402 -17.751541 14.030472 -14.030472 c
+17.751541 -10.309402 19.842484 -5.262787 19.842484 0.000000 c
+h S
+0.500000 w
+21.259811 0.000000 m
+21.259811 5.638702 19.019501 11.045776 15.032639 15.032639 c
+11.045776 19.019501 5.638702 21.259811 0.000000 21.259811 c
+-5.638702 21.259811 -11.045776 19.019501 -15.032639 15.032639 c
+-19.019501 11.045776 -21.259811 5.638702 -21.259811 0.000000 c
+-21.259811 -5.638702 -19.019501 -11.045776 -15.032639 -15.032639 c
+-11.045776 -19.019501 -5.638702 -21.259811 0.000000 -21.259811 c
+5.638702 -21.259811 11.045776 -19.019501 15.032639 -15.032639 c
+19.019501 -11.045776 21.259811 -5.638702 21.259811 0.000000 c
+h S
+0.500000 w
+22.677124 0.000000 m
+22.677124 6.014618 20.287476 11.782166 16.034821 16.034821 c
+11.782166 20.287476 6.014618 22.677124 0.000000 22.677124 c
+-6.014618 22.677124 -11.782166 20.287476 -16.034821 16.034821 c
+-20.287476 11.782166 -22.677124 6.014618 -22.677124 0.000000 c
+-22.677124 -6.014618 -20.287476 -11.782166 -16.034821 -16.034821 c
+-11.782166 -20.287476 -6.014618 -22.677124 0.000000 -22.677124 c
+6.014618 -22.677124 11.782166 -20.287476 16.034821 -16.034821 c
+20.287476 -11.782166 22.677124 -6.014618 22.677124 0.000000 c
+h S
+0.500000 w
+24.094452 0.000000 m
+24.094452 6.390533 21.555435 12.518555 17.037003 17.037003 c
+12.518555 21.555435 6.390533 24.094452 0.000000 24.094452 c
+-6.390533 24.094452 -12.518555 21.555435 -17.037003 17.037003 c
+-21.555435 12.518555 -24.094452 6.390533 -24.094452 0.000000 c
+-24.094452 -6.390533 -21.555435 -12.518555 -17.037003 -17.037003 c
+-12.518555 -21.555435 -6.390533 -24.094452 0.000000 -24.094452 c
+6.390533 -24.094452 12.518555 -21.555435 17.037003 -17.037003 c
+21.555435 -12.518555 24.094452 -6.390533 24.094452 0.000000 c
+h S
+0.500000 w
+25.511765 0.000000 m
+25.511765 6.766434 22.823410 13.254944 18.039169 18.039169 c
+13.254944 22.823410 6.766434 25.511765 0.000000 25.511765 c
+-6.766434 25.511765 -13.254944 22.823410 -18.039169 18.039169 c
+-22.823410 13.254944 -25.511765 6.766434 -25.511765 0.000000 c
+-25.511765 -6.766434 -22.823410 -13.254944 -18.039169 -18.039169 c
+-13.254944 -22.823410 -6.766434 -25.511765 0.000000 -25.511765 c
+6.766434 -25.511765 13.254944 -22.823410 18.039169 -18.039169 c
+22.823410 -13.254944 25.511765 -6.766434 25.511765 0.000000 c
+h S
+0.500000 w
+26.929092 0.000000 m
+26.929092 7.142349 24.091370 13.991318 19.041351 19.041351 c
+13.991318 24.091370 7.142349 26.929092 0.000000 26.929092 c
+-7.142349 26.929092 -13.991318 24.091370 -19.041351 19.041351 c
+-24.091370 13.991318 -26.929092 7.142349 -26.929092 0.000000 c
+-26.929092 -7.142349 -24.091370 -13.991318 -19.041351 -19.041351 c
+-13.991318 -24.091370 -7.142349 -26.929092 0.000000 -26.929092 c
+7.142349 -26.929092 13.991318 -24.091370 19.041351 -19.041351 c
+24.091370 -13.991318 26.929092 -7.142349 26.929092 0.000000 c
+h S
+0.500000 w
+28.346405 0.000000 m
+28.346405 7.518265 25.359344 14.727707 20.043518 20.043518 c
+14.727707 25.359344 7.518265 28.346405 0.000000 28.346405 c
+-7.518265 28.346405 -14.727707 25.359344 -20.043518 20.043518 c
+-25.359344 14.727707 -28.346405 7.518265 -28.346405 0.000000 c
+-28.346405 -7.518265 -25.359344 -14.727707 -20.043518 -20.043518 c
+-14.727707 -25.359344 -7.518265 -28.346405 0.000000 -28.346405 c
+7.518265 -28.346405 14.727707 -25.359344 20.043518 -20.043518 c
+25.359344 -14.727707 28.346405 -7.518265 28.346405 0.000000 c
+h S
+0.500000 w
+29.763733 0.000000 m
+29.763733 7.894180 26.627304 15.464096 21.045700 21.045700 c
+15.464096 26.627304 7.894180 29.763733 0.000000 29.763733 c
+-7.894180 29.763733 -15.464096 26.627304 -21.045700 21.045700 c
+-26.627304 15.464096 -29.763733 7.894180 -29.763733 0.000000 c
+-29.763733 -7.894180 -26.627304 -15.464096 -21.045700 -21.045700 c
+-15.464096 -26.627304 -7.894180 -29.763733 0.000000 -29.763733 c
+7.894180 -29.763733 15.464096 -26.627304 21.045700 -21.045700 c
+26.627304 -15.464096 29.763733 -7.894180 29.763733 0.000000 c
+h S
+0.500000 w
+31.181046 0.000000 m
+31.181046 8.270096 27.895279 16.200485 22.047882 22.047882 c
+16.200485 27.895279 8.270096 31.181046 0.000000 31.181046 c
+-8.270096 31.181046 -16.200485 27.895279 -22.047882 22.047882 c
+-27.895279 16.200485 -31.181046 8.270096 -31.181046 0.000000 c
+-31.181046 -8.270096 -27.895279 -16.200485 -22.047882 -22.047882 c
+-16.200485 -27.895279 -8.270096 -31.181046 0.000000 -31.181046 c
+8.270096 -31.181046 16.200485 -27.895279 22.047882 -22.047882 c
+27.895279 -16.200485 31.181046 -8.270096 31.181046 0.000000 c
+h S
+0.500000 w
+32.598373 0.000000 m
+32.598373 8.646011 29.163239 16.936859 23.050049 23.050049 c
+16.936859 29.163239 8.646011 32.598373 0.000000 32.598373 c
+-8.646011 32.598373 -16.936859 29.163239 -23.050049 23.050049 c
+-29.163239 16.936859 -32.598373 8.646011 -32.598373 0.000000 c
+-32.598373 -8.646011 -29.163239 -16.936859 -23.050049 -23.050049 c
+-16.936859 -29.163239 -8.646011 -32.598373 0.000000 -32.598373 c
+8.646011 -32.598373 16.936859 -29.163239 23.050049 -23.050049 c
+29.163239 -16.936859 32.598373 -8.646011 32.598373 0.000000 c
+h S
+0.500000 w
+34.015686 0.000000 m
+34.015686 9.021927 30.431213 17.673248 24.052231 24.052231 c
+17.673248 30.431213 9.021927 34.015686 0.000000 34.015686 c
+-9.021927 34.015686 -17.673248 30.431213 -24.052231 24.052231 c
+-30.431213 17.673248 -34.015686 9.021927 -34.015686 0.000000 c
+-34.015686 -9.021927 -30.431213 -17.673248 -24.052231 -24.052231 c
+-17.673248 -30.431213 -9.021927 -34.015686 0.000000 -34.015686 c
+9.021927 -34.015686 17.673248 -30.431213 24.052231 -24.052231 c
+30.431213 -17.673248 34.015686 -9.021927 34.015686 0.000000 c
+h S
+0.500000 w
+35.433014 0.000000 m
+35.433014 9.397842 31.699173 18.409637 25.054413 25.054413 c
+18.409637 31.699173 9.397842 35.433014 0.000000 35.433014 c
+-9.397842 35.433014 -18.409637 31.699173 -25.054413 25.054413 c
+-31.699173 18.409637 -35.433014 9.397842 -35.433014 0.000000 c
+-35.433014 -9.397842 -31.699173 -18.409637 -25.054413 -25.054413 c
+-18.409637 -31.699173 -9.397842 -35.433014 0.000000 -35.433014 c
+9.397842 -35.433014 18.409637 -31.699173 25.054413 -25.054413 c
+31.699173 -18.409637 35.433014 -9.397842 35.433014 0.000000 c
+h S
+0.500000 w
+36.850327 0.000000 m
+36.850327 9.773743 32.967148 19.146027 26.056580 26.056580 c
+19.146027 32.967148 9.773743 36.850327 0.000000 36.850327 c
+-9.773743 36.850327 -19.146027 32.967148 -26.056580 26.056580 c
+-32.967148 19.146027 -36.850327 9.773743 -36.850327 0.000000 c
+-36.850327 -9.773743 -32.967148 -19.146027 -26.056580 -26.056580 c
+-19.146027 -32.967148 -9.773743 -36.850327 0.000000 -36.850327 c
+9.773743 -36.850327 19.146027 -32.967148 26.056580 -26.056580 c
+32.967148 -19.146027 36.850327 -9.773743 36.850327 0.000000 c
+h S
+0.500000 w
+38.267654 0.000000 m
+38.267654 10.149658 34.235107 19.882401 27.058762 27.058762 c
+19.882401 34.235107 10.149658 38.267654 0.000000 38.267654 c
+-10.149658 38.267654 -19.882401 34.235107 -27.058762 27.058762 c
+-34.235107 19.882401 -38.267654 10.149658 -38.267654 0.000000 c
+-38.267654 -10.149658 -34.235107 -19.882401 -27.058762 -27.058762 c
+-19.882401 -34.235107 -10.149658 -38.267654 0.000000 -38.267654 c
+10.149658 -38.267654 19.882401 -34.235107 27.058762 -27.058762 c
+34.235107 -19.882401 38.267654 -10.149658 38.267654 0.000000 c
+h S
+0.500000 w
+39.684967 0.000000 m
+39.684967 10.525574 35.503082 20.618790 28.060928 28.060928 c
+20.618790 35.503082 10.525574 39.684967 0.000000 39.684967 c
+-10.525574 39.684967 -20.618790 35.503082 -28.060928 28.060928 c
+-35.503082 20.618790 -39.684967 10.525574 -39.684967 0.000000 c
+-39.684967 -10.525574 -35.503082 -20.618790 -28.060928 -28.060928 c
+-20.618790 -35.503082 -10.525574 -39.684967 0.000000 -39.684967 c
+10.525574 -39.684967 20.618790 -35.503082 28.060928 -28.060928 c
+35.503082 -20.618790 39.684967 -10.525574 39.684967 0.000000 c
+h S
+0.500000 w
+41.102295 0.000000 m
+41.102295 10.901489 36.771042 21.355179 29.063110 29.063110 c
+21.355179 36.771042 10.901489 41.102295 0.000000 41.102295 c
+-10.901489 41.102295 -21.355179 36.771042 -29.063110 29.063110 c
+-36.771042 21.355179 -41.102295 10.901489 -41.102295 0.000000 c
+-41.102295 -10.901489 -36.771042 -21.355179 -29.063110 -29.063110 c
+-21.355179 -36.771042 -10.901489 -41.102295 0.000000 -41.102295 c
+10.901489 -41.102295 21.355179 -36.771042 29.063110 -29.063110 c
+36.771042 -21.355179 41.102295 -10.901489 41.102295 0.000000 c
+h S
+0.500000 w
+42.519608 0.000000 m
+42.519608 11.277405 38.039017 22.091568 30.065292 30.065292 c
+22.091568 38.039017 11.277405 42.519608 0.000000 42.519608 c
+-11.277405 42.519608 -22.091568 38.039017 -30.065292 30.065292 c
+-38.039017 22.091568 -42.519608 11.277405 -42.519608 0.000000 c
+-42.519608 -11.277405 -38.039017 -22.091568 -30.065292 -30.065292 c
+-22.091568 -38.039017 -11.277405 -42.519608 0.000000 -42.519608 c
+11.277405 -42.519608 22.091568 -38.039017 30.065292 -30.065292 c
+38.039017 -22.091568 42.519608 -11.277405 42.519608 0.000000 c
+h S
+0.500000 w
+43.936935 0.000000 m
+43.936935 11.653320 39.306976 22.827942 31.067459 31.067459 c
+22.827942 39.306976 11.653320 43.936935 0.000000 43.936935 c
+-11.653320 43.936935 -22.827942 39.306976 -31.067459 31.067459 c
+-39.306976 22.827942 -43.936935 11.653320 -43.936935 0.000000 c
+-43.936935 -11.653320 -39.306976 -22.827942 -31.067459 -31.067459 c
+-22.827942 -39.306976 -11.653320 -43.936935 0.000000 -43.936935 c
+11.653320 -43.936935 22.827942 -39.306976 31.067459 -31.067459 c
+39.306976 -22.827942 43.936935 -11.653320 43.936935 0.000000 c
+h S
+0.500000 w
+45.354248 0.000000 m
+45.354248 12.029236 40.574951 23.564331 32.069641 32.069641 c
+23.564331 40.574951 12.029236 45.354248 0.000000 45.354248 c
+-12.029236 45.354248 -23.564331 40.574951 -32.069641 32.069641 c
+-40.574951 23.564331 -45.354248 12.029236 -45.354248 0.000000 c
+-45.354248 -12.029236 -40.574951 -23.564331 -32.069641 -32.069641 c
+-23.564331 -40.574951 -12.029236 -45.354248 0.000000 -45.354248 c
+12.029236 -45.354248 23.564331 -40.574951 32.069641 -32.069641 c
+40.574951 -23.564331 45.354248 -12.029236 45.354248 0.000000 c
+h S
+0.500000 w
+46.771576 0.000000 m
+46.771576 12.405136 41.842911 24.300720 33.071808 33.071808 c
+24.300720 41.842911 12.405136 46.771576 0.000000 46.771576 c
+-12.405136 46.771576 -24.300720 41.842911 -33.071808 33.071808 c
+-41.842911 24.300720 -46.771576 12.405136 -46.771576 0.000000 c
+-46.771576 -12.405136 -41.842911 -24.300720 -33.071808 -33.071808 c
+-24.300720 -41.842911 -12.405136 -46.771576 0.000000 -46.771576 c
+12.405136 -46.771576 24.300720 -41.842911 33.071808 -33.071808 c
+41.842911 -24.300720 46.771576 -12.405136 46.771576 0.000000 c
+h S
+0.500000 w
+48.188889 0.000000 m
+48.188889 12.781052 43.110886 25.037109 34.073990 34.073990 c
+25.037109 43.110886 12.781052 48.188889 0.000000 48.188889 c
+-12.781052 48.188889 -25.037109 43.110886 -34.073990 34.073990 c
+-43.110886 25.037109 -48.188889 12.781052 -48.188889 0.000000 c
+-48.188889 -12.781052 -43.110886 -25.037109 -34.073990 -34.073990 c
+-25.037109 -43.110886 -12.781052 -48.188889 0.000000 -48.188889 c
+12.781052 -48.188889 25.037109 -43.110886 34.073990 -34.073990 c
+43.110886 -25.037109 48.188889 -12.781052 48.188889 0.000000 c
+h S
+0.500000 w
+49.606216 0.000000 m
+49.606216 13.156967 44.378845 25.773483 35.076172 35.076172 c
+25.773483 44.378845 13.156967 49.606216 0.000000 49.606216 c
+-13.156967 49.606216 -25.773483 44.378845 -35.076172 35.076172 c
+-44.378845 25.773483 -49.606216 13.156967 -49.606216 0.000000 c
+-49.606216 -13.156967 -44.378845 -25.773483 -35.076172 -35.076172 c
+-25.773483 -44.378845 -13.156967 -49.606216 0.000000 -49.606216 c
+13.156967 -49.606216 25.773483 -44.378845 35.076172 -35.076172 c
+44.378845 -25.773483 49.606216 -13.156967 49.606216 0.000000 c
+h S
+0.500000 w
+51.023529 0.000000 m
+51.023529 13.532883 45.646820 26.509872 36.078339 36.078339 c
+26.509872 45.646820 13.532883 51.023529 0.000000 51.023529 c
+-13.532883 51.023529 -26.509872 45.646820 -36.078339 36.078339 c
+-45.646820 26.509872 -51.023529 13.532883 -51.023529 0.000000 c
+-51.023529 -13.532883 -45.646820 -26.509872 -36.078339 -36.078339 c
+-26.509872 -45.646820 -13.532883 -51.023529 0.000000 -51.023529 c
+13.532883 -51.023529 26.509872 -45.646820 36.078339 -36.078339 c
+45.646820 -26.509872 51.023529 -13.532883 51.023529 0.000000 c
+h S
+0.500000 w
+52.440857 0.000000 m
+52.440857 13.908798 46.914780 27.246262 37.080521 37.080521 c
+27.246262 46.914780 13.908798 52.440857 0.000000 52.440857 c
+-13.908798 52.440857 -27.246262 46.914780 -37.080521 37.080521 c
+-46.914780 27.246262 -52.440857 13.908798 -52.440857 0.000000 c
+-52.440857 -13.908798 -46.914780 -27.246262 -37.080521 -37.080521 c
+-27.246262 -46.914780 -13.908798 -52.440857 0.000000 -52.440857 c
+13.908798 -52.440857 27.246262 -46.914780 37.080521 -37.080521 c
+46.914780 -27.246262 52.440857 -13.908798 52.440857 0.000000 c
+h S
+0.500000 w
+53.858170 0.000000 m
+53.858170 14.284714 48.182739 27.982651 38.082703 38.082703 c
+27.982651 48.182739 14.284714 53.858170 0.000000 53.858170 c
+-14.284714 53.858170 -27.982651 48.182739 -38.082703 38.082703 c
+-48.182739 27.982651 -53.858170 14.284714 -53.858170 0.000000 c
+-53.858170 -14.284714 -48.182739 -27.982651 -38.082703 -38.082703 c
+-27.982651 -48.182739 -14.284714 -53.858170 0.000000 -53.858170 c
+14.284714 -53.858170 27.982651 -48.182739 38.082703 -38.082703 c
+48.182739 -27.982651 53.858170 -14.284714 53.858170 0.000000 c
+h S
+0.500000 w
+55.275497 0.000000 m
+55.275497 14.660629 49.450714 28.719025 39.084869 39.084869 c
+28.719025 49.450714 14.660629 55.275497 0.000000 55.275497 c
+-14.660629 55.275497 -28.719025 49.450714 -39.084869 39.084869 c
+-49.450714 28.719025 -55.275497 14.660629 -55.275497 0.000000 c
+-55.275497 -14.660629 -49.450714 -28.719025 -39.084869 -39.084869 c
+-28.719025 -49.450714 -14.660629 -55.275497 0.000000 -55.275497 c
+14.660629 -55.275497 28.719025 -49.450714 39.084869 -39.084869 c
+49.450714 -28.719025 55.275497 -14.660629 55.275497 0.000000 c
+h S
+0.500000 w
+56.692810 0.000000 m
+56.692810 15.036530 50.718674 29.455414 40.087051 40.087051 c
+29.455414 50.718674 15.036530 56.692810 0.000000 56.692810 c
+-15.036530 56.692810 -29.455414 50.718674 -40.087051 40.087051 c
+-50.718674 29.455414 -56.692810 15.036530 -56.692810 0.000000 c
+-56.692810 -15.036530 -50.718674 -29.455414 -40.087051 -40.087051 c
+-29.455414 -50.718674 -15.036530 -56.692810 0.000000 -56.692810 c
+15.036530 -56.692810 29.455414 -50.718674 40.087051 -40.087051 c
+50.718674 -29.455414 56.692810 -15.036530 56.692810 0.000000 c
+h S
+0.500000 w
+58.110138 0.000000 m
+58.110138 15.412445 51.986649 30.191803 41.089218 41.089218 c
+30.191803 51.986649 15.412445 58.110138 0.000000 58.110138 c
+-15.412445 58.110138 -30.191803 51.986649 -41.089218 41.089218 c
+-51.986649 30.191803 -58.110138 15.412445 -58.110138 0.000000 c
+-58.110138 -15.412445 -51.986649 -30.191803 -41.089218 -41.089218 c
+-30.191803 -51.986649 -15.412445 -58.110138 0.000000 -58.110138 c
+15.412445 -58.110138 30.191803 -51.986649 41.089218 -41.089218 c
+51.986649 -30.191803 58.110138 -15.412445 58.110138 0.000000 c
+h S
+0.500000 w
+59.527451 0.000000 m
+59.527451 15.788361 53.254608 30.928192 42.091400 42.091400 c
+30.928192 53.254608 15.788361 59.527451 0.000000 59.527451 c
+-15.788361 59.527451 -30.928192 53.254608 -42.091400 42.091400 c
+-53.254608 30.928192 -59.527451 15.788361 -59.527451 0.000000 c
+-59.527451 -15.788361 -53.254608 -30.928192 -42.091400 -42.091400 c
+-30.928192 -53.254608 -15.788361 -59.527451 0.000000 -59.527451 c
+15.788361 -59.527451 30.928192 -53.254608 42.091400 -42.091400 c
+53.254608 -30.928192 59.527451 -15.788361 59.527451 0.000000 c
+h S
+0.500000 w
+60.944778 0.000000 m
+60.944778 16.164276 54.522583 31.664566 43.093582 43.093582 c
+31.664566 54.522583 16.164276 60.944778 0.000000 60.944778 c
+-16.164276 60.944778 -31.664566 54.522583 -43.093582 43.093582 c
+-54.522583 31.664566 -60.944778 16.164276 -60.944778 0.000000 c
+-60.944778 -16.164276 -54.522583 -31.664566 -43.093582 -43.093582 c
+-31.664566 -54.522583 -16.164276 -60.944778 0.000000 -60.944778 c
+16.164276 -60.944778 31.664566 -54.522583 43.093582 -43.093582 c
+54.522583 -31.664566 60.944778 -16.164276 60.944778 0.000000 c
+h S
+0.500000 w
+62.362091 0.000000 m
+62.362091 16.540192 55.790543 32.400955 44.095749 44.095749 c
+32.400955 55.790543 16.540192 62.362091 0.000000 62.362091 c
+-16.540192 62.362091 -32.400955 55.790543 -44.095749 44.095749 c
+-55.790543 32.400955 -62.362091 16.540192 -62.362091 0.000000 c
+-62.362091 -16.540192 -55.790543 -32.400955 -44.095749 -44.095749 c
+-32.400955 -55.790543 -16.540192 -62.362091 0.000000 -62.362091 c
+16.540192 -62.362091 32.400955 -55.790543 44.095749 -44.095749 c
+55.790543 -32.400955 62.362091 -16.540192 62.362091 0.000000 c
+h S
+0.500000 w
+63.779419 0.000000 m
+63.779419 16.916107 57.058517 33.137344 45.097931 45.097931 c
+33.137344 57.058517 16.916107 63.779419 0.000000 63.779419 c
+-16.916107 63.779419 -33.137344 57.058517 -45.097931 45.097931 c
+-57.058517 33.137344 -63.779419 16.916107 -63.779419 0.000000 c
+-63.779419 -16.916107 -57.058517 -33.137344 -45.097931 -45.097931 c
+-33.137344 -57.058517 -16.916107 -63.779419 0.000000 -63.779419 c
+16.916107 -63.779419 33.137344 -57.058517 45.097931 -45.097931 c
+57.058517 -33.137344 63.779419 -16.916107 63.779419 0.000000 c
+h S
+0.500000 w
+65.196732 0.000000 m
+65.196732 17.292023 58.326477 33.873734 46.100113 46.100113 c
+33.873734 58.326477 17.292023 65.196732 0.000000 65.196732 c
+-17.292023 65.196732 -33.873734 58.326477 -46.100113 46.100113 c
+-58.326477 33.873734 -65.196732 17.292023 -65.196732 0.000000 c
+-65.196732 -17.292023 -58.326477 -33.873734 -46.100113 -46.100113 c
+-33.873734 -58.326477 -17.292023 -65.196732 0.000000 -65.196732 c
+17.292023 -65.196732 33.873734 -58.326477 46.100113 -46.100113 c
+58.326477 -33.873734 65.196732 -17.292023 65.196732 0.000000 c
+h S
+0.500000 w
+66.614059 0.000000 m
+66.614059 17.667923 59.594452 34.610107 47.102280 47.102280 c
+34.610107 59.594452 17.667923 66.614059 0.000000 66.614059 c
+-17.667923 66.614059 -34.610107 59.594452 -47.102280 47.102280 c
+-59.594452 34.610107 -66.614059 17.667923 -66.614059 0.000000 c
+-66.614059 -17.667923 -59.594452 -34.610107 -47.102280 -47.102280 c
+-34.610107 -59.594452 -17.667923 -66.614059 0.000000 -66.614059 c
+17.667923 -66.614059 34.610107 -59.594452 47.102280 -47.102280 c
+59.594452 -34.610107 66.614059 -17.667923 66.614059 0.000000 c
+h S
+0.500000 w
+68.031372 0.000000 m
+68.031372 18.043839 60.862411 35.346497 48.104462 48.104462 c
+35.346497 60.862411 18.043839 68.031372 0.000000 68.031372 c
+-18.043839 68.031372 -35.346497 60.862411 -48.104462 48.104462 c
+-60.862411 35.346497 -68.031372 18.043839 -68.031372 0.000000 c
+-68.031372 -18.043839 -60.862411 -35.346497 -48.104462 -48.104462 c
+-35.346497 -60.862411 -18.043839 -68.031372 0.000000 -68.031372 c
+18.043839 -68.031372 35.346497 -60.862411 48.104462 -48.104462 c
+60.862411 -35.346497 68.031372 -18.043839 68.031372 0.000000 c
+h S
+0.500000 w
+69.448700 0.000000 m
+69.448700 18.419754 62.130386 36.082886 49.106628 49.106628 c
+36.082886 62.130386 18.419754 69.448700 0.000000 69.448700 c
+-18.419754 69.448700 -36.082886 62.130386 -49.106628 49.106628 c
+-62.130386 36.082886 -69.448700 18.419754 -69.448700 0.000000 c
+-69.448700 -18.419754 -62.130386 -36.082886 -49.106628 -49.106628 c
+-36.082886 -62.130386 -18.419754 -69.448700 0.000000 -69.448700 c
+18.419754 -69.448700 36.082886 -62.130386 49.106628 -49.106628 c
+62.130386 -36.082886 69.448700 -18.419754 69.448700 0.000000 c
+h S
+0.500000 w
+70.866013 0.000000 m
+70.866013 18.795670 63.398346 36.819275 50.108810 50.108810 c
+36.819275 63.398346 18.795670 70.866013 0.000000 70.866013 c
+-18.795670 70.866013 -36.819275 63.398346 -50.108810 50.108810 c
+-63.398346 36.819275 -70.866013 18.795670 -70.866013 0.000000 c
+-70.866013 -18.795670 -63.398346 -36.819275 -50.108810 -50.108810 c
+-36.819275 -63.398346 -18.795670 -70.866013 0.000000 -70.866013 c
+18.795670 -70.866013 36.819275 -63.398346 50.108810 -50.108810 c
+63.398346 -36.819275 70.866013 -18.795670 70.866013 0.000000 c
+h S
+0.500000 w
+72.283340 0.000000 m
+72.283340 19.171585 64.666321 37.555649 51.110992 51.110992 c
+37.555649 64.666321 19.171585 72.283340 0.000000 72.283340 c
+-19.171585 72.283340 -37.555649 64.666321 -51.110992 51.110992 c
+-64.666321 37.555649 -72.283340 19.171585 -72.283340 0.000000 c
+-72.283340 -19.171585 -64.666321 -37.555649 -51.110992 -51.110992 c
+-37.555649 -64.666321 -19.171585 -72.283340 0.000000 -72.283340 c
+19.171585 -72.283340 37.555649 -64.666321 51.110992 -51.110992 c
+64.666321 -37.555649 72.283340 -19.171585 72.283340 0.000000 c
+h S
+0.500000 w
+73.700653 0.000000 m
+73.700653 19.547501 65.934280 38.292038 52.113159 52.113159 c
+38.292038 65.934280 19.547501 73.700653 0.000000 73.700653 c
+-19.547501 73.700653 -38.292038 65.934280 -52.113159 52.113159 c
+-65.934280 38.292038 -73.700653 19.547501 -73.700653 0.000000 c
+-73.700653 -19.547501 -65.934280 -38.292038 -52.113159 -52.113159 c
+-38.292038 -65.934280 -19.547501 -73.700653 0.000000 -73.700653 c
+19.547501 -73.700653 38.292038 -65.934280 52.113159 -52.113159 c
+65.934280 -38.292038 73.700653 -19.547501 73.700653 0.000000 c
+h S
+0.500000 w
+75.117981 0.000000 m
+75.117981 19.923416 67.202255 39.028427 53.115341 53.115341 c
+39.028427 67.202255 19.923416 75.117981 0.000000 75.117981 c
+-19.923416 75.117981 -39.028427 67.202255 -53.115341 53.115341 c
+-67.202255 39.028427 -75.117981 19.923416 -75.117981 0.000000 c
+-75.117981 -19.923416 -67.202255 -39.028427 -53.115341 -53.115341 c
+-39.028427 -67.202255 -19.923416 -75.117981 0.000000 -75.117981 c
+19.923416 -75.117981 39.028427 -67.202255 53.115341 -53.115341 c
+67.202255 -39.028427 75.117981 -19.923416 75.117981 0.000000 c
+h S
+0.500000 w
+76.535294 0.000000 m
+76.535294 20.299316 68.470215 39.764816 54.117523 54.117523 c
+39.764816 68.470215 20.299316 76.535294 0.000000 76.535294 c
+-20.299316 76.535294 -39.764816 68.470215 -54.117523 54.117523 c
+-68.470215 39.764816 -76.535294 20.299316 -76.535294 0.000000 c
+-76.535294 -20.299316 -68.470215 -39.764816 -54.117523 -54.117523 c
+-39.764816 -68.470215 -20.299316 -76.535294 0.000000 -76.535294 c
+20.299316 -76.535294 39.764816 -68.470215 54.117523 -54.117523 c
+68.470215 -39.764816 76.535294 -20.299316 76.535294 0.000000 c
+h S
+0.500000 w
+77.952621 0.000000 m
+77.952621 20.675232 69.738190 40.501205 55.119690 55.119690 c
+40.501205 69.738190 20.675232 77.952621 0.000000 77.952621 c
+-20.675232 77.952621 -40.501205 69.738190 -55.119690 55.119690 c
+-69.738190 40.501205 -77.952621 20.675232 -77.952621 0.000000 c
+-77.952621 -20.675232 -69.738190 -40.501205 -55.119690 -55.119690 c
+-40.501205 -69.738190 -20.675232 -77.952621 0.000000 -77.952621 c
+20.675232 -77.952621 40.501205 -69.738190 55.119690 -55.119690 c
+69.738190 -40.501205 77.952621 -20.675232 77.952621 0.000000 c
+h S
+0.500000 w
+79.369934 0.000000 m
+79.369934 21.051147 71.006149 41.237579 56.121872 56.121872 c
+41.237579 71.006149 21.051147 79.369934 0.000000 79.369934 c
+-21.051147 79.369934 -41.237579 71.006149 -56.121872 56.121872 c
+-71.006149 41.237579 -79.369934 21.051147 -79.369934 0.000000 c
+-79.369934 -21.051147 -71.006149 -41.237579 -56.121872 -56.121872 c
+-41.237579 -71.006149 -21.051147 -79.369934 0.000000 -79.369934 c
+21.051147 -79.369934 41.237579 -71.006149 56.121872 -56.121872 c
+71.006149 -41.237579 79.369934 -21.051147 79.369934 0.000000 c
+h S
+0.500000 w
+80.787262 0.000000 m
+80.787262 21.427063 72.274124 41.973969 57.124039 57.124039 c
+41.973969 72.274124 21.427063 80.787262 0.000000 80.787262 c
+-21.427063 80.787262 -41.973969 72.274124 -57.124039 57.124039 c
+-72.274124 41.973969 -80.787262 21.427063 -80.787262 0.000000 c
+-80.787262 -21.427063 -72.274124 -41.973969 -57.124039 -57.124039 c
+-41.973969 -72.274124 -21.427063 -80.787262 0.000000 -80.787262 c
+21.427063 -80.787262 41.973969 -72.274124 57.124039 -57.124039 c
+72.274124 -41.973969 80.787262 -21.427063 80.787262 0.000000 c
+h S
+0.500000 w
+82.204575 0.000000 m
+82.204575 21.802979 73.542084 42.710358 58.126221 58.126221 c
+42.710358 73.542084 21.802979 82.204575 0.000000 82.204575 c
+-21.802979 82.204575 -42.710358 73.542084 -58.126221 58.126221 c
+-73.542084 42.710358 -82.204575 21.802979 -82.204575 0.000000 c
+-82.204575 -21.802979 -73.542084 -42.710358 -58.126221 -58.126221 c
+-42.710358 -73.542084 -21.802979 -82.204575 0.000000 -82.204575 c
+21.802979 -82.204575 42.710358 -73.542084 58.126221 -58.126221 c
+73.542084 -42.710358 82.204575 -21.802979 82.204575 0.000000 c
+h S
+0.500000 w
+83.621902 0.000000 m
+83.621902 22.178894 74.810059 43.446747 59.128403 59.128403 c
+43.446747 74.810059 22.178894 83.621902 0.000000 83.621902 c
+-22.178894 83.621902 -43.446747 74.810059 -59.128403 59.128403 c
+-74.810059 43.446747 -83.621902 22.178894 -83.621902 0.000000 c
+-83.621902 -22.178894 -74.810059 -43.446747 -59.128403 -59.128403 c
+-43.446747 -74.810059 -22.178894 -83.621902 0.000000 -83.621902 c
+22.178894 -83.621902 43.446747 -74.810059 59.128403 -59.128403 c
+74.810059 -43.446747 83.621902 -22.178894 83.621902 0.000000 c
+h S
+0.500000 w
+85.039215 0.000000 m
+85.039215 22.554810 76.078018 44.183121 60.130569 60.130569 c
+44.183121 76.078018 22.554810 85.039215 0.000000 85.039215 c
+-22.554810 85.039215 -44.183121 76.078018 -60.130569 60.130569 c
+-76.078018 44.183121 -85.039215 22.554810 -85.039215 0.000000 c
+-85.039215 -22.554810 -76.078018 -44.183121 -60.130569 -60.130569 c
+-44.183121 -76.078018 -22.554810 -85.039215 0.000000 -85.039215 c
+22.554810 -85.039215 44.183121 -76.078018 60.130569 -60.130569 c
+76.078018 -44.183121 85.039215 -22.554810 85.039215 0.000000 c
+h S
+0.500000 w
+86.456543 0.000000 m
+86.456543 22.930710 77.345993 44.919510 61.132751 61.132751 c
+44.919510 77.345993 22.930710 86.456543 0.000000 86.456543 c
+-22.930710 86.456543 -44.919510 77.345993 -61.132751 61.132751 c
+-77.345993 44.919510 -86.456543 22.930710 -86.456543 0.000000 c
+-86.456543 -22.930710 -77.345993 -44.919510 -61.132751 -61.132751 c
+-44.919510 -77.345993 -22.930710 -86.456543 0.000000 -86.456543 c
+22.930710 -86.456543 44.919510 -77.345993 61.132751 -61.132751 c
+77.345993 -44.919510 86.456543 -22.930710 86.456543 0.000000 c
+h S
+0.500000 w
+87.873856 0.000000 m
+87.873856 23.306625 78.613953 45.655899 62.134918 62.134918 c
+45.655899 78.613953 23.306625 87.873856 0.000000 87.873856 c
+-23.306625 87.873856 -45.655899 78.613953 -62.134918 62.134918 c
+-78.613953 45.655899 -87.873856 23.306625 -87.873856 0.000000 c
+-87.873856 -23.306625 -78.613953 -45.655899 -62.134918 -62.134918 c
+-45.655899 -78.613953 -23.306625 -87.873856 0.000000 -87.873856 c
+23.306625 -87.873856 45.655899 -78.613953 62.134918 -62.134918 c
+78.613953 -45.655899 87.873856 -23.306625 87.873856 0.000000 c
+h S
+0.500000 w
+89.291183 0.000000 m
+89.291183 23.682541 79.881927 46.392288 63.137100 63.137100 c
+46.392288 79.881927 23.682541 89.291183 0.000000 89.291183 c
+-23.682541 89.291183 -46.392288 79.881927 -63.137100 63.137100 c
+-79.881927 46.392288 -89.291183 23.682541 -89.291183 0.000000 c
+-89.291183 -23.682541 -79.881927 -46.392288 -63.137100 -63.137100 c
+-46.392288 -79.881927 -23.682541 -89.291183 0.000000 -89.291183 c
+23.682541 -89.291183 46.392288 -79.881927 63.137100 -63.137100 c
+79.881927 -46.392288 89.291183 -23.682541 89.291183 0.000000 c
+h S
+0.500000 w
+90.708496 0.000000 m
+90.708496 24.058456 81.149887 47.128662 64.139282 64.139282 c
+47.128662 81.149887 24.058456 90.708496 0.000000 90.708496 c
+-24.058456 90.708496 -47.128662 81.149887 -64.139282 64.139282 c
+-81.149887 47.128662 -90.708496 24.058456 -90.708496 0.000000 c
+-90.708496 -24.058456 -81.149887 -47.128662 -64.139282 -64.139282 c
+-47.128662 -81.149887 -24.058456 -90.708496 0.000000 -90.708496 c
+24.058456 -90.708496 47.128662 -81.149887 64.139282 -64.139282 c
+81.149887 -47.128662 90.708496 -24.058456 90.708496 0.000000 c
+h S
+0.500000 w
+92.125824 0.000000 m
+92.125824 24.434372 82.417862 47.865051 65.141449 65.141449 c
+47.865051 82.417862 24.434372 92.125824 0.000000 92.125824 c
+-24.434372 92.125824 -47.865051 82.417862 -65.141449 65.141449 c
+-82.417862 47.865051 -92.125824 24.434372 -92.125824 0.000000 c
+-92.125824 -24.434372 -82.417862 -47.865051 -65.141449 -65.141449 c
+-47.865051 -82.417862 -24.434372 -92.125824 0.000000 -92.125824 c
+24.434372 -92.125824 47.865051 -82.417862 65.141449 -65.141449 c
+82.417862 -47.865051 92.125824 -24.434372 92.125824 0.000000 c
+h S
+0.500000 w
+93.543137 0.000000 m
+93.543137 24.810287 83.685822 48.601440 66.143631 66.143631 c
+48.601440 83.685822 24.810287 93.543137 0.000000 93.543137 c
+-24.810287 93.543137 -48.601440 83.685822 -66.143631 66.143631 c
+-83.685822 48.601440 -93.543137 24.810287 -93.543137 0.000000 c
+-93.543137 -24.810287 -83.685822 -48.601440 -66.143631 -66.143631 c
+-48.601440 -83.685822 -24.810287 -93.543137 0.000000 -93.543137 c
+24.810287 -93.543137 48.601440 -83.685822 66.143631 -66.143631 c
+83.685822 -48.601440 93.543137 -24.810287 93.543137 0.000000 c
+h S
+0.500000 w
+94.960464 0.000000 m
+94.960464 25.186203 84.953796 49.337830 67.145813 67.145813 c
+49.337830 84.953796 25.186203 94.960464 0.000000 94.960464 c
+-25.186203 94.960464 -49.337830 84.953796 -67.145813 67.145813 c
+-84.953796 49.337830 -94.960464 25.186203 -94.960464 0.000000 c
+-94.960464 -25.186203 -84.953796 -49.337830 -67.145813 -67.145813 c
+-49.337830 -84.953796 -25.186203 -94.960464 0.000000 -94.960464 c
+25.186203 -94.960464 49.337830 -84.953796 67.145813 -67.145813 c
+84.953796 -49.337830 94.960464 -25.186203 94.960464 0.000000 c
+h S
+0.500000 w
+96.377777 0.000000 m
+96.377777 25.562119 86.221756 50.074203 68.147980 68.147980 c
+50.074203 86.221756 25.562119 96.377777 0.000000 96.377777 c
+-25.562119 96.377777 -50.074203 86.221756 -68.147980 68.147980 c
+-86.221756 50.074203 -96.377777 25.562119 -96.377777 0.000000 c
+-96.377777 -25.562119 -86.221756 -50.074203 -68.147980 -68.147980 c
+-50.074203 -86.221756 -25.562119 -96.377777 0.000000 -96.377777 c
+25.562119 -96.377777 50.074203 -86.221756 68.147980 -68.147980 c
+86.221756 -50.074203 96.377777 -25.562119 96.377777 0.000000 c
+h S
+0.500000 w
+97.795105 0.000000 m
+97.795105 25.938019 87.489731 50.810593 69.150162 69.150162 c
+50.810593 87.489731 25.938019 97.795105 0.000000 97.795105 c
+-25.938019 97.795105 -50.810593 87.489731 -69.150162 69.150162 c
+-87.489731 50.810593 -97.795105 25.938019 -97.795105 0.000000 c
+-97.795105 -25.938019 -87.489731 -50.810593 -69.150162 -69.150162 c
+-50.810593 -87.489731 -25.938019 -97.795105 0.000000 -97.795105 c
+25.938019 -97.795105 50.810593 -87.489731 69.150162 -69.150162 c
+87.489731 -50.810593 97.795105 -25.938019 97.795105 0.000000 c
+h S
+0.500000 w
+99.212418 0.000000 m
+99.212418 26.313934 88.757690 51.546982 70.152328 70.152328 c
+51.546982 88.757690 26.313934 99.212418 0.000000 99.212418 c
+-26.313934 99.212418 -51.546982 88.757690 -70.152328 70.152328 c
+-88.757690 51.546982 -99.212418 26.313934 -99.212418 0.000000 c
+-99.212418 -26.313934 -88.757690 -51.546982 -70.152328 -70.152328 c
+-51.546982 -88.757690 -26.313934 -99.212418 0.000000 -99.212418 c
+26.313934 -99.212418 51.546982 -88.757690 70.152328 -70.152328 c
+88.757690 -51.546982 99.212418 -26.313934 99.212418 0.000000 c
+h S
+0.500000 w
+100.629745 0.000000 m
+100.629745 26.689850 90.025665 52.283371 71.154510 71.154510 c
+52.283371 90.025665 26.689850 100.629745 0.000000 100.629745 c
+-26.689850 100.629745 -52.283371 90.025665 -71.154510 71.154510 c
+-90.025665 52.283371 -100.629745 26.689850 -100.629745 0.000000 c
+-100.629745 -26.689850 -90.025665 -52.283371 -71.154510 -71.154510 c
+-52.283371 -90.025665 -26.689850 -100.629745 0.000000 -100.629745 c
+26.689850 -100.629745 52.283371 -90.025665 71.154510 -71.154510 c
+90.025665 -52.283371 100.629745 -26.689850 100.629745 0.000000 c
+h S
+0.500000 w
+102.047058 0.000000 m
+102.047058 27.065765 91.293625 53.019745 72.156693 72.156693 c
+53.019745 91.293625 27.065765 102.047058 0.000000 102.047058 c
+-27.065765 102.047058 -53.019745 91.293625 -72.156693 72.156693 c
+-91.293625 53.019745 -102.047058 27.065765 -102.047058 0.000000 c
+-102.047058 -27.065765 -91.293625 -53.019745 -72.156693 -72.156693 c
+-53.019745 -91.293625 -27.065765 -102.047058 0.000000 -102.047058 c
+27.065765 -102.047058 53.019745 -91.293625 72.156693 -72.156693 c
+91.293625 -53.019745 102.047058 -27.065765 102.047058 0.000000 c
+h S
+0.500000 w
+103.464386 0.000000 m
+103.464386 27.441681 92.561600 53.756134 73.158859 73.158859 c
+53.756134 92.561600 27.441681 103.464386 0.000000 103.464386 c
+-27.441681 103.464386 -53.756134 92.561600 -73.158859 73.158859 c
+-92.561600 53.756134 -103.464386 27.441681 -103.464386 0.000000 c
+-103.464386 -27.441681 -92.561600 -53.756134 -73.158859 -73.158859 c
+-53.756134 -92.561600 -27.441681 -103.464386 0.000000 -103.464386 c
+27.441681 -103.464386 53.756134 -92.561600 73.158859 -73.158859 c
+92.561600 -53.756134 103.464386 -27.441681 103.464386 0.000000 c
+h S
+0.500000 w
+104.881699 0.000000 m
+104.881699 27.817596 93.829559 54.492523 74.161041 74.161041 c
+54.492523 93.829559 27.817596 104.881699 0.000000 104.881699 c
+-27.817596 104.881699 -54.492523 93.829559 -74.161041 74.161041 c
+-93.829559 54.492523 -104.881699 27.817596 -104.881699 0.000000 c
+-104.881699 -27.817596 -93.829559 -54.492523 -74.161041 -74.161041 c
+-54.492523 -93.829559 -27.817596 -104.881699 0.000000 -104.881699 c
+27.817596 -104.881699 54.492523 -93.829559 74.161041 -74.161041 c
+93.829559 -54.492523 104.881699 -27.817596 104.881699 0.000000 c
+h S
+0.500000 w
+106.299026 0.000000 m
+106.299026 28.193512 95.097519 55.228912 75.163223 75.163223 c
+55.228912 95.097519 28.193512 106.299026 0.000000 106.299026 c
+-28.193512 106.299026 -55.228912 95.097519 -75.163223 75.163223 c
+-95.097519 55.228912 -106.299026 28.193512 -106.299026 0.000000 c
+-106.299026 -28.193512 -95.097519 -55.228912 -75.163223 -75.163223 c
+-55.228912 -95.097519 -28.193512 -106.299026 0.000000 -106.299026 c
+28.193512 -106.299026 55.228912 -95.097519 75.163223 -75.163223 c
+95.097519 -55.228912 106.299026 -28.193512 106.299026 0.000000 c
+h S
+0.500000 w
+107.716339 0.000000 m
+107.716339 28.569412 96.365494 55.965286 76.165390 76.165390 c
+55.965286 96.365494 28.569412 107.716339 0.000000 107.716339 c
+-28.569412 107.716339 -55.965286 96.365494 -76.165390 76.165390 c
+-96.365494 55.965286 -107.716339 28.569412 -107.716339 0.000000 c
+-107.716339 -28.569412 -96.365494 -55.965286 -76.165390 -76.165390 c
+-55.965286 -96.365494 -28.569412 -107.716339 0.000000 -107.716339 c
+28.569412 -107.716339 55.965286 -96.365494 76.165390 -76.165390 c
+96.365494 -55.965286 107.716339 -28.569412 107.716339 0.000000 c
+h S
+0.500000 w
+109.133667 0.000000 m
+109.133667 28.945328 97.633453 56.701675 77.167572 77.167572 c
+56.701675 97.633453 28.945328 109.133667 0.000000 109.133667 c
+-28.945328 109.133667 -56.701675 97.633453 -77.167572 77.167572 c
+-97.633453 56.701675 -109.133667 28.945328 -109.133667 0.000000 c
+-109.133667 -28.945328 -97.633453 -56.701675 -77.167572 -77.167572 c
+-56.701675 -97.633453 -28.945328 -109.133667 0.000000 -109.133667 c
+28.945328 -109.133667 56.701675 -97.633453 77.167572 -77.167572 c
+97.633453 -56.701675 109.133667 -28.945328 109.133667 0.000000 c
+h S
+0.500000 w
+110.550980 0.000000 m
+110.550980 29.321243 98.901428 57.438065 78.169739 78.169739 c
+57.438065 98.901428 29.321243 110.550980 0.000000 110.550980 c
+-29.321243 110.550980 -57.438065 98.901428 -78.169739 78.169739 c
+-98.901428 57.438065 -110.550980 29.321243 -110.550980 0.000000 c
+-110.550980 -29.321243 -98.901428 -57.438065 -78.169739 -78.169739 c
+-57.438065 -98.901428 -29.321243 -110.550980 0.000000 -110.550980 c
+29.321243 -110.550980 57.438065 -98.901428 78.169739 -78.169739 c
+98.901428 -57.438065 110.550980 -29.321243 110.550980 0.000000 c
+h S
+0.500000 w
+111.968307 0.000000 m
+111.968307 29.697159 100.169388 58.174454 79.171921 79.171921 c
+58.174454 100.169388 29.697159 111.968307 0.000000 111.968307 c
+-29.697159 111.968307 -58.174454 100.169388 -79.171921 79.171921 c
+-100.169388 58.174454 -111.968307 29.697159 -111.968307 0.000000 c
+-111.968307 -29.697159 -100.169388 -58.174454 -79.171921 -79.171921 c
+-58.174454 -100.169388 -29.697159 -111.968307 0.000000 -111.968307 c
+29.697159 -111.968307 58.174454 -100.169388 79.171921 -79.171921 c
+100.169388 -58.174454 111.968307 -29.697159 111.968307 0.000000 c
+h S
+0.500000 w
+113.385620 0.000000 m
+113.385620 30.073074 101.437363 58.910828 80.174103 80.174103 c
+58.910828 101.437363 30.073074 113.385620 0.000000 113.385620 c
+-30.073074 113.385620 -58.910828 101.437363 -80.174103 80.174103 c
+-101.437363 58.910828 -113.385620 30.073074 -113.385620 0.000000 c
+-113.385620 -30.073074 -101.437363 -58.910828 -80.174103 -80.174103 c
+-58.910828 -101.437363 -30.073074 -113.385620 0.000000 -113.385620 c
+30.073074 -113.385620 58.910828 -101.437363 80.174103 -80.174103 c
+101.437363 -58.910828 113.385620 -30.073074 113.385620 0.000000 c
+h S
+0.500000 w
+114.802948 0.000000 m
+114.802948 30.448990 102.705322 59.647217 81.176270 81.176270 c
+59.647217 102.705322 30.448990 114.802948 0.000000 114.802948 c
+-30.448990 114.802948 -59.647217 102.705322 -81.176270 81.176270 c
+-102.705322 59.647217 -114.802948 30.448990 -114.802948 0.000000 c
+-114.802948 -30.448990 -102.705322 -59.647217 -81.176270 -81.176270 c
+-59.647217 -102.705322 -30.448990 -114.802948 0.000000 -114.802948 c
+30.448990 -114.802948 59.647217 -102.705322 81.176270 -81.176270 c
+102.705322 -59.647217 114.802948 -30.448990 114.802948 0.000000 c
+h S
+0.500000 w
+116.220261 0.000000 m
+116.220261 30.824905 103.973297 60.383606 82.178452 82.178452 c
+60.383606 103.973297 30.824905 116.220261 0.000000 116.220261 c
+-30.824905 116.220261 -60.383606 103.973297 -82.178452 82.178452 c
+-103.973297 60.383606 -116.220261 30.824905 -116.220261 0.000000 c
+-116.220261 -30.824905 -103.973297 -60.383606 -82.178452 -82.178452 c
+-60.383606 -103.973297 -30.824905 -116.220261 0.000000 -116.220261 c
+30.824905 -116.220261 60.383606 -103.973297 82.178452 -82.178452 c
+103.973297 -60.383606 116.220261 -30.824905 116.220261 0.000000 c
+h S
+0.500000 w
+117.637589 0.000000 m
+117.637589 31.200806 105.241257 61.119995 83.180618 83.180618 c
+61.119995 105.241257 31.200806 117.637589 0.000000 117.637589 c
+-31.200806 117.637589 -61.119995 105.241257 -83.180618 83.180618 c
+-105.241257 61.119995 -117.637589 31.200806 -117.637589 0.000000 c
+-117.637589 -31.200806 -105.241257 -61.119995 -83.180618 -83.180618 c
+-61.119995 -105.241257 -31.200806 -117.637589 0.000000 -117.637589 c
+31.200806 -117.637589 61.119995 -105.241257 83.180618 -83.180618 c
+105.241257 -61.119995 117.637589 -31.200806 117.637589 0.000000 c
+h S
+0.500000 w
+119.054901 0.000000 m
+119.054901 31.576721 106.509232 61.856369 84.182800 84.182800 c
+61.856369 106.509232 31.576721 119.054901 0.000000 119.054901 c
+-31.576721 119.054901 -61.856369 106.509232 -84.182800 84.182800 c
+-106.509232 61.856369 -119.054901 31.576721 -119.054901 0.000000 c
+-119.054901 -31.576721 -106.509232 -61.856369 -84.182800 -84.182800 c
+-61.856369 -106.509232 -31.576721 -119.054901 0.000000 -119.054901 c
+31.576721 -119.054901 61.856369 -106.509232 84.182800 -84.182800 c
+106.509232 -61.856369 119.054901 -31.576721 119.054901 0.000000 c
+h S
+0.500000 w
+120.472229 0.000000 m
+120.472229 31.952637 107.777191 62.592758 85.184982 85.184982 c
+62.592758 107.777191 31.952637 120.472229 0.000000 120.472229 c
+-31.952637 120.472229 -62.592758 107.777191 -85.184982 85.184982 c
+-107.777191 62.592758 -120.472229 31.952637 -120.472229 0.000000 c
+-120.472229 -31.952637 -107.777191 -62.592758 -85.184982 -85.184982 c
+-62.592758 -107.777191 -31.952637 -120.472229 0.000000 -120.472229 c
+31.952637 -120.472229 62.592758 -107.777191 85.184982 -85.184982 c
+107.777191 -62.592758 120.472229 -31.952637 120.472229 0.000000 c
+h S
+0.500000 w
+121.889542 0.000000 m
+121.889542 32.328552 109.045166 63.329147 86.187149 86.187149 c
+63.329147 109.045166 32.328552 121.889542 0.000000 121.889542 c
+-32.328552 121.889542 -63.329147 109.045166 -86.187149 86.187149 c
+-109.045166 63.329147 -121.889542 32.328552 -121.889542 0.000000 c
+-121.889542 -32.328552 -109.045166 -63.329147 -86.187149 -86.187149 c
+-63.329147 -109.045166 -32.328552 -121.889542 0.000000 -121.889542 c
+32.328552 -121.889542 63.329147 -109.045166 86.187149 -86.187149 c
+109.045166 -63.329147 121.889542 -32.328552 121.889542 0.000000 c
+h S
+0.500000 w
+123.306870 0.000000 m
+123.306870 32.704468 110.313126 64.065536 87.189331 87.189331 c
+64.065536 110.313126 32.704468 123.306870 0.000000 123.306870 c
+-32.704468 123.306870 -64.065536 110.313126 -87.189331 87.189331 c
+-110.313126 64.065536 -123.306870 32.704468 -123.306870 0.000000 c
+-123.306870 -32.704468 -110.313126 -64.065536 -87.189331 -87.189331 c
+-64.065536 -110.313126 -32.704468 -123.306870 0.000000 -123.306870 c
+32.704468 -123.306870 64.065536 -110.313126 87.189331 -87.189331 c
+110.313126 -64.065536 123.306870 -32.704468 123.306870 0.000000 c
+h S
+0.500000 w
+124.724182 0.000000 m
+124.724182 33.080383 111.581100 64.801910 88.191513 88.191513 c
+64.801910 111.581100 33.080383 124.724182 0.000000 124.724182 c
+-33.080383 124.724182 -64.801910 111.581100 -88.191513 88.191513 c
+-111.581100 64.801910 -124.724182 33.080383 -124.724182 0.000000 c
+-124.724182 -33.080383 -111.581100 -64.801910 -88.191513 -88.191513 c
+-64.801910 -111.581100 -33.080383 -124.724182 0.000000 -124.724182 c
+33.080383 -124.724182 64.801910 -111.581100 88.191513 -88.191513 c
+111.581100 -64.801910 124.724182 -33.080383 124.724182 0.000000 c
+h S
+0.500000 w
+126.141510 0.000000 m
+126.141510 33.456299 112.849060 65.538300 89.193680 89.193680 c
+65.538300 112.849060 33.456299 126.141510 0.000000 126.141510 c
+-33.456299 126.141510 -65.538300 112.849060 -89.193680 89.193680 c
+-112.849060 65.538300 -126.141510 33.456299 -126.141510 0.000000 c
+-126.141510 -33.456299 -112.849060 -65.538300 -89.193680 -89.193680 c
+-65.538300 -112.849060 -33.456299 -126.141510 0.000000 -126.141510 c
+33.456299 -126.141510 65.538300 -112.849060 89.193680 -89.193680 c
+112.849060 -65.538300 126.141510 -33.456299 126.141510 0.000000 c
+h S
+0.500000 w
+127.558823 0.000000 m
+127.558823 33.832199 114.117035 66.274689 90.195862 90.195862 c
+66.274689 114.117035 33.832199 127.558823 0.000000 127.558823 c
+-33.832199 127.558823 -66.274689 114.117035 -90.195862 90.195862 c
+-114.117035 66.274689 -127.558823 33.832199 -127.558823 0.000000 c
+-127.558823 -33.832199 -114.117035 -66.274689 -90.195862 -90.195862 c
+-66.274689 -114.117035 -33.832199 -127.558823 0.000000 -127.558823 c
+33.832199 -127.558823 66.274689 -114.117035 90.195862 -90.195862 c
+114.117035 -66.274689 127.558823 -33.832199 127.558823 0.000000 c
+h S
+0.500000 w
+128.976151 0.000000 m
+128.976151 34.208115 115.384995 67.011078 91.198029 91.198029 c
+67.011078 115.384995 34.208115 128.976151 0.000000 128.976151 c
+-34.208115 128.976151 -67.011078 115.384995 -91.198029 91.198029 c
+-115.384995 67.011078 -128.976151 34.208115 -128.976151 0.000000 c
+-128.976151 -34.208115 -115.384995 -67.011078 -91.198029 -91.198029 c
+-67.011078 -115.384995 -34.208115 -128.976151 0.000000 -128.976151 c
+34.208115 -128.976151 67.011078 -115.384995 91.198029 -91.198029 c
+115.384995 -67.011078 128.976151 -34.208115 128.976151 0.000000 c
+h S
+0.500000 w
+130.393463 0.000000 m
+130.393463 34.584030 116.652969 67.747452 92.200211 92.200211 c
+67.747452 116.652969 34.584030 130.393463 0.000000 130.393463 c
+-34.584030 130.393463 -67.747452 116.652969 -92.200211 92.200211 c
+-116.652969 67.747452 -130.393463 34.584030 -130.393463 0.000000 c
+-130.393463 -34.584030 -116.652969 -67.747452 -92.200211 -92.200211 c
+-67.747452 -116.652969 -34.584030 -130.393463 0.000000 -130.393463 c
+34.584030 -130.393463 67.747452 -116.652969 92.200211 -92.200211 c
+116.652969 -67.747452 130.393463 -34.584030 130.393463 0.000000 c
+h S
+0.500000 w
+131.810791 0.000000 m
+131.810791 34.959946 117.920929 68.483841 93.202393 93.202393 c
+68.483841 117.920929 34.959946 131.810791 0.000000 131.810791 c
+-34.959946 131.810791 -68.483841 117.920929 -93.202393 93.202393 c
+-117.920929 68.483841 -131.810791 34.959946 -131.810791 0.000000 c
+-131.810791 -34.959946 -117.920929 -68.483841 -93.202393 -93.202393 c
+-68.483841 -117.920929 -34.959946 -131.810791 0.000000 -131.810791 c
+34.959946 -131.810791 68.483841 -117.920929 93.202393 -93.202393 c
+117.920929 -68.483841 131.810791 -34.959946 131.810791 0.000000 c
+h S
+0.500000 w
+133.228104 0.000000 m
+133.228104 35.335861 119.188904 69.220230 94.204559 94.204559 c
+69.220230 119.188904 35.335861 133.228104 0.000000 133.228104 c
+-35.335861 133.228104 -69.220230 119.188904 -94.204559 94.204559 c
+-119.188904 69.220230 -133.228104 35.335861 -133.228104 0.000000 c
+-133.228104 -35.335861 -119.188904 -69.220230 -94.204559 -94.204559 c
+-69.220230 -119.188904 -35.335861 -133.228104 0.000000 -133.228104 c
+35.335861 -133.228104 69.220230 -119.188904 94.204559 -94.204559 c
+119.188904 -69.220230 133.228104 -35.335861 133.228104 0.000000 c
+h S
+0.500000 w
+134.645432 0.000000 m
+134.645432 35.711777 120.456863 69.956619 95.206741 95.206741 c
+69.956619 120.456863 35.711777 134.645432 0.000000 134.645432 c
+-35.711777 134.645432 -69.956619 120.456863 -95.206741 95.206741 c
+-120.456863 69.956619 -134.645432 35.711777 -134.645432 0.000000 c
+-134.645432 -35.711777 -120.456863 -69.956619 -95.206741 -95.206741 c
+-69.956619 -120.456863 -35.711777 -134.645432 0.000000 -134.645432 c
+35.711777 -134.645432 69.956619 -120.456863 95.206741 -95.206741 c
+120.456863 -69.956619 134.645432 -35.711777 134.645432 0.000000 c
+h S
+0.500000 w
+136.062744 0.000000 m
+136.062744 36.087692 121.724838 70.692993 96.208923 96.208923 c
+70.692993 121.724838 36.087692 136.062744 0.000000 136.062744 c
+-36.087692 136.062744 -70.692993 121.724838 -96.208923 96.208923 c
+-121.724838 70.692993 -136.062744 36.087692 -136.062744 0.000000 c
+-136.062744 -36.087692 -121.724838 -70.692993 -96.208923 -96.208923 c
+-70.692993 -121.724838 -36.087692 -136.062744 0.000000 -136.062744 c
+36.087692 -136.062744 70.692993 -121.724838 96.208923 -96.208923 c
+121.724838 -70.692993 136.062744 -36.087692 136.062744 0.000000 c
+h S
+0.500000 w
+137.480072 0.000000 m
+137.480072 36.463593 122.992798 71.429382 97.211090 97.211090 c
+71.429382 122.992798 36.463593 137.480072 0.000000 137.480072 c
+-36.463593 137.480072 -71.429382 122.992798 -97.211090 97.211090 c
+-122.992798 71.429382 -137.480072 36.463593 -137.480072 0.000000 c
+-137.480072 -36.463593 -122.992798 -71.429382 -97.211090 -97.211090 c
+-71.429382 -122.992798 -36.463593 -137.480072 0.000000 -137.480072 c
+36.463593 -137.480072 71.429382 -122.992798 97.211090 -97.211090 c
+122.992798 -71.429382 137.480072 -36.463593 137.480072 0.000000 c
+h S
+0.500000 w
+138.897385 0.000000 m
+138.897385 36.839508 124.260773 72.165771 98.213272 98.213272 c
+72.165771 124.260773 36.839508 138.897385 0.000000 138.897385 c
+-36.839508 138.897385 -72.165771 124.260773 -98.213272 98.213272 c
+-124.260773 72.165771 -138.897385 36.839508 -138.897385 0.000000 c
+-138.897385 -36.839508 -124.260773 -72.165771 -98.213272 -98.213272 c
+-72.165771 -124.260773 -36.839508 -138.897385 0.000000 -138.897385 c
+36.839508 -138.897385 72.165771 -124.260773 98.213272 -98.213272 c
+124.260773 -72.165771 138.897385 -36.839508 138.897385 0.000000 c
+h S
+0.500000 w
+140.314713 0.000000 m
+140.314713 37.215424 125.528732 72.902161 99.215439 99.215439 c
+72.902161 125.528732 37.215424 140.314713 0.000000 140.314713 c
+-37.215424 140.314713 -72.902161 125.528732 -99.215439 99.215439 c
+-125.528732 72.902161 -140.314713 37.215424 -140.314713 0.000000 c
+-140.314713 -37.215424 -125.528732 -72.902161 -99.215439 -99.215439 c
+-72.902161 -125.528732 -37.215424 -140.314713 0.000000 -140.314713 c
+37.215424 -140.314713 72.902161 -125.528732 99.215439 -99.215439 c
+125.528732 -72.902161 140.314713 -37.215424 140.314713 0.000000 c
+h S
+0.500000 w
+141.732025 0.000000 m
+141.732025 37.591339 126.796707 73.638535 100.217621 100.217621 c
+73.638535 126.796707 37.591339 141.732025 0.000000 141.732025 c
+-37.591339 141.732025 -73.638535 126.796707 -100.217621 100.217621 c
+-126.796707 73.638535 -141.732025 37.591339 -141.732025 0.000000 c
+-141.732025 -37.591339 -126.796707 -73.638535 -100.217621 -100.217621 c
+-73.638535 -126.796707 -37.591339 -141.732025 0.000000 -141.732025 c
+37.591339 -141.732025 73.638535 -126.796707 100.217621 -100.217621 c
+126.796707 -73.638535 141.732025 -37.591339 141.732025 0.000000 c
+h S
+Q
+% mps graphic 1: end
+1 0 0 1 -212.8474 -389.4945 cm
+BT
+/F1 11.955168 Tf 1 0 0 1 70.867 213.216 Tm [<00620051004B0032>-326<0069003200740069>]TJ
+ET
+endstream
+endobj
+16 0 obj
+<</Type/Page/Contents 17 0 R/Resources 15 0 R/MediaBox[0 0 595.2756 841.8898]/TrimBox [ 0.0000 0.0000 595.2756 841.8898 ] /CropBox [ 0.0000 0.0000 595.2756 841.8898 ]/Parent 19 0 R>>
+endobj
+15 0 obj
+<</Font<</F1 18 0 R>>/ProcSet[/PDF/Text]>>
+endobj
+20 0 obj
+<</Type /Metadata /Subtype /XML
+/Length 2310 >>
+stream
+<?xpacket begin="" id="aofvpmjxvtewsnhacjdezlda"?>
+
+<x:xmpmeta xmlns:x="adobe:ns:meta/">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <dc:format>application/pdf</dc:format>
+ <dc:creator>
+ <rdf:Seq>
+ <rdf:li/>
+ </rdf:Seq>
+ </dc:creator>
+ <dc:description/>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang="x-default">scite-context-visual</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+ <rdf:Description rdf:about="" xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">
+ <pdfx:ConTeXt.Jobname>scite-context-visual</pdfx:ConTeXt.Jobname>
+ <pdfx:ConTeXt.Time>2011.11.09 18:39</pdfx:ConTeXt.Time>
+ <pdfx:ConTeXt.Url>www.pragma-ade.com</pdfx:ConTeXt.Url>
+ <pdfx:ConTeXt.Version>2011.11.08 19:35</pdfx:ConTeXt.Version>
+ <pdfx:ID>scite-context-visual.2011-11-09T18:39:10+01:00</pdfx:ID>
+ <pdfx:PTEX.Fullbanner>This is LuaTeX, Version beta-0.71.0-2011062811 (rev 4315) (TeX Live 2011) kpathsea version 6.0.1</pdfx:PTEX.Fullbanner>
+ </rdf:Description>
+ <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">
+ <xmp:CreateDate>2011-11-09T18:39:10+01:00</xmp:CreateDate>
+ <xmp:CreatorTool>ConTeXt - 2011.11.08 19:35</xmp:CreatorTool>
+ <xmp:ModifyDate>2011-11-09T18:39:10+01:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2011-11-09T18:39:10+01:00</xmp:MetadataDate>
+ </rdf:Description>
+ <rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
+ <pdf:Keywords/>
+ <pdf:Producer>LuaTeX-0.71.0</pdf:Producer>
+ <pdf:Trapped>False</pdf:Trapped>
+ </rdf:Description>
+ <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">
+ <xmpMM:DocumentID>uuid:024960bd-4882-a9a1-9b6f-2a8fa9bd7367</xmpMM:DocumentID>
+ <xmpMM:InstanceID>uuid:5a250e9b-49b9-bcd7-8517-4d4de03fba07</xmpMM:InstanceID>
+ </rdf:Description>
+ </rdf:RDF>
+</x:xmpmeta>
+
+<?xpacket end="w"?>
+endstream
+endobj
+21 0 obj
+[28[490]35[544]43[435]47[544]50[435]53[272]55[299]63[544]66[272]68[299]70[517]72[272]75[816]77[544]81[490 490]84[544]88[272]96[381 544 386]104[707 381]109[544]114[707]116[517]118[517]]
+endobj
+22 0 obj
+<</Length 15 >>
+stream
+
+endstream
+endobj
+23 0 obj
+<</Subtype/CIDFontType0C/Length 3824 >>
+stream
+
+.
+ 8 ~vwbסnuSRs}eC_h^_9LUJn}g|e1c]?7>@<r͸\gř7)Bj`Zb>(/i׋Lhl-T\rainϓZfe?HasglwclYUhz~bFTd^* DuUmUN:,:ഽ|dfbszE: .#) (wi׋ʋ~GnϓZqv`N'))׷Fy}uhsbnYq
+?hMq\[o]xef^npƵȪyd]Lfwo.l3wpsYf$ng3ln심닉(V/l-3\Lnё_j^JnKBrd? G4>lnwt|b0Ltrnwtrmxγnʇګp`6n/xnϓZ^Jn‹ҋwJB1ؓ{pn(v1K}Ltpf^dX^86`^~jN[I_:2%[_cdy}tUS@VD8^MZQӊy^yciv2yjgpImB.lxullk gIThho€w|uo`r[3I[uyy\ˋ
+ ~
+endstream
+endobj
+24 0 obj
+<</Type/FontDescriptor/FontName/EIELYR+LMRoman12-Regular/Flags 4/FontBBox[-422 -280 1394 1127]/Ascent 1127/CapHeight 683/Descent -280/ItalicAngle 0/StemV 91/XHeight 431/FontFile3 23 0 R/CIDSet 22 0 R>>
+endobj
+25 0 obj
+<</Length 1057 >>
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-EIELYR-LMRoman12-Regular-0)
+%%Title: (TeX-EIELYR-LMRoman12-Regular-0 TeX EIELYR-LMRoman12-Regular 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (EIELYR-LMRoman12-Regular)
+/Supplement 0
+>> def
+/CMapName /TeX-Identity-EIELYR-LMRoman12-Regular def
+/CMapType 2 def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+0 beginbfrange
+endbfrange
+27 beginbfchar
+<001C> <0061>
+<0023> <0062>
+<002B> <0063>
+<002F> <0064>
+<0032> <0065>
+<0035> <0021>
+<0037> <0066>
+<003F> <0068>
+<0042> <0069>
+<0044> <006A>
+<0046> <006B>
+<0048> <006C>
+<004B> <006D>
+<004D> <006E>
+<0051> <006F>
+<0052> <0031>
+<0054> <0070>
+<0058> <002E>
+<0060> <0072>
+<0061> <0053>
+<0062> <0073>
+<0068> <0054>
+<0069> <0074>
+<006D> <0075>
+<0072> <0077>
+<0074> <0078>
+<0076> <0079>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+endstream
+endobj
+18 0 obj
+<</Type/Font/Subtype/Type0/Encoding/Identity-H/BaseFont/EIELYR+LMRoman12-Regular/DescendantFonts[26 0 R]/ToUnicode 25 0 R>>
+endobj
+26 0 obj
+<</Type/Font/Subtype/CIDFontType0/BaseFont/EIELYR+LMRoman12-Regular/FontDescriptor 24 0 R/W 21 0 R/CIDSystemInfo<</Registry (Adobe)/Ordering (Identity)/Supplement 0>>>>
+endobj
+19 0 obj
+<</Type/Pages/Count 1/Kids[16 0 R]>>
+endobj
+27 0 obj
+<<>>
+endobj
+28 0 obj
+<</Type/Catalog/Pages 19 0 R/Names 27 0 R /Version /1.6 /PageLabels << /Nums [ 0 << /S /D >> ] >> /PageMode /UseNone /Metadata 20 0 R>>
+endobj
+29 0 obj
+<<
+/ConTeXt.Url (www.pragma-ade.com) /ConTeXt.Version (2011.11.08 19:35) /ConTeXt.Jobname (scite-context-visual) /CreationDate (D:20111109183910+01'00') /Trapped /False /Title <feff00730063006900740065002d0063006f006e0074006500780074002d00760069007300750061006c> /ConTeXt.Time (2011.11.09 18:39) /ID (scite-context-visual.2011-11-09T18:39:10+01:00) /Producer (LuaTeX-0.71.0) /ModDate (D:20111109183910+01'00') /Creator <feff0043006f006e00540065005800740020002d00200032003000310031002e00310031002e00300038002000310039003a00330035>
+/PTEX.Fullbanner (This is LuaTeX, Version beta-0.71.0-2011062811 (rev 4315) (TeX Live 2011) kpathsea version 6.0.1)>>
+endobj
+xref
+0 30
+0000000001 65535 f
+0000000002 00000 f
+0000000003 00000 f
+0000000004 00000 f
+0000000005 00000 f
+0000000006 00000 f
+0000000007 00000 f
+0000000008 00000 f
+0000000009 00000 f
+0000000010 00000 f
+0000000011 00000 f
+0000000012 00000 f
+0000000013 00000 f
+0000000014 00000 f
+0000000000 00000 f
+0000057388 00000 n
+0000057189 00000 n
+0000000015 00000 n
+0000065351 00000 n
+0000065676 00000 n
+0000057447 00000 n
+0000059844 00000 n
+0000060045 00000 n
+0000060117 00000 n
+0000064020 00000 n
+0000064238 00000 n
+0000065491 00000 n
+0000065729 00000 n
+0000065750 00000 n
+0000065902 00000 n
+trailer
+<</Size 30/Root 28 0 R/Info 29 0 R/ID[<1115B5541270CE955C1C8AF52AEDAC98> <1115B5541270CE955C1C8AF52AEDAC98>]>>
+startxref
+66566
+%%EOF
diff --git a/context/data/scite/context/documents/scite-context-visual.png b/context/data/scite/context/documents/scite-context-visual.png
new file mode 100644
index 000000000..7368a68f1
--- /dev/null
+++ b/context/data/scite/context/documents/scite-context-visual.png
Binary files differ
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
new file mode 100644
index 000000000..0fe56100b
--- /dev/null
+++ b/context/data/scite/context/lexers/data/scite-context-data-context.lua
@@ -0,0 +1,4 @@
+return {
+ ["constants"]={ "zerocount", "minusone", "minustwo", "plusone", "plustwo", "plusthree", "plusfour", "plusfive", "plussix", "plusseven", "pluseight", "plusnine", "plusten", "plussixteen", "plushundred", "plusthousand", "plustenthousand", "plustwentythousand", "medcard", "maxcard", "maxcardminusone", "zeropoint", "onepoint", "halfapoint", "onebasepoint", "maxdimen", "scaledpoint", "thousandpoint", "points", "halfpoint", "zeroskip", "zeromuskip", "onemuskip", "pluscxxvii", "pluscxxviii", "pluscclv", "pluscclvi", "normalpagebox", "endoflinetoken", "outputnewlinechar", "emptytoks", "empty", "undefined", "voidbox", "emptybox", "emptyvbox", "emptyhbox", "bigskipamount", "medskipamount", "smallskipamount", "fmtname", "fmtversion", "texengine", "texenginename", "texengineversion", "luatexengine", "pdftexengine", "xetexengine", "unknownengine", "activecatcode", "bgroup", "egroup", "endline", "conditionaltrue", "conditionalfalse", "attributeunsetvalue", "uprotationangle", "rightrotationangle", "downrotationangle", "leftrotationangle", "inicatcodes", "ctxcatcodes", "texcatcodes", "notcatcodes", "txtcatcodes", "vrbcatcodes", "prtcatcodes", "nilcatcodes", "luacatcodes", "tpacatcodes", "tpbcatcodes", "xmlcatcodes", "ctdcatcodes", "escapecatcode", "begingroupcatcode", "endgroupcatcode", "mathshiftcatcode", "alignmentcatcode", "endoflinecatcode", "parametercatcode", "superscriptcatcode", "subscriptcatcode", "ignorecatcode", "spacecatcode", "lettercatcode", "othercatcode", "activecatcode", "commentcatcode", "invalidcatcode", "tabasciicode", "newlineasciicode", "formfeedasciicode", "endoflineasciicode", "endoffileasciicode", "spaceasciicode", "hashasciicode", "dollarasciicode", "commentasciicode", "ampersandasciicode", "colonasciicode", "backslashasciicode", "circumflexasciicode", "underscoreasciicode", "leftbraceasciicode", "barasciicode", "rightbraceasciicode", "tildeasciicode", "delasciicode", "lessthanasciicode", "morethanasciicode", "doublecommentsignal", "atsignasciicode", "exclamationmarkasciicode", "questionmarkasciicode", "doublequoteasciicode", "singlequoteasciicode", "forwardslashasciicode", "primeasciicode", "hyphenasciicode", "activemathcharcode", "activetabtoken", "activeformfeedtoken", "activeendoflinetoken", "batchmodecode", "nonstopmodecode", "scrollmodecode", "errorstopmodecode", "bottomlevelgroupcode", "simplegroupcode", "hboxgroupcode", "adjustedhboxgroupcode", "vboxgroupcode", "vtopgroupcode", "aligngroupcode", "noaligngroupcode", "outputgroupcode", "mathgroupcode", "discretionarygroupcode", "insertgroupcode", "vcentergroupcode", "mathchoicegroupcode", "semisimplegroupcode", "mathshiftgroupcode", "mathleftgroupcode", "vadjustgroupcode", "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", "fontslantperpoint", "fontinterwordspace", "fontinterwordstretch", "fontinterwordshrink", "fontexheight", "fontemwidth", "fontextraspace", "slantperpoint", "interwordspace", "interwordstretch", "interwordshrink", "exheight", "emwidth", "extraspace", "mathsupdisplay", "mathsupnormal", "mathsupcramped", "mathsubnormal", "mathsubcombined", "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", "setupdocument", "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", "breakablethinspace", "nobreakspace", "nonbreakablespace", "narrownobreakspace", "zerowidthnobreakspace", "ideographicspace", "ideographichalffillspace", "twoperemspace", "threeperemspace", "fourperemspace", "fiveperemspace", "sixperemspace", "figurespace", "punctuationspace", "hairspace", "zerowidthspace", "zerowidthnonjoiner", "zerowidthjoiner", "zwnj", "zwj", "optionalspace", "asciispacechar" },
+ ["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", "doifelsecommandhandler", "doifcommandhandlerelse", "doifnotcommandhandler", "doifcommandhandler", "newmode", "setmode", "resetmode", "newsystemmode", "setsystemmode", "resetsystemmode", "pushsystemmode", "popsystemmode", "booleanmodevalue", "newcount", "newdimen", "newskip", "newmuskip", "newbox", "newtoks", "newread", "newwrite", "newmarks", "newinsert", "newattribute", "newif", "newlanguage", "newfamily", "newfam", "newhelp", "then", "begcsname", "strippedcsname", "checkedstrippedcsname", "firstargumentfalse", "firstargumenttrue", "secondargumentfalse", "secondargumenttrue", "thirdargumentfalse", "thirdargumenttrue", "fourthargumentfalse", "fourthargumenttrue", "fifthargumentfalse", "fifthsargumenttrue", "sixthargumentfalse", "sixtsargumenttrue", "doglobal", "dodoglobal", "redoglobal", "resetglobal", "donothing", "dontcomplain", "forgetall", "donetrue", "donefalse", "inlineordisplaymath", "indisplaymath", "forcedisplaymath", "startforceddisplaymath", "stopforceddisplaymath", "reqno", "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", "ruledhfilneg", "ruledhfillneg", "normalhfillneg", "ruledvss", "ruledvfil", "ruledvfill", "ruledvfilneg", "ruledvfillneg", "normalvfillneg", "ruledhbox", "ruledvbox", "ruledvtop", "ruledvcenter", "ruledmbox", "ruledhskip", "ruledvskip", "ruledkern", "ruledmskip", "ruledmkern", "ruledhglue", "ruledvglue", "normalhglue", "normalvglue", "ruledpenalty", "filledhboxb", "filledhboxr", "filledhboxg", "filledhboxc", "filledhboxm", "filledhboxy", "filledhboxk", "scratchcounter", "globalscratchcounter", "scratchdimen", "globalscratchdimen", "scratchskip", "globalscratchskip", "scratchmuskip", "globalscratchmuskip", "scratchtoks", "globalscratchtoks", "scratchbox", "globalscratchbox", "normalbaselineskip", "normallineskip", "normallineskiplimit", "availablehsize", "localhsize", "setlocalhsize", "distributedhsize", "hsizefraction", "nextbox", "dowithnextbox", "dowithnextboxcs", "dowithnextboxcontent", "dowithnextboxcontentcs", "scratchwidth", "scratchheight", "scratchdepth", "scratchoffset", "scratchdistance", "scratchhsize", "scratchvsize", "scratchxoffset", "scratchyoffset", "scratchhoffset", "scratchvoffset", "scratchxposition", "scratchyposition", "scratchtopoffset", "scratchbottomoffset", "scratchleftoffset", "scratchrightoffset", "scratchcounterone", "scratchcountertwo", "scratchcounterthree", "scratchdimenone", "scratchdimentwo", "scratchdimenthree", "scratchskipone", "scratchskiptwo", "scratchskipthree", "scratchmuskipone", "scratchmuskiptwo", "scratchmuskipthree", "scratchtoksone", "scratchtokstwo", "scratchtoksthree", "scratchboxone", "scratchboxtwo", "scratchboxthree", "scratchnx", "scratchny", "scratchmx", "scratchmy", "scratchunicode", "scratchleftskip", "scratchrightskip", "scratchtopskip", "scratchbottomskip", "doif", "doifnot", "doifelse", "doifinset", "doifnotinset", "doifelseinset", "doifinsetelse", "doifelsenextchar", "doifnextcharelse", "doifelsenextoptional", "doifnextoptionalelse", "doifelsenextoptionalcs", "doifnextoptionalcselse", "doifelsefastoptionalcheck", "doiffastoptionalcheckelse", "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", "tracingall", "tracingnone", "loggingall", "removetoks", "appendtoks", "prependtoks", "appendtotoks", "prependtotoks", "to", "endgraf", "endpar", "everyendpar", "reseteverypar", "finishpar", "empty", "null", "space", "quad", "enspace", "nbsp", "obeyspaces", "obeylines", "obeyedspace", "obeyedline", "obeyedtab", "obeyedpage", "normalspace", "executeifdefined", "singleexpandafter", "doubleexpandafter", "tripleexpandafter", "dontleavehmode", "removelastspace", "removeunwantedspaces", "keepunwantedspaces", "wait", "writestatus", "define", "defineexpandable", "redefine", "setmeasure", "setemeasure", "setgmeasure", "setxmeasure", "definemeasure", "freezemeasure", "measure", "measured", "installcorenamespace", "getvalue", "getuvalue", "setvalue", "setevalue", "setgvalue", "setxvalue", "letvalue", "letgvalue", "resetvalue", "undefinevalue", "ignorevalue", "setuvalue", "setuevalue", "setugvalue", "setuxvalue", "globallet", "glet", "udef", "ugdef", "uedef", "uxdef", "checked", "unique", "getparameters", "geteparameters", "getgparameters", "getxparameters", "forgetparameters", "copyparameters", "getdummyparameters", "dummyparameter", "directdummyparameter", "setdummyparameter", "letdummyparameter", "usedummystyleandcolor", "usedummystyleparameter", "usedummycolorparameter", "processcommalist", "processcommacommand", "quitcommalist", "quitprevcommalist", "processaction", "processallactions", "processfirstactioninset", "processallactionsinset", "unexpanded", "expanded", "startexpanded", "stopexpanded", "protected", "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", "dowith", "newconstant", "setnewconstant", "setconstant", "setconstantvalue", "newconditional", "settrue", "setfalse", "settruevalue", "setfalsevalue", "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", "modulonumber", "dividenumber", "getfirstcharacter", "doifelsefirstchar", "doiffirstcharelse", "startnointerference", "stopnointerference", "twodigits", "threedigits", "leftorright", "offinterlineskip", "oninterlineskip", "nointerlineskip", "strut", "halfstrut", "quarterstrut", "depthstrut", "setstrut", "strutbox", "strutht", "strutdp", "strutwd", "struthtdp", "begstrut", "endstrut", "lineheight", "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", "uncramped", "cramped", "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", "startluaparameterset", "stopluaparameterset", "luaparameterset", "definenamedlua", "obeylualines", "obeyluatokens", "startluacode", "stopluacode", "startlua", "stoplua", "startctxfunction", "stopctxfunction", "ctxfunction", "startctxfunctiondefinition", "stopctxfunctiondefinition", "installctxfunction", "carryoverpar", "assumelongusagecs", "Umathbotaccent", "righttolefthbox", "lefttorighthbox", "righttoleftvbox", "lefttorightvbox", "righttoleftvtop", "lefttorightvtop", "rtlhbox", "ltrhbox", "rtlvbox", "ltrvbox", "rtlvtop", "ltrvtop", "autodirhbox", "autodirvbox", "autodirvtop", "lefttoright", "righttoleft", "synchronizelayoutdirection", "synchronizedisplaydirection", "synchronizeinlinedirection", "lesshyphens", "morehyphens", "nohyphens", "dohyphens", "Ucheckedstartdisplaymath", "Ucheckedstopdisplaymath", "nobreak", "allowbreak", "goodbreak" },
+} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua b/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua
new file mode 100644
index 000000000..ce4c6c01c
--- /dev/null
+++ b/context/data/scite/context/lexers/data/scite-context-data-interfaces.lua
@@ -0,0 +1,10 @@
+return {
+ ["cs"]={ "CAP", "Cap", "Caps", "Character", "Characters", "Cisla", "KAP", "Kap", "Kaps", "MESIC", "MONTH", "Rimskecislice", "Romannumerals", "SLOVA", "SLOVO", "Slova", "Slovo", "VSEDNIDEN", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "Znak", "Znaky", "about", "adaptlayout", "aktualnicislonadpisu", "aktualnidatum", "appendix", "arg", "at", "atleftmargin", "atpage", "atrightmargin", "background", "barevnalista", "barva", "bilemisto", "blackrule", "blackrules", "blank", "bookmark", "bottomspace", "bublinkovanapoveda", "but", "button", "bydliste", "bypassblocks", "cap", "celkovypocetstran", "cernalinka", "cernelinky", "chapter", "character", "characters", "chem", "cisla", "cislonadpisu", "cislopodrovnice", "cislorovnice", "cislostrany", "citace", "citovat", "clip", "clonefield", "color", "column", "comment", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completepagenumber", "completeregister", "convertnumber", "copyfield", "correctwhitespace", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "cutspace", "date", "datum", "decouplemarking", "decrementnumber", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecombination", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinmargin", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelayer", "definelayout", "definelist", "definelogo", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepagebreak", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definerawfont", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definerule", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetextposition", "definetextvariable", "definetype", "definetypeface", "definetyping", "defineversion", "definuj", "definujakcent", "definujbarvu", "definujblok", "definujbloksekce", "definujbuffer", "definujfont", "definujformatodkazu", "definujhbox", "definujhlavnipole", "definujinterakcnimenu", "definujkombinovanyseznam", "definujkonverzi", "definujlogo", "definujnadpis", "definujobrazeksymbol", "definujodkaz", "definujodstavce", "definujopis", "definujoramovani", "definujoramovanytext", "definujpaletu", "definujplvouciobjekt", "definujpodpole", "definujpole", "definujpopis", "definujpopisek", "definujprekryv", "definujpreskok", "definujprikaz", "definujprofil", "definujprogram", "definujprostredizakladnihofontu", "definujrejstrik", "definujsablonutabulky", "definujsekci", "definujseznam", "definujseznamodkazu", "definujskupinubarev", "definujstartstop", "definujstyl", "definujstylfontu", "definujsymbol", "definujsynonumumfontu", "definujsynonyma", "definujtabelaci", "definujtext", "definujtrideni", "definujupravu", "definujvelikostpapiru", "definujverzi", "definujvycet", "definujvystup", "definujzakladnifont", "definujzasobnikpoli", "definujznaceni", "definujznak", "delkaseznamu", "description", "determineheadnumber", "determinelistcharacteristics", "disableinteractionmenu", "dodrzujprofil", "dodrzujverzi", "dodrzujverziprofilu", "dvoustrannypapir", "emptylines", "enumeration", "externalfigure", "externiobraz", "fakt", "field", "fieldstack", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "footnote", "footnotetext", "forceblocks", "fraction", "framed", "framedtext", "from", "getbuffer", "getmarking", "getnumber", "godown", "goto", "gotobox", "graycolor", "grid", "hairline", "head", "headnumber", "headsym", "headtext", "hideblocks", "high", "hl", "hlavnijazyk", "hlavniuroven", "hodnotabarvy", "hodnotasedi", "immediatebetweenlist", "immediatetolist", "in", "indentation", "indenting", "inframed", "ininner", "inleft", "inline", "inmargin", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inright", "instalacejazyka", "installlanguage", "interactionbar", "interactionbuttons", "interakcnilista", "interakcnitlacitka", "interaktivnimenu", "item", "items", "its", "jazyk", "jdidolu", "jdina", "jdinabox", "jdinastranu", "jmeno", "kap", "keepblocks", "klonujpole", "komponenta", "konvertujcislo", "kopirujpole", "korekcebilehomista", "labeling", "labels", "labeltext", "language", "leftaligned", "leg", "listsymbol", "loadsorts", "loadsynonyms", "logfields", "lohi", "low", "mainlanguage", "maoramovani", "mapfontsize", "mar", "marginalnilinka", "marginalninadpis", "marginalnislovo", "marginalnitext", "marginrule", "margintext", "marking", "markversion", "matematika", "mathematics", "mazaramovani", "mediaeval", "meritko", "mesic", "mezera", "midaligned", "mirror", "month", "moveformula", "moveongrid", "movesidefloat", "mrizka", "nadpis", "nadruhyokraj", "nalevo", "nalevyokraj", "name", "naokraj", "napravo", "napravyokraj", "nastavbarvu", "nastavbarvy", "nastavbilamista", "nastavblok", "nastavbloksekce", "nastavbuffer", "nastavcernelinky", "nastavcislonadpisu", "nastavcislostrany", "nastavcislovani", "nastavcislovaniodstavcu", "nastavcislovaniradku", "nastavcislovanistran", "nastavcitaci", "nastavdefinicipoznamekpodcarou", "nastavdeleniplvoucichobjektu", "nastavdelitko", "nastavdolnitexty", "nastavexterniobrazy", "nastavhorejsek", "nastavhornitexty", "nastavinterakci", "nastavinterakcnilistu", "nastavinterakcnimenu", "nastavinterakcniobrazovku", "nastavjazyk", "nastavkapitalky", "nastavkombinovanyseznam", "nastavkomentar", "nastavkomentarstrany", "nastavlegendu", "nastavmarginalie", "nastavmarginalniblok", "nastavmarginalnilinky", "nastavmeziradkovoumezeru", "nastavnadpis", "nastavnadpisy", "nastavodkazovani", "nastavodsazovani", "nastavodstavce", "nastavopis", "nastavoramovanetexty", "nastavoramovani", "nastavorez", "nastavotoceni", "nastavpaletu", "nastavplvouciobjekt", "nastavplvouciobjekty", "nastavpodcislostrany", "nastavpodtrzeni", "nastavpole", "nastavpolozky", "nastavpopisek", "nastavpopisky", "nastavpopisy", "nastavpozadi", "nastavpoznamkypodcarou", "nastavprechodstrany", "nastavpreskok", "nastavprofily", "nastavprogramy", "nastavprostredizakladnihofontu", "nastavpublikace", "nastavradkovani", "nastavradky", "nastavrastr", "nastavrejstrik", "nastavrovnice", "nastavsadusymbolu", "nastavsekci", "nastavseznam", "nastavseznamodkazu", "nastavsirkucary", "nastavsloupce", "nastavspodek", "nastavspojeni", "nastavsynchronizaci", "nastavsynchronizacnilistu", "nastavsynonyma", "nastavsystem", "nastavtab", "nastavtabelaci", "nastavtabulky", "nastavtenkelinky", "nastavtext", "nastavtexthlavicky", "nastavtextovelinky", "nastavtextpopisku", "nastavtexttexty", "nastavtextyupati", "nastavtextyzahlavi", "nastavtlacitka", "nastavtoleranci", "nastavtrideni", "nastavtype", "nastavumisteniprotejsku", "nastavumistovani", "nastavupati", "nastavupravu", "nastavurl", "nastavusporadani", "nastavvelikostpapiru", "nastavverze", "nastavvsechnapole", "nastavvycty", "nastavvyplnovelinky", "nastavvyplnoveradky", "nastavvystup", "nastavvzhled", "nastavzahlavi", "nastavzakladnifont", "nastavzarovnani", "nastavznaceni", "nastavzuzeni", "nastrane", "navigating", "nejakyradek", "nekde", "nextsection", "neznamo", "nivy", "nizky", "nocap", "noheaderandfooterlines", "noindenting", "nokap", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "nop", "nospace", "note", "notopandbottomlines", "nowhitespace", "numberofsubpages", "numbers", "obrazovka", "odkaz", "odkaznadatum", "odkaznastranu", "odkaznatext", "odkazujici", "odsazenishora", "odsazenizleva", "odsazovani", "okr", "opakovat", "opis", "opissoubor", "oramovani", "oref", "orez", "otocit", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "oznaceni", "oznacverzi", "packed", "page", "pagedepth", "pageoffset", "pagereference", "paragraph", "parovastrana", "part", "periods", "pis", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placeheadnumber", "placeheadtext", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placepagenumber", "placerawlist", "placereferencelist", "placeregister", "placerule", "placesidebyside", "placesubformula", "placetextvariable", "plnezneni", "pol", "pole", "polozka", "polozky", "popisky", "poppisek", "porovnejpaletu", "porovnejskupinubarev", "position", "positiontext", "pozadi", "pozice", "poznamka", "poznamkapodcarou", "pref", "prelozit", "premistinamrizku", "prepninazakladnifont", "preskoc", "prizpusobivepole", "prizpusobvzhled", "processblocks", "processpage", "produkt", "program", "projekt", "propojeneznaceni", "propojenydokument", "propojenyrejstrik", "prostredi", "publication", "publikace", "quotation", "quote", "ran", "ref", "reference", "referral", "referraldate", "register", "reservefloat", "reset", "resetmarking", "resetnumber", "resettextcontent", "resetznaceni", "rightaligned", "rimskecislice", "romannumerals", "rotate", "rozdelplvouciobjekt", "rozmer", "rozpojeneznaceni", "roztazene", "scale", "schovejbloky", "screen", "section", "sedabarva", "seeregister", "selectblocks", "selectpaper", "selectversion", "setnumber", "settextcontent", "settextvariable", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumber", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setuprule", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstartstop", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextposition", "setuptextrules", "setuptexttexts", "setuptextvariable", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "sirkalevehookraje", "sirkalevemarginalie", "sirkamarginalie", "sirkaokraje", "sirkapapiru", "sirkapravehookraje", "sirkapravemarginalie", "sirkasazby", "sirkaseznamu", "sirkatextu", "sirkatiskpapiru", "sloupec", "slovovpravo", "someline", "somewhere", "sort", "space", "splitfloat", "spodek", "stanovcharakteristickuseznamu", "stanovcislonadpisu", "startalignment", "startbackground", "startbarva", "startbuffer", "startcislovaniradku", "startcitace", "startcolor", "startcolumnmakeup", "startcolumns", "startcolumnset", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startdokument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfloattext", "startformula", "startframedtext", "startglobalni", "starthiding", "startinteractionmenu", "startitemgroup", "startkodovani", "startkomponenta", "startkorekceradku", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startlokalni", "startlokalnipoznamkypodcarou", "startmakeup", "startmarginalniblok", "startmarginalnilinka", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startnezhustene", "startobraz", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startpozadi", "startprehled", "startprekryv", "startproduct", "startprodukt", "startprofil", "startprofile", "startproject", "startprojekt", "startprostredi", "startprotejsek", "startquotation", "startradek", "startradky", "startrastr", "startregister", "startsadasymbolu", "startsloupce", "startspojeni", "startsymbolset", "startsynchronizace", "startsynchronization", "starttable", "starttables", "starttabulate", "starttabulka", "starttabulky", "starttext", "starttextovalinka", "starttextrule", "starttyping", "startumistovani", "startunpacked", "startuprava", "startversion", "startverze", "startzarovnavani", "startzhustene", "startzuzeni", "stopalignment", "stopbackground", "stopbarva", "stopbuffer", "stopcislovaniradku", "stopcitace", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcolumnset", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopdokument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stopglobalni", "stophiding", "stopinteractionmenu", "stopitemgroup", "stopkodovani", "stopkomponenta", "stopkorekceradku", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stoplokalni", "stoplokalnipoznamkypodcarou", "stopmakeup", "stopmarginalniblok", "stopmarginalnilinka", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopnezhustene", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositioning", "stoppostponing", "stoppozadi", "stopprehled", "stopprekryv", "stopproduct", "stopprodukt", "stopprofil", "stopprofile", "stopproject", "stopprojekt", "stopprostredi", "stopprotejsek", "stopquotation", "stopradek", "stopradky", "stoprastr", "stopsloupce", "stopspojeni", "stopsymbolset", "stopsynchronizace", "stopsynchronization", "stoptable", "stoptables", "stoptabulate", "stoptabulka", "stoptabulky", "stoptext", "stoptextovalinka", "stoptextrule", "stoptyping", "stopumistovani", "stopunpacked", "stopuprava", "stopversion", "stopverze", "stopzarovnavani", "stopzhustene", "stopzuzeni", "strana", "stretched", "sub", "subject", "subpagenumber", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "switchtorawfont", "sym", "symbol", "synchronizacnilista", "synchronizationbar", "synchronize", "synchronizovat", "synonym", "tab", "tecky", "tenkalinka", "tenkelinky", "testcolumn", "testpage", "tex", "texthlavicky", "textovalinka", "textpopisku", "textreference", "textrule", "textvariable", "thinrule", "thinrules", "title", "tlacitko", "tlacitkomenu", "tloustkacary", "tooltip", "translate", "tref", "tvrdamezera", "tvrdemezery", "txt", "typ", "type", "typebuffer", "typefile", "ukazbarvu", "ukazexterniobrazy", "ukazmrizku", "ukaznastaveni", "ukazpaletu", "ukazpodpery", "ukazpole", "ukazpostredizakladnihofontu", "ukazramecek", "ukazsadusymbolu", "ukazskupinubarev", "ukazupravu", "ukazvytisk", "ukazvzhled", "ukazzakladnifont", "umistikombinovanyseznam", "umistilegendu", "umistiloga", "umistilokalnipoznamkypodcarou", "umistinadsebe", "umistinamrizku", "umistipodrovnici", "umistipoznamkypodcarou", "umistirejstrik", "umistirovnici", "umistiseznam", "umistivedlesebe", "umistizalozky", "underbar", "underbars", "urcicharakteristikurejstriku", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "uzijJSscripts", "uzijURL", "uzijadresar", "uzijbloky", "uzijexternidokument", "uzijexterniobraz", "uzijexternisoubor", "uzijexternisoubory", "uzijexternizvuk", "uzijkodovani", "uzijmodul", "uzijmoduly", "uzijodkazy", "uzijprikazy", "uzijspeciality", "uzijsymbol", "uzijurl", "version", "verze", "vl", "vlasovalinka", "vlevo", "vpravo", "vradku", "vsedniden", "vyberbloky", "vyberpapir", "vyberverzi", "vyplnenytext", "vyplnovelinky", "vyplnovepole", "vyplnovyradek", "vyskahorejsku", "vyskapapiru", "vyskasazby", "vyskaseznamu", "vyskaspodku", "vyskatextu", "vyskatiskpapiru", "vyskaupati", "vyskazahlavi", "vysoky", "vyznam", "vzdalenosthorejsku", "vzdalenostlevehookraje", "vzdalenostlevemarginalie", "vzdalenostmarginalie", "vzdalenostokraje", "vzdalenostpravehookraje", "vzdalenostpravemarginalie", "vzdalenostspodku", "vzdalenostupati", "vzdalenostzahlavi", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister", "zablokujinterakcnimenu", "zachovejbloky", "zadnamezera", "zadnebilemisto", "zadnedalsibloky", "zadnedalsisoubory", "zadnehorniadolniradky", "zadneodsazovani", "zadnezahlaviaupati", "zadneznaceni", "zadnyrozmer", "zadnyseznam", "zadnytest", "zalozka", "zapisdorejstriku", "zapisdoseznamu", "zapisdoseznamuodkazu", "zapismeziseznam", "zaramovani", "zarovnanonastred", "zarovnanovlevo", "zarovnanovpravo", "zasobnikpoli", "zaznamovepole", "zhustene", "ziskejbuffer", "ziskejznaceni", "zlomek", "znaceni", "znak", "znaky", "zpracujbloky", "zpracujstranu", "zrcadlit", "zref", "zvysujicicislo" },
+ ["de"]={ "Buchstabe", "Buchstaben", "CAP", "Cap", "Caps", "Character", "Characters", "KAP", "Kap", "Kaps", "MONAT", "MONTH", "Roemischezahlen", "Romannumerals", "WEEKDAY", "WOCHENTAG", "WOERTER", "WORD", "WORDS", "WORT", "Woerter", "Word", "Words", "Wort", "Ziffern", "about", "abstandlinkerrand", "abstandoben", "abstandrechterrand", "abstandunten", "adaptlayout", "amgitterausrichten", "amgitterneuausrichten", "appendix", "arg", "at", "atleftmargin", "atpage", "atrightmargin", "aufseite", "ausfuellfeld", "ausfuelltext", "ausschnitt", "background", "bearbeitebloecke", "bearbeiteseite", "bedeutung", "behaltebloecke", "bei", "bemerkung", "benutzekodierung", "benutzespezielles", "benutzeverzeichnis", "beschrifteversion", "beschriftung", "bestimmekopfnummer", "bestimmelistencharakeristika", "bestimmeregistercharakteristika", "bildschirm", "blackrule", "blackrules", "blank", "blanko", "bookmark", "bottomspace", "breitelinkerrand", "breiterechterrand", "bruch", "buchstabe", "buchstaben", "but", "button", "bypassblocks", "cap", "chapter", "character", "characters", "chem", "clip", "clonefield", "color", "column", "comment", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completepagenumber", "completeregister", "convertnumber", "copyfield", "correctwhitespace", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "cutspace", "date", "datum", "decouplemarking", "decrementnumber", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecombination", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinmargin", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelayer", "definelayout", "definelist", "definelogo", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepagebreak", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definerawfont", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definerule", "defineschriftsynonym", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetextposition", "definetextvariable", "definetype", "definetypeface", "definetyping", "defineversion", "definiereabbsymbol", "definiereabsaetze", "definiereabschnitt", "definiereabschnittsblock", "definiereakzent", "definierebefehl", "definierebeschreibung", "definierebeschreibungen", "definierebeschriftung", "definiereblanko", "definiereblock", "definierefarbe", "definierefarbengruppe", "definierefeld", "definierefeldstapel", "definierefliesstext", "definierefliesstextumgebung", "definieregleitobjekt", "definierehauptfeld", "definierehbox", "definiereinteraktionsmenue", "definierekonversion", "definierelabel", "definiereliste", "definierelogo", "definieren", "definierenummerierung", "definiereoverlay", "definierepalette", "definierepapierformat", "definiereprofil", "definiereprogramme", "definierepuffer", "definierereferenz", "definierereferenzformat", "definierereferenzliste", "definiereregister", "definiereschrift", "definiereschriftstil", "definieresortieren", "definierestartstop", "definierestil", "definieresubfeld", "definieresymbol", "definieresynonyme", "definieretabellenvorlage", "definieretabulator", "definieretext", "definieretippen", "definiereueberschrift", "definiereumbruch", "definiereumrahmt", "definiereumrahmtertext", "definiereversion", "definierezeichen", "definierezusammengestellteliste", "description", "determineheadnumber", "determinelistcharacteristics", "dimension", "disableinteractionmenu", "doppelseite", "doppelseitigespapier", "drehen", "duennelinie", "duennerumriss", "einezeile", "einziehen", "emptylines", "entknuepfebeschriftung", "enumeration", "externalfigure", "externeabbildung", "farbbalken", "farbe", "farbewert", "feld", "feldstapel", "festesspatium", "field", "fieldstack", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "folgeprofil", "folgeprofilversion", "folgeversion", "followprofile", "followprofileversion", "followversion", "footnote", "footnotetext", "forceblocks", "format", "formelnummer", "fraction", "framed", "framedtext", "from", "fussnote", "fusszeileabstand", "fusszeilenhoehe", "gefuelltesrechteck", "gefuelltezeile", "geg", "gesamtseitenanzahl", "gestreckt", "getbuffer", "getmarking", "getnumber", "gitter", "godown", "goto", "gotobox", "graufarbe", "grauwert", "graycolor", "grid", "haarlinie", "hairline", "hauptsprache", "head", "headnumber", "headsym", "headtext", "heutigesdatum", "heutigeskopfnummer", "hideblocks", "high", "hintergrund", "hl", "hoch", "hoeheoben", "hoeheunten", "holebeschriftung", "holepuffer", "imlinken", "imlinkenrand", "immaumrise", "immediatebetweenlist", "immediatetolist", "imrechten", "imrechtenrand", "imumriss", "in", "inaktiviereinteraktionsmenue", "inanderermarginale", "indentation", "indenting", "inframed", "ininner", "inleft", "inline", "inlinkermarginale", "inmargin", "inmarginalie", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inrechtermarginale", "inright", "installieresprache", "installlanguage", "interactionbar", "interactionbuttons", "interaktionsbalken", "interaktionsknopfe", "interaktionsmenue", "inzeile", "irgendwo", "item", "items", "its", "kap", "keepblocks", "keindimension", "keinebeschriftung", "keinebloeckemehr", "keinedateienmehr", "keinekopfundfusszeilen", "keineliste", "keinspatium", "keintest", "keinzeilenobenundunten", "keinzwischenraum", "kleinerdurchschuss", "klonierefeld", "knopf", "komponente", "konvertierezahl", "kopf", "kopfniveau", "kopfnummer", "kopfweite", "kopfzeilenabstand", "kopfzeilenhoehe", "kopierefeld", "korrigierezwischenraum", "label", "labeling", "labels", "labeltext", "language", "leftaligned", "leg", "liniendicke", "linkemarginalafstand", "linkemarginalbreite", "linksbuendig", "listenbreite", "listenhoehe", "listenlaenge", "listsymbol", "loadsorts", "loadsynonyms", "logfields", "lohi", "low", "mainlanguage", "mapfontsize", "mar", "marginalafstand", "marginalbreite", "marginallinie", "marginaltext", "marginaltitel", "marginalwort", "marginrule", "margintext", "marking", "markversion", "mathematics", "mathematik", "maumrise", "mediaeval", "menueknopf", "midaligned", "mirror", "monat", "month", "moveformula", "moveongrid", "movesidefloat", "nachunten", "name", "navigating", "nextsection", "nichteinziehen", "nocap", "noheaderandfooterlines", "noindenting", "nokap", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "nop", "nospace", "note", "notiz", "notopandbottomlines", "nowhitespace", "numberofsubpages", "numbers", "nummererhoehen", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagedepth", "pageoffset", "pagereference", "papierbreite", "papierhoehe", "paragraph", "part", "passelayoutan", "passendfeld", "periods", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placeheadnumber", "placeheadtext", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placepagenumber", "placerawlist", "placereferencelist", "placeregister", "placerule", "placesidebyside", "placesubformula", "placetextvariable", "platzierebookmarks", "platziereformel", "platzierefussnoten", "platzierelegende", "platziereliste", "platzierelogo", "platzierelokalefussnoten", "platzierenebeneinander", "platziereregister", "platziereuntereinander", "platziereunterformel", "platzierezusammengestellteliste", "pos", "position", "positiontext", "posten", "printpapierbreite", "printpapierhoehe", "processblocks", "processpage", "produkt", "program", "programm", "projekt", "publication", "publikation", "punkt", "quotation", "quote", "ran", "randabstand", "randbreite", "rechteck", "rechtecke", "rechtemarginalafstand", "rechtemarginalbreite", "rechtsbuendig", "ref", "reference", "referenz", "referieren", "referral", "referraldate", "register", "registrierefelder", "reservefloat", "reset", "resetmarking", "resetnumber", "resettextcontent", "rightaligned", "roemischezahlen", "romannumerals", "rotate", "ruecksetzten", "ruecksetztenbeschriftung", "rumpfweite", "satzbreite", "satzhoehe", "scale", "schreibezumregister", "schreibezurliste", "schreibezurreferenzliste", "schreibezwischenliste", "screen", "section", "seeregister", "seite", "seitenreferenz", "seitenummer", "selectblocks", "selectpaper", "selectversion", "setnumber", "settext", "settextcontent", "settextvariable", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumber", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setuprule", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstartstop", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextposition", "setuptextrules", "setuptexttexts", "setuptextvariable", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "someline", "somewhere", "sort", "space", "spalte", "spatium", "spiegeln", "splitfloat", "sprache", "startabbildung", "startalignment", "startausrichtung", "startbackground", "startbuffer", "startcolor", "startcolumnmakeup", "startcolumns", "startcolumnset", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startdokument", "startenger", "startenumeration", "startenvironment", "startfact", "startfarbe", "startfigure", "startfloattext", "startformula", "startframedtext", "startgegenueber", "startglobal", "startgrosserdurchschuss", "starthiding", "starthintergrund", "startinteractionmenu", "startitemgroup", "startkleinerdurchschuss", "startkodierung", "startkombination", "startkomponente", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startlokal", "startlokalefussnoten", "startmakeup", "startmarginalblock", "startmarginallinie", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositionieren", "startpositioning", "startpostponing", "startproduct", "startprodukt", "startprofil", "startprofile", "startproject", "startprojekt", "startquotation", "startraster", "startregister", "startspalten", "startsymbolset", "startsynchronisation", "startsynchronization", "starttabelle", "starttabellen", "starttable", "starttables", "starttabulate", "starttext", "starttextlinie", "starttextrule", "starttyping", "startueberblick", "startumbruch", "startumgebung", "startunpacked", "startversion", "startzeile", "startzeilen", "startzeilenkorrektur", "startzeilennumerierung", "startzitat", "stelleabsaetzeein", "stelleabsatznummerierungein", "stelleabschnittein", "stelleabschnittsblockein", "stelleanordnenein", "stelleaufzaehlungenein", "stelleausgabeein", "stelleausrichtungein", "stelleausschnittein", "stellebeschreibungein", "stellebeschriftungein", "stellebilderunterschriftein", "stellebildunterschriftein", "stellebindestrichein", "stelleblankoein", "stelleblockein", "stelledrehenein", "stelleduennerumrissein", "stelleeinziehenein", "stelleengerein", "stelleexterneabbildungenein", "stellefarbeein", "stellefarbenein", "stellefeldein", "stellefelderin", "stellefliesstextein", "stellefliesstextumgebungein", "stelleformelnein", "stellefussnotendefinitionein", "stellefussnotenein", "stellefusszeileein", "stellefusszeilentextein", "stellegefuelltesrechteckein", "stellegefuelltezeileein", "stellegegenueberplatzierenein", "stellegleitobjekteein", "stellegleitobjektein", "stellehintergruendeein", "stellehintergrundein", "stelleinmarginalieein", "stelleinteraktionein", "stelleinteraktionsbalkenein", "stelleinteraktionsbildschirmein", "stelleinteraktionsmenueein", "stelleknopfein", "stellekombinationein", "stellekommentarein", "stellekopfzahlein", "stellekopfzeileein", "stellekopfzeilentextein", "stellelabeltextein", "stellelayoutein", "stellelegendeein", "stellelinienbreiteein", "stellelisteein", "stellemarginalblockein", "stellemarginallinieein", "stellenobenein", "stellenummerierungein", "stellepaletteein", "stellepapierformatein", "stelleplatziegeteiltegleitobjekt", "stellepositionierenein", "stellepostenein", "stelleprofilein", "stelleprogrammein", "stellepublikationein", "stellepufferein", "stellerasterein", "stellerechteckein", "stellereferenzierenein", "stellereferenzlisteein", "stelleregisterein", "stelleseitenkommentarein", "stelleseitennummerein", "stelleseitennummeriernungein", "stelleseitenuebergangein", "stellesortierenein", "stellespaltenein", "stellespatiumein", "stellespracheein", "stellesymbolsetein", "stellesynchronisationein", "stellesynchronisationsbalkenein", "stellesynonymein", "stellesystemein", "stelletabein", "stelletabellenein", "stelletabulatorein", "stelletextein", "stelletextobenein", "stelletexttexteein", "stelletextumrissein", "stelletextuntenein", "stelletipein", "stelletippenein", "stelletoleranzein", "stelleueberschriftein", "stelleueberschriftenein", "stelleueberschrifttextein", "stelleumbruchein", "stelleumrahmtein", "stelleumrahmtetexteein", "stelleuntenein", "stelleunterseitennummerein", "stelleunterstreichenein", "stelleurlein", "stelleversalienein", "stelleversionein", "stellezeilenabstandein", "stellezeilenein", "stellezeilennumerierungein", "stellezitierenein", "stellezusammengestelltelisteein", "stellezwischenraumein", "stopalignment", "stopausrichtung", "stopbackground", "stopbuffer", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcolumnset", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopdokument", "stopenger", "stopenumeration", "stopenvironment", "stopfact", "stopfarbe", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stopgegenueber", "stopglobal", "stopgrosserdurchschuss", "stophiding", "stophintergrund", "stopinteractionmenu", "stopitemgroup", "stopkleinerdurchschuss", "stopkodierung", "stopkombination", "stopkomponente", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stoplokal", "stoplokalefussnoten", "stopmakeup", "stopmarginalblock", "stopmarginallinie", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositionieren", "stoppositioning", "stoppostponing", "stopproduct", "stopprodukt", "stopprofil", "stopprofile", "stopproject", "stopprojekt", "stopquotation", "stopraster", "stopspalten", "stopsymbolset", "stopsynchronisation", "stopsynchronization", "stoptabelle", "stoptabellen", "stoptable", "stoptables", "stoptabulate", "stoptext", "stoptextlinie", "stoptextrule", "stoptyping", "stopueberblick", "stopumbruch", "stopumgebung", "stopunpacked", "stopversion", "stopzeile", "stopzeilen", "stopzeilenkorrektur", "stopzeilennumerierung", "stopzitat", "stretched", "sub", "subject", "subpagenumber", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "switchtorawfont", "sym", "symbol", "synchronisationsbalken", "synchronisieren", "synchronizationbar", "synchronize", "synonym", "tab", "teilegleitobjekt", "testcolumn", "testpage", "tex", "textbreite", "texthoehe", "textlinie", "textreference", "textreferenz", "textrule", "textvariable", "thinrule", "thinrules", "tief", "tiho", "tip", "tippedatei", "tippen", "tippepuffer", "title", "tooltip", "translate", "txt", "typ", "type", "typebuffer", "typefile", "ueber", "ueberschrifttext", "uebersetzten", "umgebung", "umrahmt", "unbekant", "underbar", "underbars", "unterformelnummer", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "verbergebloecke", "vergleichefarbengruppe", "vergleichepalette", "verknuepfebeschriftung", "verknuepfedokument", "verknuepfregister", "version", "verweis", "verweisdatum", "verwendeJSscript", "verwendeURL", "verwendebefehl", "verwendebloecke", "verwendeexteresdokument", "verwendeexterneabbildung", "verwendeexternedatei", "verwendeexternedateien", "verwendeexternestonstueck", "verwendemodul", "verwendemodule", "verwendereferenzen", "verwendesymbole", "verwendeurl", "vl", "volleswort", "von", "waehlebloeckeaus", "waehlepapieraus", "waehleversionaus", "wechselezumfliesstext", "weekday", "whitespace", "wiederholen", "wochentag", "wohnort", "wordright", "wortrechts", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister", "zeigedruck", "zeigeeinstellungen", "zeigeexterneabbildungen", "zeigefarbe", "zeigefarbengruppe", "zeigefelder", "zeigefliesstext", "zeigefliesstextumgebung", "zeigegitter", "zeigelayout", "zeigepalette", "zeigerahmen", "zeigestruts", "zeigeumbruch", "zentriert", "ziffern", "zitat", "zitieren", "zu", "zurbox", "zurseite", "zwischenraum" },
+ ["en"]={ "CAP", "Cap", "Caps", "Character", "Characters", "MONTH", "Numbers", "Romannumerals", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "about", "adaptlayout", "adding", "appendix", "arg", "at", "atleftmargin", "atpage", "atrightmargin", "background", "backspace", "blackrule", "blackrules", "blank", "bookmark", "bottomdistance", "bottomheight", "bottomspace", "but", "button", "bypassblocks", "cap", "chapter", "character", "characters", "chem", "clip", "clonefield", "color", "colorbar", "colorvalue", "column", "comment", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completepagenumber", "completeregister", "component", "convertnumber", "copyfield", "correctwhitespace", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "cutspace", "date", "decouplemarking", "decrementnumber", "define", "defineaccent", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecharacter", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecombination", "definecombinedlist", "definecommand", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontstyle", "definefontsynonym", "defineframed", "defineframedtext", "definehbox", "definehead", "defineindentedtext", "defineinmargin", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelayer", "definelayout", "definelist", "definelogo", "definemainfield", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepagebreak", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definerawfont", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definerule", "definesection", "definesectionblock", "definesorting", "definestartstop", "definestyle", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetextbackground", "definetextposition", "definetextvariable", "definetype", "definetypeface", "definetyping", "defineversion", "description", "determineheadnumber", "determinelistcharacteristics", "determineregistercharacteristics", "dimension", "disableinteractionmenu", "domicile", "donttest", "edgedistance", "edgewidth", "emptylines", "enumeration", "environment", "externalfigure", "fact", "field", "fieldstack", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspace", "fixedspaces", "followprofile", "followprofileversion", "followversion", "footerdistance", "footerheight", "footnote", "footnotetext", "forceblocks", "formulanumber", "fraction", "framed", "framedtext", "from", "getbuffer", "getmarking", "getnumber", "godown", "goto", "gotobox", "gotopage", "graycolor", "greyvalue", "grid", "hairline", "head", "headerdistance", "headerheight", "headlevel", "headnumber", "headsym", "headtext", "hideblocks", "high", "hl", "immediatebetweenlist", "immediatetolist", "in", "incrementnumber", "indentation", "indenting", "inframed", "infull", "ininner", "inleft", "inleftedge", "inleftmargin", "inline", "inmaframed", "inmargin", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inright", "inrightedge", "inrightmargin", "installlanguage", "interactionbar", "interactionbuttons", "interactionmenu", "item", "items", "its", "keepblocks", "label", "labeling", "labels", "labeltext", "language", "leftaligned", "leftedgedistance", "leftedgewidth", "leftmargindistance", "leftmarginwidth", "leg", "linethickness", "listheight", "listlength", "listsymbol", "listwidth", "loadsorts", "loadsynonyms", "logfields", "lohi", "low", "maframed", "mainlanguage", "makeupheight", "makeupwidth", "mapfontsize", "mar", "margindistance", "marginrule", "margintext", "margintitle", "marginwidth", "marginword", "marking", "markversion", "mathematics", "mediaeval", "menubutton", "midaligned", "mirror", "month", "moveformula", "moveongrid", "movesidefloat", "name", "navigating", "nextsection", "nocap", "nodimension", "noheaderandfooterlines", "noindenting", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "nop", "nospace", "note", "notopandbottomlines", "nowhitespace", "numberofsubpages", "numbers", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagedepth", "pagenumber", "pageoffset", "pagereference", "paperheight", "paperwidth", "paragraph", "part", "periods", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placeheadnumber", "placeheadtext", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placepagenumber", "placerawlist", "placereferencelist", "placeregister", "placerule", "placesidebyside", "placesubformula", "placetextvariable", "position", "positiontext", "printpaperheight", "printpaperwidth", "processblocks", "processpage", "product", "program", "project", "publication", "quotation", "quote", "ran", "redo", "ref", "reference", "referral", "referraldate", "referring", "register", "remark", "reservefloat", "reset", "resetmarking", "resetnumber", "resettextcontent", "rightaligned", "rightedgedistance", "rightedgewidth", "rightmargindistance", "rightmarginwidth", "romannumerals", "rotate", "scale", "screen", "section", "seeregister", "selectblocks", "selectpaper", "selectversion", "setnumber", "settextcontent", "settextvariable", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulae", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitemizations", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumber", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagecomment", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setuprule", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstartstop", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextbackground", "setuptextposition", "setuptextrules", "setuptexttexts", "setuptextvariable", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "someline", "somewhere", "sort", "space", "splitfloat", "startalignment", "startbackground", "startbuffer", "startcoding", "startcolor", "startcolumnmakeup", "startcolumns", "startcolumnset", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfloattext", "startformula", "startframed", "startframedtext", "startglobal", "starthiding", "startinteractionmenu", "startitemgroup", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startmakeup", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startproduct", "startprofile", "startproject", "startquotation", "startraster", "startregister", "startsymbolset", "startsynchronization", "starttable", "starttables", "starttabulate", "starttext", "starttextbackground", "starttextrule", "starttyping", "startunpacked", "startversion", "stopalignment", "stopbackground", "stopbuffer", "stopcoding", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcolumnset", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframed", "stopframedtext", "stopglobal", "stophiding", "stopinteractionmenu", "stopitemgroup", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositioning", "stoppostponing", "stopproduct", "stopprofile", "stopproject", "stopquotation", "stopraster", "stopsymbolset", "stopsynchronization", "stoptable", "stoptables", "stoptabulate", "stoptext", "stoptextbackground", "stoptextrule", "stoptyping", "stopunpacked", "stopversion", "stretched", "sub", "subformulanumber", "subject", "subpagenumber", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "switchtorawfont", "sym", "symbol", "symoffset", "synchronizationbar", "synchronize", "synonym", "tab", "testcolumn", "testpage", "tex", "textheight", "textreference", "textrule", "textvariable", "textwidth", "thinrule", "thinrules", "title", "tooltip", "topdistance", "topheight", "topspace", "totalnumberofpages", "translate", "txt", "typ", "type", "typebuffer", "typefile", "underbar", "underbars", "unitmeaning", "unknown", "useJSscripts", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usemodules", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "useurl", "version", "vl", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister" },
+ ["fr"]={ "CAP", "Cap", "Caps", "Caractere", "Caracteres", "Character", "Characters", "Chiffresromains", "JOURSEMAINE", "MOIS", "MONTH", "MOT", "MOTS", "Mot", "Mots", "Numeros", "Romannumerals", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "a", "about", "adaptedisposition", "adaptlayout", "affectenumero", "affectevariabletexte", "ajustechamp", "alaligne", "alapage", "aligneadroite", "aligneagauche", "aligneaumilieu", "appendix", "arg", "arriereplan", "at", "atleftmargin", "atpage", "atrightmargin", "background", "baha", "barrecouleur", "barreinteraction", "barresynchronisation", "bas", "blackrule", "blackrules", "blank", "bookmark", "bouton", "boutonmenu", "boutonsinteraction", "but", "button", "bypassblocks", "cacheblocs", "cap", "caractere", "caracteres", "champ", "changepolicebrute", "changepolicecorps", "chapter", "character", "characters", "chem", "chiffresromains", "citation", "citer", "clip", "clonechamp", "clonefield", "colonne", "color", "column", "comment", "commentaire", "comparecolorgroup", "comparegroupecouleur", "comparepalet", "comparepalette", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completenumeropage", "completeregister", "completeregistre", "composant", "composeenalinea", "concernant", "convertitnumero", "convertnumber", "copitchamp", "copyfield", "correctwhitespace", "corrigeespaceblanc", "couleur", "couleurgrise", "coupledocument", "coupledregister", "couplemarking", "couplemarquage", "couplepage", "couplepaper", "couplepapier", "coupleregister", "coupleregistre", "crlf", "currentdate", "currentheadnumber", "cutspace", "dactylographier", "dans", "dansautremarge", "dansborddroit", "dansbordgauche", "dansdroite", "dansgauche", "dansmarge", "dansmargedroite", "dansmargegauche", "date", "datecourante", "daterecommandation", "de", "decouplemarking", "decouplemarquage", "decrementenumero", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecombination", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelist", "definelogo", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetype", "definetypeface", "definetyping", "defineversion", "definicaractere", "definit", "definitaccent", "definitbloc", "definitblocsection", "definitbuffer", "definitcalque", "definitchamp", "definitchampprincipal", "definitcommande", "definitconversion", "definitcouleur", "definitdactylo", "definitdansmarge", "definitdemarrestoppe", "definitdescription", "definitdisposition", "definitenumeration", "definitenvironnementpolicecorps", "definitetiquette", "definitflottant", "definitformatreference", "definitgroupecouleur", "definithbox", "definitjeucolonne", "definitliste", "definitlisteimbriquee", "definitlistereference", "definitlogo", "definitmakeup", "definitmarquage", "definitmenuinteraction", "definitnotepdp", "definitpalette", "definitparagraphes", "definitpilechamp", "definitpolice", "definitpolicebrute", "definitpolicecorps", "definitpositiontexte", "definitprofil", "definitprogramme", "definitreference", "definitregistre", "definitregle", "definitrevetement", "definitsautdecolonne", "definitsautdepage", "definitsection", "definitsortie", "definitsouschamp", "definitstyle", "definitstylepolice", "definitsymbole", "definitsymbolefigure", "definitsynonymepolice", "definitsynonymes", "definittabulation", "definittaillepapier", "definittete", "definittexte", "definittrametableau", "definittri", "definittype", "definitvariabletexte", "definitversion", "definitvide", "demarrealignement", "demarrearriereplan", "demarreblocmarge", "demarrecitation", "demarreciter", "demarrecodage", "demarrecolonnes", "demarrecombinaison", "demarrecompoetroite", "demarrecomposant", "demarrecorrectionligne", "demarrecouleur", "demarredegroupe", "demarredocument", "demarreenvironement", "demarrefigure", "demarreglobal", "demarregroupe", "demarrejeucolonne", "demarrejeusymboles", "demarreligne", "demarreligneregleetexte", "demarrelignes", "demarrelocal", "demarremakeup", "demarremargereglee", "demarrenotespdplocales", "demarrenumerotationligne", "demarreopposition", "demarrepositionnement", "demarreproduit", "demarreprofil", "demarreprojet", "demarreraster", "demarrerevetement", "demarresynchronisation", "demarretableau", "demarretableaux", "demarretexte", "demarreversion", "demarrevuedensemble", "deplaceformule", "deplacesurgrille", "description", "determinecaracteristiqueliste", "determinecaracteristiquesregistre", "determineheadnumber", "determinelistcharacteristics", "determinenumerotete", "dimension", "disableinteractionmenu", "distancebord", "distanceborddroit", "distancebordgauche", "distanceentete", "distanceinf", "distancemarge", "distancemargedroite", "distancemargegauche", "distancepdp", "distancesup", "domicile", "echelle", "ecran", "ecritdansliste", "ecritdanslistereference", "ecritentreliste", "ecritregistre", "el", "element", "elements", "emptylines", "enumeration", "environement", "espace", "espaceblanc", "espacefixe", "espaceinf", "espacesfixes", "espacesup", "etiquette", "etiquettes", "etire", "externalfigure", "fait", "faitreference", "fichierdactylo", "field", "fieldstack", "figureexterne", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "footnote", "footnotetext", "forceblocks", "forceblocs", "fraction", "framed", "framedtext", "from", "gardeblocs", "getbuffer", "getmarking", "getnumber", "godown", "goto", "gotobox", "graycolor", "grid", "grille", "groupe", "hairline", "haut", "hauteureditionpapier", "hauteurentete", "hauteurinf", "hauteurliste", "hauteurmakeup", "hauteurpapier", "hauteurpdp", "hauteursup", "hauteurtexte", "head", "headnumber", "headsym", "headtext", "hideblocks", "high", "hl", "immediatebetweenlist", "immediatetolist", "in", "inconnu", "incrementenumero", "indentation", "indenting", "inframed", "infull", "inhibemenuinteraction", "ininner", "inleft", "inline", "inmargin", "inmframed", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inright", "installelangue", "installlanguage", "interactionbar", "interactionbuttons", "item", "items", "its", "joursemaine", "keepblocks", "labeling", "labels", "labeltext", "labeltexte", "language", "langue", "langueprincipale", "largeurbord", "largeurborddroit", "largeurbordgauche", "largeureditionpapier", "largeurligne", "largeurliste", "largeurmakeup", "largeurmarge", "largeurmargedroite", "largeurmargegauche", "largeurpapier", "largeurtexte", "leftaligned", "leg", "ligneh", "lignenoire", "ligneregleetexte", "lignesnoires", "listesymbole", "listsymbol", "llongueurliste", "loadsorts", "loadsynonyms", "logchamp", "logfields", "lohi", "low", "mainlanguage", "mapfontsize", "mar", "margereglee", "marginrule", "margintext", "marking", "markversion", "marquage", "marquageversion", "marquepage", "mathematics", "mathematique", "mediaeval", "menuinteraction", "mframed", "midaligned", "mirror", "mois", "month", "montrecadre", "montrechamps", "montrecouleur", "montredisposition", "montreedition", "montreenvironnementpolicecorps", "montrefiguresexternes", "montregrille", "montregroupecouleur", "montrejeusymboles", "montremakeup", "montrepalette", "montrepolicecorps", "montrereglages", "montrestruts", "motdroit", "motmarge", "moveongrid", "movesidefloat", "name", "navigating", "nextsection", "niveautete", "nocap", "noheaderandfooterlines", "noindenting", "nolist", "nomarking", "nombredesouspages", "nombretotaldepages", "nommacro", "nomoreblocks", "nomorefiles", "nop", "nospace", "note", "notepdp", "notopandbottomlines", "nowhitespace", "numbers", "numeroformule", "numeropage", "numeros", "numerosousformule", "numerotete", "numerotetecourant", "obtientmarquage", "oriente", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagedepth", "pagedouble", "pageoffset", "pagereference", "paragraph", "part", "pasplusdeblocs", "pasplusdefichiers", "periodes", "periods", "pilechamp", "placebookmarks", "placecombinedlist", "placecoteacote", "placefloat", "placeflottant", "placefootnotes", "placeformula", "placeformule", "placelegend", "placelegende", "placelesunsaudessusdesautres", "placelist", "placeliste", "placelisteinmbriquee", "placelistereference", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placemarquespages", "placenotespdp", "placenotespdplocales", "placenumeropage", "placenumerotete", "placeongrid", "placeontopofeachother", "placerawlist", "placereferencelist", "placeregister", "placeregistre", "placeregle", "placesidebyside", "placesousformule", "placesubformula", "placesurgrille", "placetextetete", "placevariabletexte", "position", "positionnetexte", "prendbuffer", "processblocks", "processpage", "produit", "program", "programme", "projet", "publication", "qqpart", "quotation", "quote", "ran", "raz", "razmarquage", "raznumero", "recommandation", "ref", "refait", "reference", "referencepage", "referencetexte", "referral", "referraldate", "reflete", "register", "reglealignement", "reglearrangement", "reglearriereplan", "reglearriereplans", "reglebarreinteraction", "reglebarresynchronisation", "reglebloc", "regleblocmarge", "regleblocsection", "regleboutons", "reglebuffer", "reglecapitales", "reglechamp", "reglechamps", "regleclipping", "reglecolonnes", "reglecombinaisons", "reglecommentaire", "reglecommentairepage", "reglecompoetroite", "reglecomposeenalinea", "reglecouleur", "reglecouleurs", "regledactylo", "regledansmarge", "regledemarrestoppe", "regledescriptions", "regledisposition", "regleecraninteraction", "regleecrans", "regleelements", "regleencadre", "regleentete", "regleenumerations", "regleenvironnementpolicecorps", "regleepaisseurligne", "regleespaceblanc", "regleespacement", "regleespacementinterligne", "reglefiguresexternes", "regleflottant", "regleflottants", "regleformulaires", "regleformules", "reglegroupeselements", "regleinf", "regleinteraction", "regleintitule", "regleintitules", "reglejeucolonne", "reglejeusymboles", "reglelabeltexte", "reglelangue", "reglelegende", "reglelignes", "reglelignesnoires", "reglelignesreglestexte", "regleliste", "reglelisteimbriquee", "reglelistereference", "reglemakeup", "reglemargereglee", "reglemarquage", "reglemarquagehyphenation", "reglemenuinteraction", "reglenotepdp", "reglenumero", "reglenumeropage", "reglenumerotation", "reglenumerotationligne", "reglenumerotationpage", "reglenumerotationparagraphe", "reglenumerotete", "regleoriente", "reglepalette", "reglepapier", "regleparagraphes", "reglepdp", "regleplacementopposition", "reglepolicecorps", "reglepositionnement", "reglepositiontexte", "regleprofils", "regleprogrammes", "reglepublications", "reglereferencage", "regleregistre", "regleregle", "regleremplitligne", "regleremplitlignesreglees", "reglesection", "regleseparationflottant", "reglesortie", "reglesouslignage", "reglesousnumeropage", "reglestrut", "reglesup", "reglesynchronisation", "reglesynonymes", "reglesysteme", "regletab", "regletableaux", "regletabulation", "regletaillepapier", "regletete", "regletetes", "regletexte", "regletextesentete", "regletextesinf", "regletextespdp", "regletextessup", "regletextestexte", "regletextetete", "regletolerance", "regletraitsfins", "regletransitionspage", "regletri", "regletype", "regleurl", "reglevariabletexte", "regleversions", "remplitchamp", "remplitligne", "remplitlignesreglees", "remplittexte", "reservefloat", "reset", "resetmarking", "resettextcontent", "retourarriere", "rightaligned", "romannumerals", "rotate", "sansalinea", "sansdimension", "sansespace", "sansespaceblanc", "sanslignesenteteetpdp", "sanslignessupetinf", "sansliste", "sansmarquage", "sanstest", "sauteblocs", "scale", "screen", "section", "seeregister", "selectblocks", "selectionneblocs", "selectionnepapier", "selectionneversion", "selectpaper", "selectversion", "sensunite", "separeflottant", "settext", "settextcontent", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "someline", "somewhere", "sort", "sousnumeropage", "space", "splitfloat", "startalignment", "startbackground", "startbuffer", "startcolor", "startcolumnmakeup", "startcolumns", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfloattext", "startformula", "startframedtext", "starthiding", "startinteractionmenu", "startitemgroup", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startmakeup", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startproduct", "startprofile", "startproject", "startquotation", "startregister", "startsymbolset", "startsynchronization", "starttable", "starttables", "starttabulate", "starttextrule", "starttyping", "startunpacked", "startversion", "stopalignment", "stopbackground", "stopbuffer", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcombination", "stopcomment", "stopcompoetroite", "stopcomponent", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stophiding", "stopinteractionmenu", "stopitemgroup", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppealignement", "stoppearriereplan", "stoppeblocmarge", "stoppecitation", "stoppecodage", "stoppecolonnes", "stoppecombinaison", "stoppecomposant", "stoppecorrectionligne", "stoppecouleur", "stoppedegroupe", "stoppedocument", "stoppeenvironement", "stoppeglobal", "stoppegroupe", "stoppejeucolonne", "stoppeligne", "stoppeligneregleetexte", "stoppelignes", "stoppelocal", "stoppemakeup", "stoppemargereglee", "stoppenotespdplocales", "stoppenumerotationligne", "stoppeopposition", "stoppepositionnement", "stoppeproduit", "stoppeprofil", "stoppeprojet", "stopperaster", "stopperevetement", "stoppesynchronisation", "stoppetableau", "stoppetableaux", "stoppetexte", "stoppeversion", "stoppevuedensemble", "stoppositioning", "stoppostponing", "stopproduct", "stopprofile", "stopproject", "stopquotation", "stopsymbolset", "stopsynchronization", "stoptable", "stoptables", "stoptabulate", "stoptextrule", "stoptyping", "stopunpacked", "stopversion", "stretched", "sub", "subject", "subsection", "subsubject", "subsubsection", "subsubsubject", "suggestion", "suivantprofil", "suivantversion", "suivantversionprofil", "switchtobodyfont", "sym", "symbol", "symbole", "synchronise", "synchronizationbar", "synchronize", "synonym", "tab", "tapebuffer", "testcolumn", "testpage", "tete", "tex", "textemarge", "textenotepdp", "textetete", "textreference", "textrule", "thinrule", "thinrules", "title", "titremarge", "tooltip", "traduire", "traiteblocs", "traitepage", "traitfin", "traitsfins", "translate", "txt", "typ", "type", "typebuffer", "typefile", "underbar", "underbars", "uneligne", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "utiliseJSscripts", "utiliseURL", "utiliseblocs", "utilisechemin", "utilisecommandes", "utilisedocumentexterne", "utiliseencodage", "utilisefichierexterne", "utilisefichiersexternes", "utilisefigureexterne", "utilisemodule", "utilisemodules", "utilisepsiteaudioexterne", "utilisereferences", "utilisespecialites", "utilisesymboles", "utiliseurl", "va", "vaalaboite", "vaalapage", "vaenbas", "valeurcouleur", "valeurgris", "variabletexte", "version", "vide", "vl", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister" },
+ ["it"]={ "CAP", "Cap", "Caps", "Character", "Characters", "GIORNOSETTIMANA", "Lettera", "Lettere", "MESE", "MONTH", "Numeri", "Numeriromani", "PAROLA", "PAROLE", "Parola", "Parole", "Romannumerals", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "about", "accoppiacarta", "accoppiadocumento", "accoppiamarcatura", "accoppiapagina", "accoppiaregistro", "adaptlayout", "adattacampo", "adattalayout", "al", "allineacentro", "allineadestra", "allineasinistra", "altezzacarta", "altezzacartastampa", "altezzacima", "altezzaelenco", "altezzafondo", "altezzaintestazione", "altezzamakeup", "altezzapdp", "altezzatesto", "ambiente", "ampiezzabordo", "ampiezzabordodestro", "ampiezzabordosinistro", "ampiezzacarta", "ampiezzacartastampa", "ampiezzaelenco", "ampiezzamakeup", "ampiezzamargine", "ampiezzamarginedestro", "ampiezzamarginesinistro", "ampiezzatesto", "ap", "apagina", "appendix", "arg", "at", "atleftmargin", "atpage", "atrightmargin", "background", "barracolori", "barrainterazione", "barrasincronizzazione", "bastablocchi", "bastafile", "blackrule", "blackrules", "blank", "bookmark", "but", "button", "bypassblocks", "cambiaafontdeltesto", "campi", "camporiempimento", "cap", "capello", "chapter", "character", "characters", "chem", "chim", "circondato", "citazione", "clip", "clonacampo", "clonefield", "colonna", "color", "colore", "coloregrigio", "column", "comment", "commento", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completeregister", "componenet", "confrontagruppocolori", "confrontatavolozza", "convertinumero", "convertnumber", "copiacampo", "copyfield", "correctwhitespace", "correggispaziobianco", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "cutspace", "da", "daqualcheparte", "data", "datadioggi", "datareferral", "date", "decouplemarking", "decrementnumber", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecolumnbreak", "definecombination", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinmargin", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelayer", "definelist", "definelogo", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepagebreak", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetype", "definetypeface", "definetyping", "defineversion", "definisci", "definisciaccento", "definisciambientefontdeltesto", "definisciblocco", "definiscibloccosezione", "definiscibuffer", "definiscicampo", "definiscicampoprincipale", "definiscicapoversi", "definiscicarattere", "definiscicolore", "definiscicomando", "definisciconversione", "definiscidescrizione", "definiscidimensionicarta", "definiscielenco", "definiscielencocombinato", "definiscienumerazione", "definiscietichetta", "definiscifigurasimbolo", "definiscifont", "definiscifontdeltesto", "definiscifontgrezzo", "definisciformatoriferimento", "definiscigruppocolonne", "definiscigruppocolori", "definiscihbox", "definisciincorniciato", "definisciiniziatermina", "definiscilayout", "definiscilinea", "definiscilistariferimenti", "definiscilogo", "definiscimakeup", "definiscimarcatura", "definiscimenuinterazione", "definiscimodellotabella", "definiscioggettomobile", "definisciordinamento", "definiscioutput", "definisciposizionetesto", "definisciprofilo", "definisciprogramma", "definisciregistro", "definisciriferimento", "definiscirigovuoto", "definiscisezione", "definiscisimbolo", "definiscisinonimi", "definiscisinonimofont", "definiscisottocampo", "definiscisovrapposizione", "definiscistackcampi", "definiscistile", "definiscistilefont", "definiscitabulato", "definiscitavolozza", "definiscitesta", "definiscitesto", "definiscitestoincorniciato", "definiscitype", "definiscityping", "definiscivariabiletesto", "definisciversion", "description", "determinacaratteristicheregistro", "determinacarattersticheelenco", "determinanumerotesta", "determineheadnumber", "determinelistcharacteristics", "dimensione", "disabilitamenuinterazione", "disableinteractionmenu", "distanzabordo", "distanzabordodestro", "distanzabordosinistro", "distanzacima", "distanzafondo", "distanzaintestazione", "distanzamargine", "distanzamarginedestro", "distanzamarginesinistro", "distanzapdp", "domicilio", "el", "elaborablocchi", "elaborapagina", "elementi", "elemento", "emptylines", "enumeration", "etichetta", "etichette", "externalfigure", "fatto", "field", "fieldstack", "figuraesterna", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "fondo", "footnote", "footnotetext", "forceblocks", "forzablocchi", "fraction", "framed", "framedtext", "frazione", "from", "getbuffer", "getmarking", "getnumber", "giornosettimana", "godown", "goto", "gotobox", "graycolor", "grid", "griglia", "hairline", "head", "headnumber", "headsym", "headtext", "hideblocks", "high", "hl", "ignoto", "immediatebetweenlist", "immediatetolist", "impaccato", "impostaallineamento", "impostaambientefontdeltesto", "impostaampiezzariga", "impostabarrainterazione", "impostabarrasincronizzazione", "impostablocchimargine", "impostablocco", "impostabloccosezione", "impostabuffer", "impostacampi", "impostacampo", "impostacapoversi", "impostacaption", "impostacaptions", "impostacima", "impostaclippling", "impostacolonne", "impostacolore", "impostacolori", "impostacombinazioni", "impostacommento", "impostacommentopagina", "impostadefinizionenotepdp", "impostadescrizioni", "impostadimensionicarta", "impostaelementi", "impostaelencazioni", "impostaelenco", "impostaelencocombinato", "impostaenumerazioni", "impostafigureesterne", "impostafondo", "impostafontdeltesto", "impostaforms", "impostaformule", "impostagruppocolonne", "impostaincorniciato", "impostainiziatermina", "impostainmargine", "impostainstestazione", "impostainterazione", "impostainterlinea", "impostalayout", "impostalegenda", "impostalinea", "impostalineemargine", "impostalineenere", "impostalineeriempimento", "impostalineesottili", "impostalineetesto", "impostalingua", "impostalistariferimenti", "impostamaiuscole", "impostamakeup", "impostamarcatura", "impostamenuinterazione", "impostamenzione", "impostanotepdp", "impostanumerazione", "impostanumerazionecapoversi", "impostanumerazionepagina", "impostanumerazionerighe", "impostanumeropagina", "impostanumerosottopagina", "impostanumerotesta", "impostaoggettimobili", "impostaoggettomobile", "impostaordinamento", "impostaoutput", "impostaparranging", "impostapdp", "impostapiustretto", "impostaposizionamento", "impostaposizionamentoopposti", "impostaposizionetesto", "impostaprofili", "impostaprogrammi", "impostapubblicazioni", "impostapulsanti", "impostaregistro", "impostarientro", "impostariferimento", "impostarighe", "impostarigheriempimento", "impostarigovuoto", "impostarotazione", "impostaschermi", "impostaschermointerazione", "impostasegnosillabazione", "impostasetsimboli", "impostasezione", "impostasfondi", "impostasfondo", "impostasincronizzazione", "impostasinonimi", "impostasistema", "impostasottolinea", "impostaspaziatura", "impostaspaziobianco", "impostaspezzamentooggettomobile", "impostastrut", "impostatab", "impostatabelle", "impostatabulato", "impostatavolozza", "impostatesta", "impostateste", "impostatesticima", "impostatestifondo", "impostatestiincorniciati", "impostatestiintestazioni", "impostatestipdp", "impostatesto", "impostatestoetichette", "impostatestointestazioni", "impostatestotesti", "impostatolleranza", "impostatransizionepagina", "impostatype", "impostatyping", "impostaurl", "impostavariabiletesto", "impostaversioni", "in", "inaltromargine", "incorniciato", "incrementanumero", "indentation", "indenting", "indestra", "inframed", "ininner", "iniziaallineamento", "iniziaambiente", "iniziabloccomargine", "iniziacitazione", "iniziacodifica", "iniziacolonne", "iniziacolore", "iniziacombinazione", "iniziacomponente", "iniziacorrezioneriga", "iniziadocumento", "iniziafigura", "iniziaglobale", "iniziagruppocolonne", "iniziaimpaccato", "inizialineamargine", "inizialineatesto", "inizialocale", "iniziamakeup", "inizianotepdplocali", "inizianumerazionerighe", "iniziaopposto", "iniziaoverview", "iniziapiustretto", "iniziaposizionamento", "iniziaprodotto", "iniziaprofilo", "iniziaprogetto", "iniziaraster", "iniziariga", "iniziarighe", "iniziasetsimboli", "iniziasfondo", "iniziasincronizzazione", "iniziasovrapposizione", "iniziatabella", "iniziatabelle", "iniziatesto", "iniziaunpacked", "iniziaversione", "inlatodestro", "inlatosinistro", "inleft", "inline", "inmaframed", "inmargin", "inmargine", "inmarginedestro", "inmarginesinistro", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inriga", "inright", "insinistra", "installalingua", "installlanguage", "interactionbar", "interactionbuttons", "intorno", "item", "items", "its", "keepblocks", "labeling", "labels", "labeltext", "language", "leftaligned", "leg", "lettera", "lettere", "lineamargine", "lineanera", "lineasottile", "lineatesto", "lineenere", "lineeriempimento", "lineesottili", "lingua", "linguaprincipale", "listsymbol", "livellotesta", "loadsorts", "loadsynonyms", "logcampi", "logfields", "lohi", "low", "lunghezzaelenco", "maframed", "mainlanguage", "mapfontsize", "mar", "marcatura", "marcaversione", "marginrule", "margintext", "marking", "markversion", "matematica", "mathematics", "mediaeval", "menuinterattivo", "menzione", "mese", "mettielenco", "mettielencocombinato", "mettifiancoafianco", "mettiformula", "mettiingriglia", "mettilegenda", "mettilinea", "mettiloghi", "mettinotepdp", "mettinotepdplocali", "mettinumeropagina", "mettiregistro", "mettisegnalibro", "mettisottoformula", "mettiunosullaltro", "mettivariabiletesto", "midaligned", "mirror", "month", "mostraambientefontdeltesto", "mostracampi", "mostracolore", "mostracornice", "mostrafiguresterne", "mostrafontdeltesto", "mostragriglia", "mostragruppocolori", "mostraimpostazioni", "mostralyout", "mostramakeup", "mostrasetsimboli", "mostrastampa", "mostrastruts", "mostratavolozza", "moveongrid", "movesidefloat", "name", "nascondiblocchi", "navigating", "nextsection", "nientedimensioni", "nienteelenco", "nientelineecimafondo", "nientelineintestazionepdp", "nientemarcatura", "nienterientro", "nientespazio", "nientespaziobianco", "nocap", "noheaderandfooterlines", "noindenting", "nolist", "nomarking", "nome", "nomeunita", "nomoreblocks", "nomorefiles", "nop", "nospace", "nota", "notapdp", "note", "notest", "notopandbottomlines", "nowhitespace", "numberofsubpages", "numbers", "numeri", "numeriromani", "numeroformula", "numeropagina", "numeropaginacompleto", "numerosottoformula", "numerotesta", "numerotestacorrente", "numerototaledipagine", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagedepth", "pageoffset", "pagereference", "pagina", "paragraph", "paroladestra", "parolainmargine", "part", "passaafontgrezzo", "ped", "pedap", "periods", "perlungo", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placerawlist", "placereferencelist", "placeregister", "placesidebyside", "placesubformula", "position", "posizionanumerotesta", "posizionatesto", "posizionatestotesta", "posizione", "prendibuffer", "prendimarcatura", "processblocks", "processpage", "prodotto", "progetto", "program", "programma", "pubblicazione", "publication", "pulsante", "pulsantemenu", "pulsantinterazione", "punti", "qualcheriga", "quotation", "quote", "ran", "ref", "reference", "referral", "referraldate", "referring", "register", "reimposta", "reimpostamarcatura", "reservefloat", "reset", "resetmarking", "resetnumber", "resettextcontent", "rientro", "rif", "rifai", "riferimento", "riferimentopagina", "riferimentotesto", "riflessione", "rigariempimento", "rightaligned", "rigovuoto", "romannumerals", "rotate", "ruota", "saltablocchi", "scala", "scale", "schermo", "screen", "scrividentroelenco", "scriviinelenco", "scriviinlistariferimenti", "scriviinregistro", "section", "seeregister", "segnalibro", "seguiprofilo", "seguiversione", "seguiversioneprofilo", "selectblocks", "selectpaper", "selectversion", "selezionablocchi", "selezionacarta", "selezionaversione", "separamarcatura", "setnumber", "settext", "settextcontent", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "setvariabiletesto", "sfondo", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "sim", "simbolo", "sincronizza", "someline", "somewhere", "sort", "space", "spazifissi", "spazio", "spaziobianco", "spaziocima", "spaziodietro", "spaziofisso", "spaziofondo", "spessoreriga", "spezzaoggettomobile", "splitfloat", "spostaagriglia", "spostaformula", "stackcampi", "startalignment", "startbackground", "startbuffer", "startcolor", "startcolumnmakeup", "startcolumns", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfloattext", "startformula", "startframedtext", "starthiding", "startinteractionmenu", "startitemgroup", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startmakeup", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startproduct", "startprofile", "startproject", "startquotation", "startregister", "startsymbolset", "startsynchronization", "starttable", "starttables", "starttabulate", "starttextrule", "starttyping", "startunpacked", "startversion", "stirato", "stopalignment", "stopbackground", "stopbuffer", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stophiding", "stopinteractionmenu", "stopitemgroup", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositioning", "stoppostponing", "stopproduct", "stopprofile", "stopproject", "stopquotation", "stopsymbolset", "stopsynchronization", "stoptable", "stoptables", "stoptabulate", "stoptextrule", "stoptyping", "stopunpacked", "stopversion", "stretched", "sub", "subject", "subpagenumber", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "sym", "symbol", "synchronizationbar", "synchronize", "synonym", "tab", "terminaallineamento", "terminaambiente", "terminabloccomargine", "terminacitazione", "terminacodifica", "terminacolonne", "terminacolore", "terminacombinazione", "terminacomponente", "terminacorrezioneriga", "terminadocumento", "terminaglobale", "terminagruppocolonne", "terminaimpaccato", "terminalineamargine", "terminalineatesto", "terminalocale", "terminamakeup", "terminanotepdplocali", "terminanumerazionerighe", "terminaopposto", "terminaoverview", "terminapiustretto", "terminaposizionamento", "terminaprodotto", "terminaprofili", "terminaprogetto", "terminaraster", "terminariga", "terminarighe", "terminasfondo", "terminasincronizzazione", "terminasovrapposizione", "terminatabella", "terminatabelle", "terminatesto", "terminaunpacked", "terminaversioni", "testa", "testcolumn", "testoetichetta", "testoinmargine", "testoinstestazioni", "testonotapdp", "testoriempimento", "testpage", "tex", "textreference", "textrule", "thinrule", "thinrules", "tieniblocchi", "title", "titoloinmargine", "tooltip", "traduci", "translate", "txt", "typ", "type", "typebuffer", "typefile", "underbar", "underbars", "usaJSscripts", "usaURL", "usablocco", "usacartella", "usacodifica", "usacolonnasonoraesterna", "usacomandi", "usadocumentoesterno", "usafiguraesterna", "usafileesterni", "usafileesterno", "usamoduli", "usamodulo", "usariferimenti", "usasimboli", "usaspecialita", "usaurl", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "vaia", "vaiabox", "vaiapagina", "vaigiu", "valorecolore", "valoregrigio", "variabiletesto", "version", "versione", "vl", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister" },
+ ["nl"]={ "CAP", "Cap", "Caps", "Character", "Characters", "Cijfers", "KAP", "Kap", "Kaps", "Letter", "Letters", "MAAND", "MONTH", "Romannumerals", "Romeins", "WEEKDAG", "WEEKDAY", "WOORD", "WOORDEN", "WORD", "WORDS", "Woord", "Woorden", "Word", "Words", "aantalsubpaginas", "about", "achtergrond", "adaptlayout", "appendix", "arg", "at", "atpage", "background", "bepaalkopnummer", "bepaallijstkenmerken", "bepaalregisterkenmerken", "betekenis", "binnenmargeafstand", "binnenmargebreedte", "binnenrandafstand", "binnenrandbreedte", "blackrule", "blackrules", "blank", "blanko", "blokje", "blokjes", "blokkeerinteractiemenu", "bodemwit", "bookmark", "bovenafstand", "bovenhoogte", "breuk", "buitenmargeafstand", "buitenmargebreedte", "buitenrandafstand", "buitenrandbreedte", "but", "button", "bypassblocks", "cap", "chapter", "character", "characters", "chem", "cijfers", "citaat", "citeer", "clip", "clonefield", "color", "column", "comment", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completeregister", "converteernummer", "convertnumber", "copieerveld", "copyfield", "correctwhitespace", "corrigeerwitruimte", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "date", "datum", "decouplemarking", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinteractionmenu", "definelabel", "definelist", "definelogo", "definemakeup", "definemarking", "defineoutput", "defineoverlay", "definepalet", "definepapersize", "defineparagraphs", "defineprofile", "defineprogram", "definerawfont", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetype", "definetypeface", "definetyping", "defineversion", "definieer", "definieeraccent", "definieeralineas", "definieerbeeldmerk", "definieerblanko", "definieerblok", "definieerbuffer", "definieercombinatie", "definieercommando", "definieerconversie", "definieerfiguursymbool", "definieerfont", "definieerfontstijl", "definieerfontsynoniem", "definieerhbox", "definieerhoofdveld", "definieeringesprongentext", "definieerinmarge", "definieerinteractiemenu", "definieeritemgroep", "definieerkadertekst", "definieerkarakter", "definieerkleur", "definieerkleurgroep", "definieerkolomgroep", "definieerkolomovergang", "definieerkop", "definieerkorps", "definieerkorpsomgeving", "definieerlayer", "definieerlayout", "definieerletter", "definieerlijn", "definieerlijst", "definieermarkering", "definieeromlijnd", "definieeropmaak", "definieeroverlay", "definieerpaginaovergang", "definieerpalet", "definieerpapierformaat", "definieerplaats", "definieerplaatsblok", "definieerprofiel", "definieerprogramma", "definieerreferentie", "definieerreferentieformaat", "definieerreferentielijst", "definieerregister", "definieersamengesteldelijst", "definieersectie", "definieersectieblok", "definieersorteren", "definieerstartstop", "definieersubveld", "definieersymbool", "definieersynoniemen", "definieertabelvorm", "definieertabulatie", "definieertekst", "definieertekstachtergrond", "definieertekstpositie", "definieertekstvariabele", "definieertype", "definieertypen", "definieeruitvoer", "definieerveld", "definieerveldstapel", "definieerversie", "definieerwiskundeuitlijnen", "description", "determineheadnumber", "determinelistcharacteristics", "dimensie", "directnaarlijst", "directtussenlijst", "disableinteractionmenu", "doordefinieren", "doorlabelen", "doornummeren", "dunnelijn", "dunnelijnen", "eenregel", "emptylines", "enumeration", "ergens", "externalfigure", "externfiguur", "field", "fieldstack", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "footnote", "footnotetext", "forceblocks", "forceerblokken", "formulenummer", "fraction", "framed", "framedtext", "from", "gebruikJSscripts", "gebruikURL", "gebruikXMLfilter", "gebruikblokken", "gebruikcommandos", "gebruikexterndocument", "gebruikexternefile", "gebruikexternefiles", "gebruikexternfiguur", "gebruikexterngeluidsfragment", "gebruikgebied", "gebruikmodule", "gebruikmodules", "gebruikreferenties", "gebruikspecials", "gebruiksymbolen", "gebruiktypescript", "gebruiktypescriptfile", "gebruikurl", "geenblokkenmeer", "geenbovenenonderregels", "geendimensie", "geenfilesmeer", "geenhoofdenvoetregels", "geenlijst", "geenmarkering", "geenspatie", "geentest", "geenwitruimte", "geg", "getbuffer", "getmarking", "godown", "goto", "gotobox", "graycolor", "grid", "grijskleur", "grijswaarde", "haalbuffer", "haalmarkering", "haalnummer", "haarlijn", "hairline", "handhaafblokken", "head", "headnumber", "headtext", "herhaal", "hideblocks", "high", "hl", "hoofdafstand", "hoofdhoogte", "hoofdtaal", "hoog", "huidigedatum", "huidigekopnummer", "in", "inanderemarge", "inbinnen", "inbuiten", "indentation", "indenting", "inframed", "ininner", "inleft", "inlijnd", "inline", "inlinker", "inlinkermarge", "inlinkerrand", "inmarge", "inmargin", "inothermargin", "inouter", "inrechter", "inrechtermarge", "inrechterrand", "inregel", "inright", "inspringen", "installeertaal", "installlanguage", "interactiebalk", "interactiebuttons", "interactiemenu", "interactionbar", "interactionbuttons", "invullijnen", "invulregel", "invultekst", "invulveld", "inwilijnd", "item", "items", "its", "kantlijn", "kap", "keepblocks", "kenmerk", "kenmerkdatum", "kentekstvariabeletoe", "kleur", "kleurenbalk", "kleurwaarde", "kloonveld", "kolom", "kop", "kopniveau", "kopnummer", "koppeldocument", "koppelmarkering", "koppelpagina", "koppelpapier", "koppelregister", "kopsym", "koptekst", "kopwit", "laag", "label", "labeling", "labels", "labeltekst", "labeltext", "laho", "language", "leftaligned", "leg", "legeregels", "letter", "letters", "lijndikte", "lijstbreedte", "lijsthoogte", "lijstlengte", "lijstsymbool", "linkermargeafstand", "linkermargebreedte", "linkerrandafstand", "linkerrandbreedte", "listsymbol", "loadsorts", "loadsynonyms", "logfields", "lohi", "low", "maand", "mainlanguage", "mapfontsize", "mar", "margeafstand", "margebreedte", "margetekst", "margetitel", "margewoord", "marginrule", "margintext", "markeer", "markeerversie", "marking", "markversion", "mathematics", "mediaeval", "menubutton", "midaligned", "mirror", "month", "moveongrid", "naam", "naar", "naarbox", "naarpagina", "name", "navigerend", "nextsection", "nietinspringen", "nocap", "noheaderandfooterlines", "noindenting", "nokap", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "noot", "nop", "nospace", "note", "notopandbottomlines", "nowhitespace", "numbers", "omgeving", "omlaag", "omlijnd", "onbekend", "onderafstand", "onderdeel", "onderhoogte", "ontkoppelmarkering", "op", "opelkaar", "oplinkermarge", "oppagina", "oprechtermarge", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagereference", "pagina", "paginadiepte", "paginanummer", "paginaoffset", "paginareferentie", "papierbreedte", "papierhoogte", "paragraph", "part", "paslayoutaan", "passeerblokken", "passendveld", "periods", "plaatsbeeldmerken", "plaatsbookmarks", "plaatsformule", "plaatskopnummer", "plaatskoptekst", "plaatslegenda", "plaatslijn", "plaatslijst", "plaatslijstmetsynoniemen", "plaatslokalevoetnoten", "plaatsnaastelkaar", "plaatsonderelkaar", "plaatsopgrid", "plaatspaginanummer", "plaatsplaatsblok", "plaatsreferentielijst", "plaatsregister", "plaatsruwelijst", "plaatssamengesteldelijst", "plaatssubformule", "plaatstekstvariabele", "plaatsvoetnoten", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placereferencelist", "placeregister", "placesidebyside", "placesubformula", "position", "positioneer", "positioneertekst", "printpapierbreedte", "printpapierhoogte", "processblocks", "processpage", "produkt", "program", "programma", "projekt", "publicatie", "publication", "punten", "quotation", "quote", "ran", "randafstand", "randbreedte", "rechtermargeafstand", "rechtermargebreedte", "rechterrandafstand", "rechterrandbreedte", "ref", "refereer", "reference", "referentie", "referral", "referraldate", "regellinks", "regelmidden", "regelrechts", "register", "registreervelden", "reservefloat", "reset", "resetmarkering", "resetmarking", "resetnummer", "resettekstinhoud", "resettextcontent", "rightaligned", "romannumerals", "romeins", "rooster", "rotate", "roteer", "rugwit", "scale", "schaal", "scherm", "schrijfnaarlijst", "schrijfnaarreferentielijst", "schrijfnaarregister", "schrijftussenlijst", "screen", "section", "seeregister", "selectblocks", "selecteerblokken", "selecteerpapier", "selecteerversie", "selectpaper", "selectversion", "setnummer", "settextcontent", "setupalign", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupnarrower", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "snijwit", "som", "someline", "somewhere", "sort", "space", "spatie", "spiegel", "splitfloat", "splitsplaatsblok", "startachtergrond", "startalignment", "startbackground", "startbuffer", "startcitaat", "startcodering", "startcolor", "startcolumns", "startcombinatie", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfiguur", "startfloattext", "startformula", "startframedtext", "startglobaal", "starthiding", "startinteractionmenu", "startitemgroup", "startkantlijn", "startkleur", "startkolomgroep", "startkolommen", "startkolomopmaak", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startlokaal", "startlokalevoetnoten", "startmakeup", "startmargeblok", "startmarginblock", "startmarginrule", "startnaast", "startnamemakeup", "startnarrower", "startomgeving", "startomlijnd", "startonderdeel", "startopelkaar", "startopmaak", "startopposite", "startoverlay", "startoverview", "startoverzicht", "startpacked", "startparagraph", "startpositioneren", "startpositioning", "startpostponing", "startproduct", "startprodukt", "startprofiel", "startprofile", "startproject", "startprojekt", "startquotation", "startraster", "startregel", "startregelcorrectie", "startregelnummeren", "startregels", "startregister", "startsmaller", "startsymbolset", "startsymboolset", "startsynchronisatie", "startsynchronization", "starttabel", "starttabellen", "starttable", "starttables", "starttabulate", "starttekst", "starttekstachtergrond", "starttekstlijn", "starttextrule", "starttyping", "startuitlijnen", "startunpacked", "startvanelkaar", "startversie", "startversion", "stelachtergrondenin", "stelachtergrondin", "stelalineasin", "stelantwoordgebiedin", "stelarrangerenin", "stelblankoin", "stelblokin", "stelblokjesin", "stelblokkopjein", "stelblokkopjesin", "stelbovenin", "stelboventekstenin", "stelbufferin", "stelbuttonsin", "stelciterenin", "stelclipin", "stelcombinatiesin", "stelcommentaarin", "steldoordefinierenin", "steldoornummerenin", "steldunnelijnenin", "stelexternefigurenin", "stelformulesin", "stelformulierenin", "stelhoofdin", "stelhoofdtekstenin", "stelingesprongentextin", "stelinmargein", "stelinspringenin", "stelinteractiebalkin", "stelinteractiein", "stelinteractiemenuin", "stelinteractieschermin", "stelinterliniein", "stelinvullijnenin", "stelinvulregelsin", "stelitemgroepin", "stelitemsin", "stelkadertekstenin", "stelkantlijnin", "stelkapitalenin", "stelkleurenin", "stelkleurin", "stelkolomgroepin", "stelkolomgroepregelsin", "stelkolomgroepstartin", "stelkolommenin", "stelkopin", "stelkopnummerin", "stelkoppeltekenin", "stelkoppenin", "stelkoptekstin", "stelkorpsin", "stelkorpsomgevingin", "stellabeltekstin", "stellayoutin", "stellegendain", "stellijndiktein", "stellijnin", "stellijstin", "stelmargeblokkenin", "stelmarkeringin", "stelnaastplaatsenin", "stelnummerenin", "stelnummerin", "stelomlijndin", "stelonderin", "stelonderstrepenin", "stelondertekstenin", "stelopmaakin", "stelopsommingenin", "stelpaginacommentaarin", "stelpaginanummerin", "stelpaginanummeringin", "stelpaginaovergangenin", "stelpaletin", "stelpapierformaatin", "stelpapierin", "stelparagraafnummerenin", "stelplaatsblokin", "stelplaatsblokkenin", "stelplaatsbloksplitsenin", "stelplaatsin", "stelpositionerenin", "stelprofielenin", "stelprogrammasin", "stelpublicatiesin", "stelrastersin", "stelreferentielijstin", "stelrefererenin", "stelregelnummerenin", "stelregelsin", "stelregisterin", "stelroterenin", "stelsamengesteldelijstin", "stelsectieblokin", "stelsectiein", "stelsmallerin", "stelsorterenin", "stelspatieringin", "stelstartstopin", "stelstrutin", "stelsubpaginanummerin", "stelsymboolsetin", "stelsynchronisatiebalkin", "stelsynchronisatiein", "stelsynoniemenin", "stelsysteemin", "steltaalin", "steltabellenin", "steltabin", "steltabulatiein", "steltekstachtergrondin", "steltekstin", "steltekstinhoudin", "steltekstlijnenin", "steltekstpositiein", "stelteksttekstenin", "steltekstvariabelein", "steltolerantiein", "steltypein", "steltypenin", "steluitlijnenin", "steluitvoerin", "stelurlin", "stelveldenin", "stelveldin", "stelversiesin", "stelvoetin", "stelvoetnootdefinitiein", "stelvoetnotenin", "stelvoettekstenin", "stelwiskundeuitlijnenin", "stelwitruimtein", "stopachtergrond", "stopalignment", "stopbackground", "stopbuffer", "stopcitaat", "stopcodering", "stopcolor", "stopcolumns", "stopcombinatie", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stopglobaal", "stophiding", "stopinteractionmenu", "stopitemgroup", "stopkantlijn", "stopkleur", "stopkolomgroep", "stopkolommen", "stopkolomopmaak", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stoplokaal", "stoplokalevoetnoten", "stopmakeup", "stopmargeblok", "stopmarginblock", "stopmarginrule", "stopnaast", "stopnamemakeup", "stopnarrower", "stopomgeving", "stopomlijnd", "stoponderdeel", "stopopelkaar", "stopopmaak", "stopopposite", "stopoverlay", "stopoverview", "stopoverzicht", "stoppacked", "stopparagraph", "stoppositioneren", "stoppositioning", "stoppostponing", "stopproduct", "stopprodukt", "stopprofiel", "stopprofile", "stopproject", "stopprojekt", "stopquotation", "stopraster", "stopregel", "stopregelcorrectie", "stopregelnummeren", "stopregels", "stopsmaller", "stopsymbolset", "stopsynchronisatie", "stopsynchronization", "stoptabel", "stoptabellen", "stoptable", "stoptables", "stoptabulate", "stoptekst", "stoptekstachtergrond", "stoptekstlijn", "stoptextrule", "stoptyping", "stopuitlijnen", "stopunpacked", "stopvanelkaar", "stopversie", "stopversion", "stretched", "sub", "subformulenummer", "subject", "subpaginanummer", "subsection", "subsubject", "subsubsection", "subsubsubject", "suggestie", "switchnaarkorps", "switchtobodyfont", "switchtorawfont", "sym", "symbol", "symbool", "symoffset", "synchronisatiebalk", "synchroniseer", "synchronizationbar", "synchronize", "synonym", "taal", "tab", "tekstbreedte", "teksthoogte", "tekstlijn", "tekstreferentie", "tekstvariabele", "testkolom", "testpagina", "tex", "textreference", "textrule", "thinrule", "thinrules", "title", "toelichting", "tooltip", "toonexternefiguren", "toongrid", "tooninstellingen", "toonkader", "toonkleur", "toonkleurgroep", "toonkorps", "toonkorpsomgeving", "toonlayout", "toonopmaak", "toonpalet", "toonprint", "toonstruts", "toonsymboolset", "toonvelden", "totaalaantalpaginas", "translate", "txt", "typ", "type", "typebuffer", "typefile", "uit", "uitgerekt", "underbar", "underbars", "useURL", "useblocks", "usecodering", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "vastespatie", "vastespaties", "veld", "veldstapel", "verbergblokken", "vergelijkkleurgroep", "vergelijkpalet", "verhoognummer", "verlaagnummer", "verplaatsformule", "verplaatsopgrid", "verplaatszijblok", "versie", "version", "vertaal", "verwerkblokken", "verwerkpagina", "vl", "voetafstand", "voethoogte", "voetnoot", "voetnoottekst", "volgprofiel", "volgprofielversie", "volgversie", "volledigepaginanummer", "volledigregister", "voluit", "weekdag", "weekday", "whitespace", "wilijnd", "wiskunde", "witruimte", "woonplaats", "woordrechts", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister", "zetbreedte", "zethoogte" },
+ ["pe"]={ "CAP", "Cap", "Caps", "Character", "Characters", "MONTH", "Numbers", "Romannumerals", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "about", "adaptlayout", "appendix", "at", "atpage", "background", "blackrule", "blackrules", "blank", "bookmark", "but", "button", "bypassblocks", "cap", "chapter", "character", "characters", "chem", "clip", "clonefield", "color", "column", "comment", "comparecolorgroup", "comparepalet", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completeregister", "convertnumber", "copyfield", "correctwhitespace", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "currentdate", "currentheadnumber", "date", "decouplemarking", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinteractionmenu", "definelabel", "definelist", "definelogo", "definemakeup", "definemarking", "defineoutput", "defineoverlay", "definepalet", "definepapersize", "defineparagraphs", "defineprofile", "defineprogram", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definesection", "definesectionblock", "definesorting", "definestartstop", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetype", "definetypeface", "definetyping", "defineversion", "description", "determineheadnumber", "determinelistcharacteristics", "disableinteractionmenu", "emptylines", "enumeration", "externalfigure", "field", "fieldstack", "fillinfield", "fillinline", "fillinrules", "fillintext", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "footnote", "footnotetext", "forceblocks", "fraction", "framed", "framedtext", "from", "getbuffer", "getmarking", "godown", "goto", "gotobox", "graycolor", "grid", "hairline", "head", "headnumber", "headtext", "hideblocks", "high", "hl", "in", "indentation", "indenting", "inframed", "ininner", "inleft", "inline", "inmargin", "inmframed", "inothermargin", "inouter", "inright", "installlanguage", "interactionbar", "interactionbuttons", "item", "items", "its", "keepblocks", "labeling", "labels", "labeltext", "language", "leftaligned", "listsymbol", "loadsorts", "loadsynonyms", "logfields", "lohi", "low", "mainlanguage", "mapfontsize", "mar", "marginrule", "margintext", "marking", "markversion", "mathematics", "mediaeval", "mframed", "midaligned", "mirror", "month", "moveongrid", "name", "nextsection", "nocap", "noheaderandfooterlines", "noindenting", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "nop", "nospace", "note", "notopandbottomlines", "nowhitespace", "numbers", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagereference", "paragraph", "part", "periods", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placereferencelist", "placeregister", "placesidebyside", "placesubformula", "position", "processblocks", "processpage", "program", "publication", "quotation", "quote", "ran", "ref", "reference", "referral", "referraldate", "register", "reservefloat", "reset", "resetmarking", "resettextcontent", "rightaligned", "romannumerals", "rotate", "scale", "screen", "section", "seeregister", "selectblocks", "selectpaper", "selectversion", "settextcontent", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupnarrower", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "someline", "somewhere", "sort", "space", "splitfloat", "startalignment", "startbackground", "startbuffer", "startcolor", "startcolumns", "startcombination", "startcomment", "startcomponent", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigure", "startfloattext", "startformula", "startframedtext", "starthiding", "startinteractionmenu", "startitemgroup", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startmakeup", "startmarginblock", "startmarginrule", "startnamemakeup", "startnarrower", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startproduct", "startprofile", "startproject", "startquotation", "startraster", "startregister", "startsymbolset", "startsynchronization", "starttable", "starttables", "starttabulate", "starttextrule", "starttyping", "startunpacked", "startversion", "stopalignment", "stopbackground", "stopbuffer", "stopcolor", "stopcolumns", "stopcombination", "stopcomment", "stopcomponent", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stophiding", "stopinteractionmenu", "stopitemgroup", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopnamemakeup", "stopnarrower", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositioning", "stoppostponing", "stopproduct", "stopprofile", "stopproject", "stopquotation", "stopraster", "stopsymbolset", "stopsynchronization", "stoptable", "stoptables", "stoptabulate", "stoptextrule", "stoptyping", "stopunpacked", "stopversion", "stretched", "sub", "subject", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "sym", "symbol", "synchronizationbar", "synchronize", "synonym", "tab", "tex", "textreference", "textrule", "thinrule", "thinrules", "title", "tooltip", "translate", "txt", "typ", "type", "typebuffer", "typefile", "underbar", "underbars", "useJSscripts", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "useurl", "version", "vl", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister", "آفست‌صفحه", "آیتم", "آیتمها", "آینه", "اجباربلوکها", "ارتفاع‌آرایش", "ارتفاع‌بالا", "ارتفاع‌برگ", "ارتفاع‌ته‌برگ", "ارتفاع‌خط", "ارتفاع‌سربرگ", "ارتفاع‌متن", "ارتفاع‌پایین", "از", "ازکارانداختن‌منوی‌پانل", "استفاده‌بلوکها", "استفاده‌دستخط‌تایپ", "استفاده‌رمزینه", "استفاده‌شکل‌خارجی", "استفاده‌فرمانها", "استفاده‌قطعه‌موزیک‌خارجی", "استفاده‌مدول", "استفاده‌مدولها", "استفاده‌مرجعها", "استفاده‌مسیر", "استفاده‌نمادها", "استفاده‌نوشتارخارجی", "استفاده‌ویژگیها", "استفاده‌پرونده‌خارجی", "استفاده‌پرونده‌دستخط‌تایپ", "استفاده‌پرونده‌های‌خارجی", "اعدادلاتین", "افزودن", "اما", "امتحان‌نکن", "انتخاب‌برگ", "انتخاب‌بلوکها", "انتخاب‌نسخه", "انتقال‌به‌توری", "انتقال‌فرمول", "انتقال‌کنار‌شناور", "انجام‌دوباره", "بارگذاری‌آرایش", "بارگذاری‌آیتمها", "بارگذاری‌ارجاع", "بارگذاری‌اندازه‌برگ", "بارگذاری‌باریکتر", "بارگذاری‌بافر", "بارگذاری‌بالا", "بارگذاری‌بخش", "بارگذاری‌بردباری", "بارگذاری‌برنامه‌ها", "بارگذاری‌برگ", "بارگذاری‌بست", "بارگذاری‌بلوک", "بارگذاری‌بلوکهای‌حاشیه", "بارگذاری‌بلوک‌بخش", "بارگذاری‌تایپ", "بارگذاری‌تایپ‌کردن", "بارگذاری‌تب", "بارگذاری‌ترتیب", "بارگذاری‌ترکیب‌ها", "بارگذاری‌تطابق", "بارگذاری‌تعریف‌پانوشت", "بارگذاری‌تنظیم", "بارگذاری‌تنظیم‌ریاضی", "بارگذاری‌ته‌برگ", "بارگذاری‌تورفتگی", "بارگذاری‌توضیح", "بارگذاری‌توضیح‌صفحه", "بارگذاری‌ثبت", "بارگذاری‌جانشانی", "بارگذاری‌جدولها", "بارگذاری‌جدول‌بندی", "بارگذاری‌خالی", "بارگذاری‌خروجی", "بارگذاری‌خط", "بارگذاری‌خطها", "بارگذاری‌خطهای‌حاشیه", "بارگذاری‌خطهای‌سیاه", "بارگذاری‌خطهای‌متن", "بارگذاری‌خطهای‌مجموعه‌ستون", "بارگذاری‌خطها‌ی‌نازک", "بارگذاری‌درج‌درخطها", "بارگذاری‌درج‌مخالف", "بارگذاری‌درون‌حاشیه", "بارگذاری‌دوران", "بارگذاری‌دکمه‌ها", "بارگذاری‌راهنما", "بارگذاری‌رنگ", "بارگذاری‌رنگها", "بارگذاری‌زبان", "بارگذاری‌ستونها", "بارگذاری‌سر", "بارگذاری‌سربرگ", "بارگذاری‌سرها", "بارگذاری‌سیستم", "بارگذاری‌شرح", "بارگذاری‌شرحها", "بارگذاری‌شروع‌مجموعه‌ستون", "بارگذاری‌شروع‌پایان", "بارگذاری‌شماره", "بارگذاری‌شماره‌زیرصفحه", "بارگذاری‌شماره‌سر", "بارگذاری‌شماره‌صفحه", "بارگذاری‌شماره‌گذاری", "بارگذاری‌شماره‌گذاریها", "بارگذاری‌شماره‌گذاری‌صفحه", "بارگذاری‌شماره‌گذاری‌پاراگراف", "بارگذاری‌شماره‌‌گذاری‌خط", "بارگذاری‌شناور", "بارگذاری‌شناورها", "بارگذاری‌شکافتن‌شناورها", "بارگذاری‌شکلهای‌خارجی", "بارگذاری‌طرح", "بارگذاری‌طرح‌بندی", "بارگذاری‌عرض‌خط", "بارگذاری‌فاصله‌بین‌خط", "بارگذاری‌فرمولها", "بارگذاری‌فضای‌سفید", "بارگذاری‌فضا‌گذاری", "بارگذاری‌قالبی", "بارگذاری‌قلم‌متن", "بارگذاری‌لوح", "بارگذاری‌لیست", "بارگذاری‌لیست‌ترکیبی", "بارگذاری‌لیست‌مرجع", "بارگذاری‌مترادفها", "بارگذاری‌متغیر‌متن", "بارگذاری‌متن", "بارگذاری‌متنهای‌بالا", "بارگذاری‌متن‌سر", "بارگذاری‌متن‌سربرگ", "بارگذاری‌متن‌قالبی", "بارگذاری‌متن‌متنها", "بارگذاری‌متن‌پانوشت", "بارگذاری‌متن‌پایین", "بارگذاری‌مجموعه‌ستون", "بارگذاری‌مجموعه‌نماد", "بارگذاری‌محیط‌قلم‌متن", "بارگذاری‌منوی‌پانل", "بارگذاری‌مکان‌متن", "بارگذاری‌مکان‌گذاری", "بارگذاری‌میدان", "بارگذاری‌میدانها", "بارگذاری‌میله‌تطابق", "بارگذاری‌میله‌زیر", "بارگذاری‌میله‌پانل", "بارگذاری‌نسخه‌ها", "بارگذاری‌نشانه‌شکستن", "بارگذاری‌نشانه‌گذاری", "بارگذاری‌نشرها", "بارگذاری‌نقل", "بارگذاری‌پاراگرافها", "بارگذاری‌پانل", "بارگذاری‌پانوشتها", "بارگذاری‌پایین", "بارگذاری‌پرده‌ها", "بارگذاری‌پرده‌پانل", "بارگذاری‌پروفایلها", "بارگذاری‌پرکردن‌خطها", "بارگذاری‌پس‌زمینه", "بارگذاری‌پس‌زمینه‌ها", "بارگذاری‌چیدن", "بارگذاری‌گذارصفحه", "بارگذاری‌گروههای‌آیتم", "بارگذاری‌گروه‌آیتم", "بازنشانی", "بازنشانی‌شماره", "بازنشانی‌متن", "بازنشانی‌نشانه‌گذاری", "باگذاری‌متن‌برچسب", "بدون‌بعد", "بدون‌بلوکهای‌بیشتر", "بدون‌تورفتگی", "بدون‌خط‌بالاوپایین", "بدون‌خط‌سروته‌برگ", "بدون‌فایلهای‌بیشتر", "بدون‌فضا", "بدون‌فضای‌سفید", "بدون‌لیست", "بدون‌نشانه‌گذاری", "برنامه", "بروبه", "بروبه‌جعبه", "بروبه‌صفحه", "بروپایین", "برچسب", "برچسبها", "بعد", "بلند", "بلوکهای‌پردازش", "بلوکها‌پنهان", "بنویس‌بین‌لیست", "بنویس‌درثبت", "بنویس‌درلیست‌مرجع", "بنویس‌در‌لیست", "تاریخ", "تاریخ‌جاری", "تاریخ‌رجوع", "تایپ", "تایپ‌بافر", "تایپ‌پرونده", "تب", "ترجمه", "تطابق", "تعریف", "تعریف‌آرایش", "تعریف‌آرم", "تعریف‌الگوی‌جدول", "تعریف‌اندازه‌برگ", "تعریف‌بافر", "تعریف‌بخش", "تعریف‌برنامه", "تعریف‌برچسب", "تعریف‌بلوک", "تعریف‌بلوک‌بخش", "تعریف‌تایپ", "تعریف‌تایپ‌کردن", "تعریف‌تبدیل", "تعریف‌ترتیب", "تعریف‌ترکیب", "تعریف‌تنظیم‌ریاضی", "تعریف‌توده‌میدان", "تعریف‌ثبت", "تعریف‌جانشانی", "تعریف‌جدول‌بندی", "تعریف‌جعبه‌‌افقی", "تعریف‌حرف", "تعریف‌خالی", "تعریف‌خروجی", "تعریف‌خط‌حائل", "تعریف‌درون‌حاشیه", "تعریف‌رنگ", "تعریف‌زیرمیدان", "تعریف‌سبک", "تعریف‌سبک‌قلم", "تعریف‌سر", "تعریف‌شرح", "تعریف‌شروع‌پایان", "تعریف‌شماره‌بندی", "تعریف‌شمایل‌مرجع", "تعریف‌شناور", "تعریف‌شکستن‌ستون", "تعریف‌شکست‌صفحه", "تعریف‌طرح‌بندی", "تعریف‌فرمان", "تعریف‌قالبی", "تعریف‌قلم", "تعریف‌قلم‌خام", "تعریف‌قلم‌متن", "تعریف‌لایه", "تعریف‌لهجه", "تعریف‌لوح", "تعریف‌لیست", "تعریف‌لیست‌ترکیبی", "تعریف‌لیست‌مرجع", "تعریف‌مترادفها", "تعریف‌مترادف‌قلم", "تعریف‌متغیرمتن", "تعریف‌متن", "تعریف‌متن‌قالبی", "تعریف‌مجموعه‌ستون", "تعریف‌محیط‌قلم‌بدنه", "تعریف‌مرجع", "تعریف‌منوی‌پانل", "تعریف‌مکان‌متن", "تعریف‌میدان", "تعریف‌میدان‌اصلی", "تعریف‌نسخه", "تعریف‌نشانه‌گذاری", "تعریف‌نماد", "تعریف‌نمادشکل", "تعریف‌پاراگرافها", "تعریف‌پروفایل", "تعریف‌پوشش", "تعریف‌گروه‌آیتم", "تعریف‌گروه‌رنگ", "تعیین‌شماره", "تعیین‌شماره‌سر", "تعیین‌متغیر‌متن", "تعیین‌محتوای‌متن", "تعیین‌مشخصات‌ثبت", "تعیین‌مشخصات‌لیست", "تغییربه‌قلم‌بدنه", "تغییربه‌قلم‌خام", "تنظیم‌راست", "تنظیم‌طرح‌بندی", "تنظیم‌وسط", "توجه", "تورفتگی", "توری", "تولید", "تک", "ثبت‌زوج", "ثبت‌کامل", "جداسازی‌نشانه‌گذاری", "حاش", "حرف", "حرفها", "حفظ‌بلوکها", "حقیقت", "خالی", "خطهای‌سیاه", "خطهای‌نازک", "خطها‌خالی", "خط‌حاشیه", "خط‌سیاه", "خط‌متن", "خط‌مو", "خط‌نازک", "خ‌ا", "خ‌ع", "در", "درج‌آرمها", "درج‌ثبت", "درج‌خط", "درج‌درخط", "درج‌درخطها", "درج‌درمتن", "درج‌درمیدان", "درج‌در‌بالای‌یکدیگر", "درج‌در‌توری", "درج‌راهنما", "درج‌زیرفرمول", "درج‌شماره‌سر", "درج‌شماره‌صفحه", "درج‌شناور", "درج‌فرمول", "درج‌لیست", "درج‌لیست‌خام", "درج‌لیست‌مختلط", "درج‌لیست‌مرجع", "درج‌متغیرمتن", "درج‌متن‌سر", "درج‌پانوشتها", "درج‌پانوشتهای‌موضعی", "درج‌چوب‌خط", "درج‌کنار‌به‌کنار", "درحاشیه", "درحاشیه‌دیگر", "درحاشیه‌راست", "درحاشیه‌چپ", "درخارجی", "درخط", "درداخلی", "درراست", "درصفحه", "درقالبی", "درلبه‌راست", "درلبه‌چپ", "درمورد", "درون", "درپر", "درچپ", "دریافت‌بافر", "دریافت‌شماره", "دریافت‌نشانه", "دوران", "دکمه", "دکمه‌منو", "دکمه‌پانل", "رج", "رجوع", "رنگ", "رنگ‌خاکستری", "روزهفته", "ریاضی", "زبان", "زبان‌اصلی", "ستون", "ستون‌امتحان", "سر", "سرپوش‌کوچک‌نه", "شروع‌آرایش", "شروع‌آرایش‌ستون", "شروع‌باریکتر", "شروع‌بازبینی", "شروع‌بلوک‌حاشیه", "شروع‌ترکیب", "شروع‌تصحیح‌خط", "شروع‌تطابق", "شروع‌تنظیم", "شروع‌تولید", "شروع‌جدول", "شروع‌جدولها", "شروع‌خط", "شروع‌خطها", "شروع‌خط‌حاشیه", "شروع‌خط‌متن", "شروع‌رنگ", "شروع‌ستونها", "شروع‌سراسری", "شروع‌شماره‌گذاری‌خط", "شروع‌شکل", "شروع‌غیر‌فشرده", "شروع‌فشرده", "شروع‌متن", "شروع‌مجموعه‌ستون", "شروع‌مجموعه‌نماد", "شروع‌محیط", "شروع‌مخالف", "شروع‌موضعی", "شروع‌مولفه", "شروع‌مکان‌گذاری", "شروع‌نسخه", "شروع‌نقل‌قول", "شروع‌نوشتار", "شروع‌پانوشتهای‌موضعی", "شروع‌پروفایل", "شروع‌پروژه", "شروع‌پس‌زمینه", "شروع‌پوشش", "شروع‌کد", "شماره‌افزایش", "شماره‌زیرصفحه", "شماره‌زیرفرمول", "شماره‌سر", "شماره‌سرجاری", "شماره‌صفحه", "شماره‌صفحه‌کامل", "شماره‌فرمول", "شماره‌مبدل", "شماره‌ها", "شماره‌کاهش", "شماره‌کل‌صفحه‌ها", "شکافتن‌شناور", "شکل‌خارجی", "صفحه", "صفحه‌تست", "صفحه‌زوج", "صفحه‌پردازش", "طول‌لیست", "عبوربلوکها", "عرض‌آرایش", "عرض‌برگ", "عرض‌حاشیه", "عرض‌حاشیه‌خارجی", "عرض‌حاشیه‌داخلی", "عرض‌حاشیه‌راست", "عرض‌حاشیه‌چپ", "عرض‌خط", "عرض‌لبه", "عرض‌لبه‌خارجی", "عرض‌لبه‌داخلی", "عرض‌لبه‌راست", "عرض‌لبه‌چپ", "عرض‌لیست", "عرض‌متن", "عمق‌صفحه", "عنوان‌حاشیه", "فاصله‌بالا", "فاصله‌ته‌برگ", "فاصله‌حاشیه", "فاصله‌حاشیه‌خارجی", "فاصله‌حاشیه‌داخلی", "فاصله‌حاشیه‌راست", "فاصله‌حاشیه‌چپ", "فاصله‌سربرگ", "فاصله‌لبه", "فاصله‌لبه‌خارجی", "فاصله‌لبه‌داخلی", "فاصله‌لبه‌راست", "فاصله‌لبه‌چپ", "فاصله‌پایین", "فاصله‌پشت", "فشرده", "فضا", "فضاهای‌ثابت", "فضای‌بالا", "فضای‌برش", "فضای‌ثابت", "فضای‌سفید", "فضای‌سفیدصحیح", "فضای‌پایین", "فوری‌به‌لیست", "فوری‌بین‌لیست", "قالبی", "لوح‌مقایسه", "ماه", "متغیر متن", "متن‌برچسب", "متن‌حاشیه", "متن‌سر", "متن‌پانوشت", "محیط", "مراجعه", "مرجع", "مرجع‌صفحه", "مرجع‌متن", "مرحله‌سر", "مسکن", "معنی‌واحد", "مقایسه‌گروه‌رنگ", "مقدارخاکستری", "مقداررنگ", "مقیاس", "منفی", "منوی‌پانل", "مولفه", "مکان", "مکان‌متن", "میدان", "میدانهای‌گزارش", "میدان‌شبیه‌سازی", "میدان‌پشته", "میدان‌کپی", "میله‌تطابق", "میله‌رنگ", "میله‌پانل", "ناشناس", "نام‌ماکرو", "نسخه", "نسخه‌نشانه", "نشانه‌گذاری", "نشانه‌گذاری‌زوج", "نشر", "نصب‌زبان", "نقطه‌ها", "نقل", "نقل‌قول", "نم", "نماد", "نمادسر", "نمادلیست", "نمایش‌آرایش", "نمایش‌بارگذاریها", "نمایش‌بستها", "نمایش‌توری", "نمایش‌رنگ", "نمایش‌شکلهای‌خارجی", "نمایش‌طرح‌بندی", "نمایش‌قالب", "نمایش‌قلم‌بدنه", "نمایش‌لوح", "نمایش‌مجموعه‌علامت", "نمایش‌محیط‌قلم‌بدنه", "نمایش‌میدانها", "نمایش‌چاپ", "نمایش‌گروه‌رنگ", "نوشتارزوج", "هدایت", "پا", "پابا", "پانوشت", "پایان‌آرایش", "پایان‌آرایش‌ستون", "پایان‌بازبینی", "پایان‌بلوک‌حاشیه", "پایان‌ترکیب", "پایان‌تصحیح‌خط", "پایان‌تطابق", "پایان‌تنظیم", "پایان‌تولید", "پایان‌جدول", "پایان‌جدولها", "پایان‌خط", "پایان‌خطها", "پایان‌خط‌حاشیه", "پایان‌خط‌متن", "پایان‌رنگ", "پایان‌ستونها", "پایان‌سراسری", "پایان‌شماره‌گذاری‌خط", "پایان‌غیرفشرده", "پایان‌فشرده", "پایان‌متن", "پایان‌مجموعه‌ستون", "پایان‌محیط", "پایان‌مخالف", "پایان‌موضعی", "پایان‌مولفه", "پایان‌مکان‌گذاری", "پایان‌نازکتر", "پایان‌نسخه", "پایان‌نقل‌قول", "پایان‌نوشتار", "پایان‌پانوشتهای‌موضعی", "پایان‌پروفایل", "پایان‌پروژه", "پایان‌پس‌زمینه", "پایان‌پوشش", "پایان‌کد", "پایین", "پرده", "پروژه", "پرکردن‌میدان", "پس‌زمینه", "پیروی‌نسخه", "پیروی‌نسخه‌پروفایل", "پیروی‌پروفایل", "چاپ‌ارتفاع‌برگ", "چاپ‌عرض‌برگ", "چوبخط", "چپ‌چین", "کاغذزوج", "کسر", "کشیده", "کلمه‌حاشیه", "کلمه‌راست", "گیره", "یادداشت", "یک‌جا", "یک‌خط" },
+ ["ro"]={ "CAP", "CUVANT", "CUVINTE", "Cap", "Caps", "Character", "Characters", "Cuvant", "Cuvinte", "KAP", "Kap", "Kaps", "LUNA", "Litera", "Litere", "MONTH", "Numere", "Numereromane", "Romannumerals", "WEEKDAY", "WORD", "WORDS", "Word", "Words", "ZIDINSAPTAMANA", "about", "adapteazaaspect", "adaptlayout", "adubuffer", "adumarcaje", "afiseazaaspect", "afiseazacampuri", "afiseazaculoare", "afiseazafiguriexterne", "afiseazafonttext", "afiseazagrid", "afiseazagrupculoare", "afiseazamakeup", "afiseazamediufonttext", "afiseazapaleta", "afiseazarama", "afiseazasetari", "afiseazasetsimboluri", "afiseazastruts", "afiseazatiparire", "aliniat", "aliniatcentru", "aliniatdreapta", "aliniatstanga", "appendix", "arg", "ascundeblocuri", "at", "atleftmargin", "atpage", "atrightmargin", "background", "baraculoare", "barainteractiune", "barasincronizare", "blackrule", "blackrules", "blanc", "blank", "bookmark", "but", "butoaneinteractiune", "buton", "butonmeniu", "button", "bypassblocks", "camp", "campumplere", "cap", "chapter", "character", "characters", "chem", "citat", "clip", "cloneazacamp", "clonefield", "coloana", "color", "column", "comment", "comparagrupculoare", "comparapaleta", "comparecolorgroup", "comparepalet", "completeazanumarpagina", "completecombinedlist", "completelistoffloats", "completelistofsorts", "completelistofsynonyms", "completeregister", "componenta", "convertestenumar", "convertnumber", "copiazacamp", "copyfield", "corecteazaspatiualb", "correctwhitespace", "coupledocument", "coupledregister", "couplemarking", "couplepage", "couplepaper", "coupleregister", "crlf", "culoare", "culoaregri", "cupleazadocument", "cupleazamarcaje", "cupleazaregistru", "currentdate", "currentheadnumber", "cutspace", "cuvantdreapta", "cuvantmarginal", "data", "datacurenta", "datareferit", "date", "decouplemarking", "decrementnumber", "decupleazamarcaje", "define", "defineblank", "defineblock", "definebodyfont", "definebodyfontDEF", "definebodyfontREF", "definebodyfontenvironment", "definebuffer", "definecolor", "definecolorgroup", "definecolumnbreak", "definecolumnset", "definecombination", "definecombinedlist", "defineconversion", "definedescription", "definedfont", "defineenumeration", "definefield", "definefieldstack", "definefiguresymbol", "definefloat", "definefont", "definefontfeature", "definefonthandling", "definefontsynonym", "defineframed", "defineframedtext", "definehead", "defineindentedtext", "defineinmargin", "defineinteractionmenu", "defineitemgroup", "definelabel", "definelayer", "definelayout", "definelist", "definelogo", "definemakeup", "definemarking", "definemathalignment", "defineoutput", "defineoverlay", "definepagebreak", "definepalet", "definepapersize", "defineparagraphs", "defineplacement", "defineprofile", "defineprogram", "definereference", "definereferenceformat", "definereferencelist", "defineregister", "definesection", "definesectionblock", "definesorting", "definestartstop", "defineste", "definesteaccent", "definesteantet", "definesteblanc", "definestebloc", "definesteblocsectiune", "definestebuffer", "definestecamp", "definestecampprincipal", "definestecaracter", "definestecomanda", "definesteconversie", "definesteculoare", "definestedescriere", "definestedimensiunehartie", "definesteenumerare", "definesteeticheta", "definestefloat", "definestefont", "definestefontraw", "definestefonttext", "definesteformatreferinte", "definestegrupculori", "definestehbox", "definesteinconjurare", "definestelista", "definestelistacombinata", "definestelistareferinte", "definestelogo", "definestemakeup", "definestemarcaje", "definestemediulfonttext", "definestemeniuinteractiune", "definesteoutput", "definesteoverlay", "definestepaleta", "definesteparagraf", "definestepozitietext", "definesteprofil", "definesteprogram", "definestereferinte", "definesteregistru", "definesterigla", "definestesablontabel", "definestesectiune", "definestesimbol", "definestesimbolfigura", "definestesinonim", "definestesinonimfont", "definestesortare", "definestestartstop", "definestestil", "definestestilfont", "definestestivacampuri", "definestesubcamp", "definestetabulatori", "definestetext", "definestetexteinconjurate", "definestetextinconjurat", "definestetyping", "definestevariabilatext", "definesteversiune", "definesubfield", "definesymbol", "definesynonyms", "definetabletemplate", "definetabulate", "definetext", "definetype", "definetypeface", "definetyping", "defineversion", "description", "despre", "determinacaracteristicilelistei", "determinacaracteristiciregistru", "determinanumartitlu", "determineheadnumber", "determinelistcharacteristics", "dezactiveazameniuinteractiune", "dimensiune", "din", "disableinteractionmenu", "distantaantet", "distantacolt", "distantacoltdreapta", "distantacoltstanga", "distantajos", "distantamargine", "distantamarginedreapta", "distantamarginestanga", "distantasubsol", "distantasus", "domiciliu", "dute", "dutebox", "dutepagina", "ecran", "el", "element", "emptylines", "enumeration", "eticheta", "etichete", "externalfigure", "fact", "faraaliniat", "faradimensiune", "farafisiere", "faraliniiantetsisubsol", "faraliniisussijos", "faralista", "faramarcaje", "faraspatiu", "faraspatiualb", "field", "fieldstack", "figuraexterna", "fillinfield", "fillinline", "fillinrules", "fillintext", "firdepar", "fitfield", "fixedspaces", "followprofile", "followprofileversion", "followversion", "folosesteURL", "folosestebloc", "folosestecodificarea", "folosestecomenzi", "folosestedirector", "folosestedocumentextern", "folosestefiguraexterna", "folosestefisiereexterne", "folosestefisierextern", "folosestemodul", "folosestemodule", "folosestemuzicaexterna", "folosestereferinte", "folosestescriptJS", "folosestesimboluri", "folosestespeciale", "folosesteurl", "footnote", "footnotetext", "forceblocks", "forteazablocuri", "fractie", "fraction", "framed", "framedtext", "from", "fundal", "gatablocuri", "getbuffer", "getmarking", "getnumber", "godown", "goto", "gotobox", "graycolor", "grid", "grosimelinie", "hairline", "hartiedubla", "head", "headnumber", "headsym", "headtext", "hideblocks", "high", "hl", "immediatebetweenlist", "immediatetolist", "impachetat", "impartefloat", "in", "inalt", "inaltamargine", "inaltimeantet", "inaltimehartie", "inaltimehartieimprimanta", "inaltimejos", "inaltimelista", "inaltimemakeup", "inaltimesubsol", "inaltimesus", "inaltimetext", "indentation", "indenting", "indreapta", "inframed", "ininner", "injos", "inleft", "inline", "inlinie", "inmaframed", "inmargin", "inmargineadreapta", "inmargineastanga", "inneredgedistance", "inneredgewidth", "innermargindistance", "innermarginwidth", "inothermargin", "inouter", "inparteadreapta", "inparteastanga", "inright", "instalarelimba", "installlanguage", "instanga", "interactionbar", "interactionbuttons", "intins", "item", "items", "its", "jos", "jossus", "kap", "keepblocks", "la", "labeling", "labels", "labeltext", "language", "lapagina", "latimecoltdreapta", "latimecoltstanga", "latimecolturi", "latimehartie", "latimehartieimprimanta", "latimelista", "latimemakeup", "latimemargine", "latimemarginedreapta", "latimemarginestanga", "latimetext", "leftaligned", "leg", "limba", "limbaprincipala", "liniemargine", "linieneagra", "liniesubtire", "linieumplere", "liniinegre", "liniisubtiri", "listsymbol", "litera", "litere", "loadsorts", "loadsynonyms", "logcampuri", "logfields", "lohi", "low", "luna", "lungimelista", "maframed", "mainlanguage", "mapfontsize", "mar", "marcaje", "marcheazaversiune", "marginal", "marginrule", "margintext", "marking", "markversion", "matematica", "mathematics", "mediaeval", "mediu", "meniuinteractiune", "midaligned", "minicitat", "mirror", "month", "moveformula", "moveongrid", "movesidefloat", "mutapegrid", "name", "navigating", "necunoscut", "nextsection", "niveltitlu", "nocap", "noheaderandfooterlines", "noindenting", "nokap", "nolist", "nomarking", "nomoreblocks", "nomorefiles", "nop", "nospace", "nota", "notasubsol", "note", "notopandbottomlines", "nowhitespace", "numarformula", "numarincrement", "numarpagina", "numarsubformula", "numartitlu", "numartitlucurent", "numartotalpagini", "numberofsubpages", "numbers", "nume", "numere", "numereromane", "numeunitate", "nutesta", "olinie", "outeredgedistance", "outeredgewidth", "outermargindistance", "outermarginwidth", "overbar", "overbars", "overstrike", "overstrikes", "packed", "page", "pagedepth", "pageoffset", "pagereference", "pagina", "paginadubla", "paragraph", "part", "pastreazablocuri", "pelung", "periods", "placebookmarks", "placecombinedlist", "placefloat", "placefootnotes", "placeformula", "placeheadnumber", "placeheadtext", "placelegend", "placelist", "placelistoffloats", "placelistofsorts", "placelistofsynonyms", "placelocalfootnotes", "placelogos", "placeongrid", "placeontopofeachother", "placerawlist", "placereferencelist", "placeregister", "placesidebyside", "placesubformula", "plaseazapegrid", "plaseazasemnecarte", "position", "potrivestecamp", "pozitie", "pozitietext", "proceseazabloc", "proceseazapagina", "processblocks", "processpage", "produs", "program", "proiect", "publicatie", "publication", "puncte", "punedeasuprafiecareia", "punefatainfata", "puneformula", "punelegenda", "punelista", "punelistacombinata", "punelogouri", "punenotesubsol", "punenotesubsollocale", "punenumarpagina", "puneregistru", "punerigla", "punesubformula", "punevariabilatext", "quotation", "quote", "ran", "ref", "refa", "reference", "referinta", "referintapagina", "referintatext", "referit", "referral", "referraldate", "referring", "reflexie", "register", "remarca", "reservefloat", "reset", "reseteazamarcaje", "resetmarking", "resetnumber", "resettextcontent", "rightaligned", "riglatext", "rigleumplere", "romannumerals", "rotate", "roteste", "saripesteblocuri", "scala", "scale", "screen", "scriebuffer", "scrieinlista", "scrieinlistareferinte", "scrieinregistru", "scrieintreliste", "section", "seeregister", "selectblocks", "selecteazablocuri", "selecteazahartie", "selecteazaversiune", "selectpaper", "selectversion", "semncarte", "setarebarasincronizare", "setareitemization", "setarelimba", "setareoutput", "setarepozitie", "setaresincronizare", "seteazaaliniat", "seteazaalinierea", "seteazaantet", "seteazaaranjareapag", "seteazaaspect", "seteazabarainteractiune", "seteazablanc", "seteazabloc", "seteazablocsectiune", "seteazablocurimarginale", "seteazabuffer", "seteazabutoane", "seteazacamp", "seteazacampuri", "seteazaclipping", "seteazacoloane", "seteazacombinari", "seteazacomentariu", "seteazacomentariupagina", "seteazaculoare", "seteazaculori", "seteazadefinireanotasubsol", "seteazadescriere", "seteazadimensiunihartie", "seteazaecrane", "seteazaecraninteractiune", "seteazaelemente", "seteazaenumerare", "seteazafiguriexterne", "seteazafloat", "seteazafloats", "seteazafonttext", "seteazaformulare", "seteazaformule", "seteazafundal", "seteazafundaluri", "seteazagrosimelinie", "seteazaimpartireafloat", "seteazainconjurat", "seteazaingust", "seteazainteractiunea", "seteazajos", "seteazalegenda", "seteazalegendele", "seteazaliniesilabe", "seteazaliniesubtire", "seteazalinii", "seteazaliniimargine", "seteazaliniinegre", "seteazaliniiumplere", "seteazalista", "seteazalistacombinata", "seteazalistareferinte", "seteazamajuscule", "seteazamakeup", "seteazamarcaje", "seteazamarginal", "seteazamediulfonttext", "seteazameniuinteractiune", "seteazaminicitat", "seteazanotasubsol", "seteazanumarpagina", "seteazanumarsubpagina", "seteazanumartitlu", "seteazanumerotare", "seteazanumerotarelinii", "seteazanumerotarepagina", "seteazanumerotareparagrafe", "seteazapaleta", "seteazaparagrafe", "seteazaplasareaopozita", "seteazapozitietext", "seteazaprofile", "seteazaprograme", "seteazapublicatii", "seteazareferinte", "seteazaregistru", "seteazarigla", "seteazarigletext", "seteazarigleumplere", "seteazarotare", "seteazasectiune", "seteazasimbol", "seteazasinonime", "seteazasistem", "seteazasortare", "seteazaspatiu", "seteazaspatiualb", "seteazaspatiuinterliniar", "seteazastrut", "seteazasublinie", "seteazasubsol", "seteazasus", "seteazatab", "seteazatabele", "seteazatabulatori", "seteazatext", "seteazatexteantet", "seteazatextejos", "seteazatextesubsol", "seteazatextesus", "seteazatextetext", "seteazatexteticheta", "seteazatexttitlu", "seteazatitlu", "seteazatitluri", "seteazatoleranta", "seteazatranzitiepagina", "seteazatype", "seteazatyping", "seteazaurl", "seteazavariabilatext", "seteazaversiuni", "setnumber", "settextcontent", "setupalign", "setupanswerarea", "setuparranging", "setupbackground", "setupbackgrounds", "setupblackrules", "setupblank", "setupblock", "setupbodyfont", "setupbodyfontenvironment", "setupbottom", "setupbottomtexts", "setupbuffer", "setupbuttons", "setupcapitals", "setupcaption", "setupcaptions", "setupclipping", "setupcolor", "setupcolors", "setupcolumns", "setupcolumnset", "setupcolumnsetlines", "setupcolumnsetstart", "setupcombinations", "setupcombinedlist", "setupcomment", "setupdescriptions", "setupenumerations", "setupexternalfigures", "setupfield", "setupfields", "setupfillinlines", "setupfillinrules", "setupfloat", "setupfloats", "setupfloatsplitting", "setupfonthandling", "setupfontsynonym", "setupfooter", "setupfootertexts", "setupfootnotedefinition", "setupfootnotes", "setupforms", "setupformulas", "setupframed", "setupframedtexts", "setuphead", "setupheader", "setupheadertexts", "setupheadnumber", "setupheads", "setupheadtext", "setuphyphenmark", "setupindentedtext", "setupindenting", "setupinmargin", "setupinteraction", "setupinteractionbar", "setupinteractionmenu", "setupinteractionscreen", "setupinterlinespace", "setupinterlinespace2", "setupitemgroup", "setupitems", "setuplabeltext", "setuplanguage", "setuplayout", "setuplegend", "setuplinenumbering", "setuplines", "setuplinewidth", "setuplist", "setuplistalternative", "setupmakeup", "setupmarginblocks", "setupmarginrules", "setupmarking", "setupmathalignment", "setupnarrower", "setupnumber", "setupnumbering", "setupoppositeplacing", "setupoutput", "setuppagenumber", "setuppagenumbering", "setuppagetransitions", "setuppalet", "setuppaper", "setuppapersize", "setupparagraphnumbering", "setupparagraphs", "setupplacement", "setuppositioning", "setupprofiles", "setupprograms", "setuppublications", "setupquote", "setupreferencelist", "setupreferencing", "setupregister", "setuprotate", "setupscreens", "setupsection", "setupsectionblock", "setupsorting", "setupspacing", "setupstartstop", "setupstrut", "setupsubpagenumber", "setupsymbolset", "setupsynchronization", "setupsynchronizationbar", "setupsynonyms", "setupsystem", "setuptab", "setuptables", "setuptabulate", "setuptext", "setuptextrules", "setuptexttexts", "setupthinrules", "setuptolerance", "setuptop", "setuptoptexts", "setuptype", "setuptyping", "setupunderbar", "setupurl", "setupversions", "setupwhitespace", "setvariabilatext", "showbodyfont", "showbodyfontenvironment", "showcolor", "showcolorgroup", "showexternalfigures", "showfields", "showframe", "showgrid", "showlayout", "showmakeup", "showpalet", "showprint", "showsetups", "showstruts", "showsymbolset", "sim", "simbol", "sincronizeaza", "someline", "somewhere", "sort", "space", "spatiifixate", "spatiu", "spatiualb", "spatiufixat", "spatiujos", "spatiuspate", "spatiusus", "splitfloat", "startalignment", "startaliniere", "startbackground", "startblocmarginal", "startbuffer", "startcitat", "startcodificare", "startcoloane", "startcolor", "startcolumnmakeup", "startcolumns", "startcolumnset", "startcombinare", "startcombination", "startcomment", "startcomponent", "startcomponenta", "startcorectielinie", "startculoare", "startdescription", "startdocument", "startenumeration", "startenvironment", "startfact", "startfigura", "startfigure", "startfloattext", "startformula", "startframedtext", "startfundal", "startglobal", "starthiding", "startimpachetat", "startingust", "startinteractionmenu", "startitemgroup", "startlegend", "startline", "startlinecorrection", "startlinenumbering", "startlines", "startlinie", "startliniemargine", "startlinii", "startlocal", "startlocalenvironment", "startlocalfootnotes", "startmakeup", "startmarginblock", "startmarginrule", "startmediu", "startnamemakeup", "startnarrower", "startneimpachetat", "startnotesubsollocale", "startnumerotarelinii", "startopozit", "startopposite", "startoverlay", "startoverview", "startpacked", "startparagraph", "startpositioning", "startpostponing", "startpozitionare", "startproduct", "startprodus", "startprofil", "startprofile", "startproiect", "startproject", "startquotation", "startraster", "startregister", "startriglatext", "startsetsimboluri", "startsincronizare", "startsymbolset", "startsynchronization", "starttabel", "starttabele", "starttable", "starttables", "starttabulate", "starttext", "starttextrule", "starttyping", "startunpacked", "startversion", "startversiune", "stivacampuri", "stopalignment", "stopaliniere", "stopbackground", "stopblobal", "stopblocmarginal", "stopbuffer", "stopcitat", "stopcodificare", "stopcoloane", "stopcolor", "stopcolumnmakeup", "stopcolumns", "stopcolumnset", "stopcombinare", "stopcombination", "stopcomment", "stopcomponent", "stopcomponenta", "stopcorectielinie", "stopculoare", "stopdescription", "stopdocument", "stopenumeration", "stopenvironment", "stopfact", "stopfigure", "stopfloattext", "stopformula", "stopframedtext", "stopfundal", "stophiding", "stopimpachetat", "stopingust", "stopinteractionmenu", "stopitemgroup", "stoplegend", "stopline", "stoplinecorrection", "stoplinenumbering", "stoplines", "stoplinie", "stopliniemargine", "stoplinii", "stoplocal", "stoplocalenvironment", "stoplocalfootnotes", "stopmakeup", "stopmarginblock", "stopmarginrule", "stopmediu", "stopnamemakeup", "stopnarrower", "stopneimpachetat", "stopnotesubsollocale", "stopnumerotarelinii", "stopopozit", "stopopposite", "stopoverlay", "stopoverview", "stoppacked", "stopparagraph", "stoppositioning", "stoppostponing", "stoppozitionare", "stopproduct", "stopprodus", "stopprofil", "stopprofile", "stopproiect", "stopproject", "stopquotation", "stopraster", "stopriglatext", "stopsincronizare", "stopsymbolset", "stopsynchronization", "stoptabel", "stoptabele", "stoptable", "stoptables", "stoptabulate", "stoptext", "stoptextrule", "stoptyping", "stopunpacked", "stopversion", "stopversiune", "stretched", "sub", "subject", "subpagenumber", "subsection", "subsubject", "subsubsection", "subsubsubject", "switchtobodyfont", "sym", "symbol", "synchronizationbar", "synchronize", "synonym", "tab", "testcolumn", "testpage", "tex", "texteticheta", "textmarginal", "textreference", "textrule", "texttitlu", "textumplere", "thinrule", "thinrules", "title", "titlu", "titlumarginal", "tooltip", "traduce", "translate", "trecilafontraw", "trecilafonttext", "txt", "typ", "type", "typebuffer", "typefile", "underbar", "underbars", "undeva", "urmeazaprofil", "urmeazaversiune", "urmeazaversiuneprofil", "useURL", "useXMLfilter", "useblocks", "usecommands", "usedirectory", "useencoding", "useexternaldocument", "useexternalfigure", "useexternalfile", "useexternalfiles", "useexternalsoundtrack", "usemodule", "usereferences", "usespecials", "usesymbols", "usetypescript", "usetypescriptfile", "valoareculoare", "valoaregri", "variabilatext", "version", "versiune", "vl", "weekday", "whitespace", "wordright", "writebetweenlist", "writetolist", "writetoreferencelist", "writetoregister", "zidinsaptamana" },
+} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-metafun.lua b/context/data/scite/context/lexers/data/scite-context-data-metafun.lua
new file mode 100644
index 000000000..547b8c145
--- /dev/null
+++ b/context/data/scite/context/lexers/data/scite-context-data-metafun.lua
@@ -0,0 +1,4 @@
+return {
+ ["commands"]={ "transparency", "sqr", "log", "ln", "exp", "inv", "pow", "pi", "radian", "tand", "cotd", "sin", "cos", "tan", "cot", "atan", "asin", "acos", "invsin", "invcos", "invtan", "acosh", "asinh", "sinh", "cosh", "zmod", "paired", "tripled", "unitcircle", "fulldiamond", "unitdiamond", "fullsquare", "llcircle", "lrcircle", "urcircle", "ulcircle", "tcircle", "bcircle", "lcircle", "rcircle", "lltriangle", "lrtriangle", "urtriangle", "ultriangle", "uptriangle", "downtriangle", "lefttriangle", "righttriangle", "triangle", "smoothed", "cornered", "superellipsed", "randomized", "squeezed", "enlonged", "shortened", "punked", "curved", "unspiked", "simplified", "blownup", "stretched", "enlarged", "leftenlarged", "topenlarged", "rightenlarged", "bottomenlarged", "crossed", "laddered", "randomshifted", "interpolated", "paralleled", "cutends", "peepholed", "llenlarged", "lrenlarged", "urenlarged", "ulenlarged", "llmoved", "lrmoved", "urmoved", "ulmoved", "rightarrow", "leftarrow", "centerarrow", "boundingbox", "innerboundingbox", "outerboundingbox", "pushboundingbox", "popboundingbox", "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", "cmyk", "spotcolor", "multitonecolor", "namedcolor", "drawfill", "undrawfill", "inverted", "uncolored", "softened", "grayed", "greyed", "onlayer", "along", "graphictext", "loadfigure", "externalfigure", "figure", "register", "withmask", "bitmapimage", "colordecimals", "ddecimal", "dddecimal", "ddddecimal", "textext", "thetextext", "rawtextext", "textextoffset", "verbatim", "thelabel", "label", "autoalign", "transparent", "withtransparency", "property", "properties", "withproperties", "asgroup", "infont", "space", "crlf", "dquote", "percent", "SPACE", "CRLF", "DQUOTE", "PERCENT", "grayscale", "greyscale", "withgray", "withgrey", "colorpart", "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", "tensecircle", "roundedsquare", "colortype", "whitecolor", "blackcolor", "basiccolors", "normalfill", "normaldraw", "visualizepaths", "naturalizepaths", "drawboundary", "drawwholepath", "visualizeddraw", "visualizedfill", "draworigin", "drawboundingbox", "drawpath", "drawpoint", "drawpoints", "drawcontrolpoints", "drawcontrollines", "drawpointlabels", "drawlineoptions", "drawpointoptions", "drawcontroloptions", "drawlabeloptions", "draworiginoptions", "drawboundoptions", "drawpathoptions", "resetdrawoptions", "undashed", "decorated", "redecorated", "undecorated", "passvariable", "passarrayvariable", "tostring", "format", "formatted", "startpassingvariable", "stoppassingvariable", "eofill", "eoclip", "area" },
+ ["internals"]={ "nocolormodel", "greycolormodel", "graycolormodel", "rgbcolormodel", "cmykcolormodel", "shadefactor", "textextoffset", "normaltransparent", "multiplytransparent", "screentransparent", "overlaytransparent", "softlighttransparent", "hardlighttransparent", "colordodgetransparent", "colorburntransparent", "darkentransparent", "lightentransparent", "differencetransparent", "exclusiontransparent", "huetransparent", "saturationtransparent", "colortransparent", "luminositytransparent", "metapostversion", "maxdimensions" },
+} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-metapost.lua b/context/data/scite/context/lexers/data/scite-context-data-metapost.lua
new file mode 100644
index 000000000..f3ace2b6a
--- /dev/null
+++ b/context/data/scite/context/lexers/data/scite-context-data-metapost.lua
@@ -0,0 +1,9 @@
+return {
+ ["commands"]={ "upto", "downto", "beginfig", "endfig", "beginglyph", "endglyph", "rotatedaround", "reflectedabout", "arrowhead", "currentpen", "currentpicture", "cuttings", "defaultfont", "extra_beginfig", "extra_endfig", "ditto", "EOF", "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", "triplet", "quadruplet" },
+ ["disabled"]={ "verbatimtex", "troffmode" },
+ ["internals"]={ "mitered", "rounded", "beveled", "butt", "squared", "eps", "epsilon", "infinity", "bboxmargin", "ahlength", "ahangle", "labeloffset", "dotlabeldiam", "defaultpen", "defaultscale", "join_radius", "charscale", "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", "month", "pausing", "prologues", "showstopping", "time", "tracingcapsules", "tracingchoices", "mpprocset", "tracingcommands", "tracingequations", "tracinglostchars", "tracingmacros", "tracingonline", "tracingoutput", "tracingrestores", "tracingspecs", "tracingstats", "tracingtitles", "truecorners", "warningcheck", "year", "false", "nullpicture", "pencircle", "true", "and", "angle", "arclength", "arctime", "ASCII", "boolean", "bot", "char", "color", "cosd", "cycle", "decimal", "directiontime", "floor", "fontsize", "hex", "infont", "intersectiontimes", "known", "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", "shipout", "show", "showdependencies", "showtoken", "showvariable", "special", "begingroup", "endgroup", "of", "curl", "tension", "and", "controls", "interpath", "on", "off", "def", "vardef", "enddef", "expr", "suffix", "text", "primary", "secondary", "tertiary", "primarydef", "secondarydef", "tertiarydef", "randomseed", "also", "contour", "doublepath", "withcolor", "withcmykcolor", "withpen", "dashed", "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", "readstring", "scantokens", "end", "outer", "inner", "write", "to", "readfrom", "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", "stroked", "filled", "textual", "clipped", "bounded", "pathpart", "expandafter", "minute", "hour", "outputformat", "outputtemplate", "filenametemplate", "fontmapfile", "fontmapline", "fontpart", "fontsize", "glyph", "restoreclipcolor", "troffmode", "runscript", "maketext" },
+ ["shortcuts"]={ "..", "...", "--", "---", "&", "\\" },
+ ["tex"]={ "btex", "etex", "verbatimtex" },
+} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/data/scite-context-data-tex.lua b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
new file mode 100644
index 000000000..90b64c512
--- /dev/null
+++ b/context/data/scite/context/lexers/data/scite-context-data-tex.lua
@@ -0,0 +1,9 @@
+return {
+ ["aleph"]={ "AlephVersion", "Alephminorversion", "Alephrevision", "Alephversion", "Omegaminorversion", "Omegarevision", "Omegaversion", "boxdir", "pagebottomoffset", "pagerightoffset" },
+ ["etex"]={ "botmarks", "clubpenalties", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "detokenize", "dimexpr", "displaywidowpenalties", "eTeXVersion", "eTeXminorversion", "eTeXrevision", "eTeXversion", "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", "readline", "savinghyphcodes", "savingvdiscards", "scantokens", "showgroups", "showifs", "showtokens", "splitbotmarks", "splitdiscards", "splitfirstmarks", "topmarks", "tracingassigns", "tracinggroups", "tracingifs", "tracingnesting", "tracingscantokens", "unexpanded", "unless", "widowpenalties" },
+ ["luatex"]={ "Uchar", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathchardef", "Umathcharnum", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathspaceafterscript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Uoverdelimiter", "Uradical", "Uroot", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Usubscript", "Usuperscript", "Uunderdelimiter", "alignmark", "aligntab", "attribute", "attributedef", "catcodetable", "clearmarks", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "fontid", "formatname", "gleaders", "ifabsdim", "ifabsnum", "ifprimitive", "initcatcodetable", "latelua", "luaescapestring", "luastartup", "luatexbanner", "luatexrevision", "luatexversion", "luafunction", "mathstyle", "nokerns", "noligs", "outputbox", "pageleftoffset", "pagetopoffset", "postexhyphenchar", "posthyphenchar", "preexhyphenchar", "prehyphenchar", "primitive", "savecatcodetable", "scantextokens", "suppressfontnotfounderror", "suppressifcsnameerror", "suppresslongerror", "suppressoutererror", "suppressmathparerror", "synctex" },
+ ["omega"]={ "OmegaVersion", "bodydir", "chardp", "charht", "charit", "charwd", "leftghost", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "mathdir", "odelcode", "odelimiter", "omathaccent", "omathchar", "omathchardef", "omathcode", "oradical", "pagedir", "pageheight", "pagewidth", "pardir", "rightghost", "textdir" },
+ ["pdftex"]={ "efcode", "expanded", "ifincsname", "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "leftmarginkern", "letterspacefont", "lpcode", "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", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagecolordepth", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfoptionpdfminorversion", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformname", "pdfxformresources", "pdfximage", "pdfximagebbox", "quitvmode", "rightmarginkern", "rpcode", "tagcode" },
+ ["tex"]={ "-", "/", "AlephVersion", "Alephminorversion", "Alephrevision", "Alephversion", "OmegaVersion", "Omegaminorversion", "Omegarevision", "Omegaversion", "Udelcode", "Udelcodenum", "Udelimiter", "Udelimiterover", "Udelimiterunder", "Umathaccent", "Umathaxis", "Umathbinbinspacing", "Umathbinclosespacing", "Umathbininnerspacing", "Umathbinopenspacing", "Umathbinopspacing", "Umathbinordspacing", "Umathbinpunctspacing", "Umathbinrelspacing", "Umathchar", "Umathchardef", "Umathcharnum", "Umathclosebinspacing", "Umathcloseclosespacing", "Umathcloseinnerspacing", "Umathcloseopenspacing", "Umathcloseopspacing", "Umathcloseordspacing", "Umathclosepunctspacing", "Umathcloserelspacing", "Umathcode", "Umathcodenum", "Umathconnectoroverlapmin", "Umathfractiondelsize", "Umathfractiondenomdown", "Umathfractiondenomvgap", "Umathfractionnumup", "Umathfractionnumvgap", "Umathfractionrule", "Umathinnerbinspacing", "Umathinnerclosespacing", "Umathinnerinnerspacing", "Umathinneropenspacing", "Umathinneropspacing", "Umathinnerordspacing", "Umathinnerpunctspacing", "Umathinnerrelspacing", "Umathlimitabovebgap", "Umathlimitabovekern", "Umathlimitabovevgap", "Umathlimitbelowbgap", "Umathlimitbelowkern", "Umathlimitbelowvgap", "Umathopbinspacing", "Umathopclosespacing", "Umathopenbinspacing", "Umathopenclosespacing", "Umathopeninnerspacing", "Umathopenopenspacing", "Umathopenopspacing", "Umathopenordspacing", "Umathopenpunctspacing", "Umathopenrelspacing", "Umathoperatorsize", "Umathopinnerspacing", "Umathopopenspacing", "Umathopopspacing", "Umathopordspacing", "Umathoppunctspacing", "Umathoprelspacing", "Umathordbinspacing", "Umathordclosespacing", "Umathordinnerspacing", "Umathordopenspacing", "Umathordopspacing", "Umathordordspacing", "Umathordpunctspacing", "Umathordrelspacing", "Umathoverbarkern", "Umathoverbarrule", "Umathoverbarvgap", "Umathoverdelimiterbgap", "Umathoverdelimitervgap", "Umathpunctbinspacing", "Umathpunctclosespacing", "Umathpunctinnerspacing", "Umathpunctopenspacing", "Umathpunctopspacing", "Umathpunctordspacing", "Umathpunctpunctspacing", "Umathpunctrelspacing", "Umathquad", "Umathradicaldegreeafter", "Umathradicaldegreebefore", "Umathradicaldegreeraise", "Umathradicalkern", "Umathradicalrule", "Umathradicalvgap", "Umathrelbinspacing", "Umathrelclosespacing", "Umathrelinnerspacing", "Umathrelopenspacing", "Umathrelopspacing", "Umathrelordspacing", "Umathrelpunctspacing", "Umathrelrelspacing", "Umathspaceafterscript", "Umathstackdenomdown", "Umathstacknumup", "Umathstackvgap", "Umathsubshiftdown", "Umathsubshiftdrop", "Umathsubsupshiftdown", "Umathsubsupvgap", "Umathsubtopmax", "Umathsupbottommin", "Umathsupshiftdrop", "Umathsupshiftup", "Umathsupsubbottommax", "Umathunderbarkern", "Umathunderbarrule", "Umathunderbarvgap", "Umathunderdelimiterbgap", "Umathunderdelimitervgap", "Uoverdelimiter", "Uradical", "Uroot", "Ustack", "Ustartdisplaymath", "Ustartmath", "Ustopdisplaymath", "Ustopmath", "Usubscript", "Usuperscript", "Uunderdelimiter", "above", "abovedisplayshortskip", "abovedisplayskip", "abovewithdelims", "accent", "adjdemerits", "advance", "afterassignment", "aftergroup", "alignmark", "aligntab", "atop", "atopwithdelims", "attribute", "attributedef", "badness", "baselineskip", "batchmode", "begingroup", "belowdisplayshortskip", "belowdisplayskip", "binoppenalty", "bodydir", "botmark", "botmarks", "box", "boxdir", "boxmaxdepth", "brokenpenalty", "catcode", "catcodetable", "char", "chardef", "cleaders", "clearmarks", "closein", "closeout", "clubpenalties", "clubpenalty", "copy", "count", "countdef", "cr", "crampeddisplaystyle", "crampedscriptscriptstyle", "crampedscriptstyle", "crampedtextstyle", "crcr", "csname", "currentgrouplevel", "currentgrouptype", "currentifbranch", "currentiflevel", "currentiftype", "day", "deadcycles", "def", "defaulthyphenchar", "defaultskewchar", "delcode", "delimiter", "delimiterfactor", "delimitershortfall", "detokenize", "dimen", "dimendef", "dimexpr", "directlua", "discretionary", "displayindent", "displaylimits", "displaystyle", "displaywidowpenalties", "displaywidowpenalty", "displaywidth", "divide", "doublehyphendemerits", "dp", "dump", "eTeXVersion", "eTeXminorversion", "eTeXrevision", "eTeXversion", "edef", "efcode", "else", "emergencystretch", "end", "endcsname", "endgroup", "endinput", "endlinechar", "eqno", "errhelp", "errmessage", "errorcontextlines", "errorstopmode", "escapechar", "everycr", "everydisplay", "everyeof", "everyhbox", "everyjob", "everymath", "everypar", "everyvbox", "exhyphenchar", "exhyphenpenalty", "expandafter", "expanded", "fam", "fi", "finalhyphendemerits", "firstmark", "firstmarks", "floatingpenalty", "font", "fontchardp", "fontcharht", "fontcharic", "fontcharwd", "fontdimen", "fontid", "fontname", "formatname", "futurelet", "gdef", "gleaders", "global", "globaldefs", "glueexpr", "glueshrink", "glueshrinkorder", "gluestretch", "gluestretchorder", "gluetomu", "halign", "hangafter", "hangindent", "hbadness", "hbox", "hfil", "hfill", "hfilneg", "hfuzz", "hoffset", "holdinginserts", "hrule", "hsize", "hskip", "hss", "ht", "hyphenation", "hyphenchar", "hyphenpenalty", "if", "ifabsdim", "ifabsnum", "ifcase", "ifcat", "ifcsname", "ifdefined", "ifdim", "ifeof", "iffalse", "iffontchar", "ifhbox", "ifhmode", "ifincsname", "ifinner", "ifmmode", "ifnum", "ifodd", "ifpdfabsdim", "ifpdfabsnum", "ifpdfprimitive", "ifprimitive", "iftrue", "ifvbox", "ifvmode", "ifvoid", "ifx", "ignorespaces", "immediate", "indent", "initcatcodetable", "input", "inputlineno", "insert", "insertpenalties", "interactionmode", "interlinepenalties", "interlinepenalty", "jobname", "kern", "language", "lastbox", "lastkern", "lastlinefit", "lastnodetype", "lastpenalty", "lastskip", "latelua", "lccode", "leaders", "left", "leftghost", "lefthyphenmin", "leftmarginkern", "leftskip", "leqno", "let", "letterspacefont", "limits", "linepenalty", "lineskip", "lineskiplimit", "localbrokenpenalty", "localinterlinepenalty", "localleftbox", "localrightbox", "long", "looseness", "lower", "lowercase", "lpcode", "luaescapestring", "luastartup", "luatexbanner", "luatexrevision", "luatexversion", "mag", "mark", "marks", "mathaccent", "mathbin", "mathchar", "mathchardef", "mathchoice", "mathclose", "mathcode", "mathdir", "mathinner", "mathop", "mathopen", "mathord", "mathpunct", "mathrel", "mathstyle", "mathsurround", "maxdeadcycles", "maxdepth", "meaning", "medmuskip", "message", "middle", "mkern", "month", "moveleft", "moveright", "mskip", "muexpr", "multiply", "muskip", "muskipdef", "mutoglue", "newlinechar", "noalign", "noboundary", "noexpand", "noindent", "nokerns", "noligs", "nolimits", "nolocaldirs", "nolocalwhatsits", "nonscript", "nonstopmode", "nulldelimiterspace", "nullfont", "number", "numexpr", "odelcode", "odelimiter", "omathaccent", "omathchar", "omathchardef", "omathcode", "omit", "openin", "openout", "or", "oradical", "outer", "output", "outputbox", "outputpenalty", "over", "overfullrule", "overline", "overwithdelims", "pagebottomoffset", "pagedepth", "pagedir", "pagediscards", "pagefilllstretch", "pagefillstretch", "pagefilstretch", "pagegoal", "pageheight", "pageleftoffset", "pagerightoffset", "pageshrink", "pagestretch", "pagetopoffset", "pagetotal", "pagewidth", "par", "pardir", "parfillskip", "parindent", "parshape", "parshapedimen", "parshapeindent", "parshapelength", "parskip", "patterns", "pausing", "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", "pdfimageapplygamma", "pdfimagegamma", "pdfimagehicolor", "pdfimageresolution", "pdfincludechars", "pdfinclusioncopyfonts", "pdfinclusionerrorlevel", "pdfinfo", "pdfinsertht", "pdflastannot", "pdflastlinedepth", "pdflastlink", "pdflastobj", "pdflastxform", "pdflastximage", "pdflastximagecolordepth", "pdflastximagepages", "pdflastxpos", "pdflastypos", "pdflinkmargin", "pdfliteral", "pdfmapfile", "pdfmapline", "pdfminorversion", "pdfnames", "pdfnoligatures", "pdfnormaldeviate", "pdfobj", "pdfobjcompresslevel", "pdfoptionpdfminorversion", "pdfoutline", "pdfoutput", "pdfpageattr", "pdfpagebox", "pdfpageheight", "pdfpageref", "pdfpageresources", "pdfpagesattr", "pdfpagewidth", "pdfpkmode", "pdfpkresolution", "pdfprimitive", "pdfprotrudechars", "pdfpxdimen", "pdfrandomseed", "pdfrefobj", "pdfrefxform", "pdfrefximage", "pdfreplacefont", "pdfrestore", "pdfretval", "pdfsave", "pdfsavepos", "pdfsetmatrix", "pdfsetrandomseed", "pdfstartlink", "pdfstartthread", "pdftexbanner", "pdftexrevision", "pdftexversion", "pdfthread", "pdfthreadmargin", "pdftracingfonts", "pdftrailer", "pdfuniformdeviate", "pdfuniqueresname", "pdfvorigin", "pdfxform", "pdfxformattr", "pdfxformname", "pdfxformresources", "pdfximage", "pdfximagebbox", "penalty", "postdisplaypenalty", "postexhyphenchar", "posthyphenchar", "predisplaydirection", "predisplaypenalty", "predisplaysize", "preexhyphenchar", "prehyphenchar", "pretolerance", "prevdepth", "prevgraf", "primitive", "protected", "quitvmode", "radical", "raise", "read", "readline", "relax", "relpenalty", "right", "rightghost", "righthyphenmin", "rightmarginkern", "rightskip", "romannumeral", "rpcode", "savecatcodetable", "savinghyphcodes", "savingvdiscards", "scantextokens", "scantokens", "scriptfont", "scriptscriptfont", "scriptscriptstyle", "scriptspace", "scriptstyle", "scrollmode", "setbox", "setlanguage", "sfcode", "shipout", "show", "showbox", "showboxbreadth", "showboxdepth", "showgroups", "showifs", "showlists", "showthe", "showtokens", "skewchar", "skip", "skipdef", "spacefactor", "spaceskip", "span", "special", "splitbotmark", "splitbotmarks", "splitdiscards", "splitfirstmark", "splitfirstmarks", "splitmaxdepth", "splittopskip", "string", "suppressfontnotfounderror", "suppressifcsnameerror", "suppresslongerror", "suppressoutererror", "synctex", "tabskip", "tagcode", "textdir", "textfont", "textstyle", "the", "thickmuskip", "thinmuskip", "time", "toks", "toksdef", "tolerance", "topmark", "topmarks", "topskip", "tracingassigns", "tracingcommands", "tracinggroups", "tracingifs", "tracinglostchars", "tracingmacros", "tracingnesting", "tracingonline", "tracingoutput", "tracingpages", "tracingparagraphs", "tracingrestores", "tracingscantokens", "tracingstats", "uccode", "uchyph", "underline", "unexpanded", "unhbox", "unhcopy", "unkern", "unless", "unpenalty", "unskip", "unvbox", "unvcopy", "uppercase", "vadjust", "valign", "vbadness", "vbox", "vcenter", "vfil", "vfill", "vfilneg", "vfuzz", "voffset", "vrule", "vsize", "vskip", "vsplit", "vss", "vtop", "wd", "widowpenalties", "widowpenalty", "write", "xdef", "xleaders", "xspaceskip", "year" },
+ ["xetex"]={ "XeTeXversion" },
+} \ No newline at end of file
diff --git a/context/data/scite/context/lexers/lexer.lua b/context/data/scite/context/lexers/lexer.lua
new file mode 100644
index 000000000..9582f6a76
--- /dev/null
+++ b/context/data/scite/context/lexers/lexer.lua
@@ -0,0 +1,3 @@
+-- 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
new file mode 100644
index 000000000..ebcd7cbc6
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-bibtex.lua
@@ -0,0 +1,195 @@
+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("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/scite/context/lexers/scite-context-lexer-cld.lua b/context/data/scite/context/lexers/scite-context-lexer-cld.lua
new file mode 100644
index 000000000..3442a195c
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-cld.lua
@@ -0,0 +1,23 @@
+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("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/scite/context/lexers/scite-context-lexer-cpp-web.lua b/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua
new file mode 100644
index 000000000..daa9221ba
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-cpp-web.lua
@@ -0,0 +1,23 @@
+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("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/scite/context/lexers/scite-context-lexer-cpp.lua b/context/data/scite/context/lexers/scite-context-lexer-cpp.lua
new file mode 100644
index 000000000..31180e6a5
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-cpp.lua
@@ -0,0 +1,188 @@
+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("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",
+ -- 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 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 keyword = token("keyword", p_keywords)
+local datatype = token("keyword", p_datatypes)
+local identifier = token("default", validword)
+
+local macro = token("data", #P("#") * startofline * P("#") * S("\t ")^0 * p_macros)
+
+cpplexer._rules = {
+ { "whitespace", spacing },
+ { "keyword", keyword },
+ { "type", datatype },
+ { "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 },
+ { "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 },
+ { "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
+
+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/scite/context/lexers/scite-context-lexer-dummy.lua b/context/data/scite/context/lexers/scite-context-lexer-dummy.lua
new file mode 100644
index 000000000..9465561f3
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-dummy.lua
@@ -0,0 +1,35 @@
+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("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/scite/context/lexers/scite-context-lexer-lua-longstring.lua b/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua
new file mode 100644
index 000000000..855adbe4e
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-lua-longstring.lua
@@ -0,0 +1,31 @@
+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("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/scite/context/lexers/scite-context-lexer-lua.lua b/context/data/scite/context/lexers/scite-context-lexer-lua.lua
new file mode 100644
index 000000000..9bee74845
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-lua.lua
@@ -0,0 +1,387 @@
+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("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")
+local 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",
+}
+
+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",
+ "NaN",
+}
+
+-- 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", "eq", "gc", "index",
+ "le", "lt", "metatable", "mode", "mul", "newindex",
+ "pow", "sub", "tostring", "unm", "len",
+}
+
+local depricated = {
+ "arg", "arg.n",
+ "loadstring", "setfenv", "getfenv",
+ "pack",
+}
+
+local csnames = { -- todo: option
+ "commands",
+ "context",
+ "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 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)
+ * (
+ optionalspace * hasargument
+ + ( optionalspace * token("special", S(".:")) * optionalspace * token("user", validword ) )^1
+ + token("user", P("_") * validsuffix)
+ )
+
+local identifier = token("default", validword)
+ * ( optionalspace * token("special", S(".:")) * optionalspace * (
+ token("warning", p_keywords) +
+ token("data", p_internals) +
+ 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 },
+ { "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 },
+ { "operator", operator },
+ { "rest", rest },
+}
+
+return lualexer
diff --git a/context/data/scite/context/lexers/scite-context-lexer-mps.lua b/context/data/scite/context/lexers/scite-context-lexer-mps.lua
new file mode 100644
index 000000000..b87ea83cb
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-mps.lua
@@ -0,0 +1,177 @@
+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("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 texstuff = token("quote", P("btex ") + P("verbatimtex "))
+ * token("string", P(1-P(" etex"))^0)
+ * token("quote", P(" 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 special = token("special", 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)
+
+metafunlexer._rules = {
+ { "whitespace", spacing },
+ { "comment", comment },
+ { "internal", internal },
+ { "shortcut", shortcut },
+ { "helper", helper },
+ { "plain", plain },
+ { "primitive", primitive },
+ { "texstuff", texstuff },
+ { "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/scite/context/lexers/scite-context-lexer-pdf-object.lua b/context/data/scite/context/lexers/scite-context-lexer-pdf-object.lua
new file mode 100644
index 000000000..1fb95838a
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-pdf-object.lua
@@ -0,0 +1,136 @@
+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("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/scite/context/lexers/scite-context-lexer-pdf-xref.lua b/context/data/scite/context/lexers/scite-context-lexer-pdf-xref.lua
new file mode 100644
index 000000000..7097c41a6
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-pdf-xref.lua
@@ -0,0 +1,43 @@
+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("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/scite/context/lexers/scite-context-lexer-pdf.lua b/context/data/scite/context/lexers/scite-context-lexer-pdf.lua
new file mode 100644
index 000000000..f8e4e7380
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-pdf.lua
@@ -0,0 +1,204 @@
+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 startic .. 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("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_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,
+ }
+
+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")^-1 * t_spaces * t_stream^-1 + V("array") + V("number") + t_spaces) * 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/scite/context/lexers/scite-context-lexer-tex-web.lua b/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua
new file mode 100644
index 000000000..5d8859c26
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-tex-web.lua
@@ -0,0 +1,23 @@
+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("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/scite/context/lexers/scite-context-lexer-tex.lua b/context/data/scite/context/lexers/scite-context-lexer-tex.lua
new file mode 100644
index 000000000..ad73f4217
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-tex.lua
@@ -0,0 +1,565 @@
+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("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 list = { }
+ for interface, list in next, definitions do
+ list[#list+1] = interface
+ local c = { }
+ for i=1,#list do
+ c[list[i]] = true
+ end
+ if interface ~= "en" then
+ list = definitions.en
+ if list then
+ for i=1,#list do
+ c[list[i]] = true
+ end
+ end
+ end
+ commands[interface] = c
+ end
+ inform("context user interfaces '%s' supported",table.concat(list," "))
+ 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?
+
+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]+)")
+ 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]+)")
+ 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_command = backslash * lexer.helpers.utfchartabletopattern(currentcommands) * #(1-cstoken)
+local p_constant = backslash * lexer.helpers.utfchartabletopattern(constants) * #(1-cstoken)
+local p_helper = backslash * lexer.helpers.utfchartabletopattern(helpers) * #(1-cstoken)
+local p_primitive = backslash * lexer.helpers.utfchartabletopattern(primitives) * #(1-cstoken)
+
+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(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("luaexpr")
+ + (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") ) * ("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, cldlexer, startluacode, stopluacode)
+lexer.embed_lexer(contextlexer, mpslexer, startmetafuncode, stopmetafuncode)
+
+contextlexer._rules = {
+ { "whitespace", spacing },
+ { "preamble", preamble },
+ { "word", word },
+ { "text", text }, -- non words
+ { "comment", comment },
+ { "constant", constant },
+ -- { "subsystem", subsystem },
+ { "callers", callers },
+ { "helper", helper },
+ { "command", command },
+ { "primitive", primitive },
+ { "ifprimitive", ifprimitive },
+ { "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 },
+ { "helper", helper },
+ { "command", command },
+ { "primitive", primitive },
+ { "ifprimitive", ifprimitive },
+ { "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 },
+ { "helper", helper },
+ { "command", command },
+ { "primitive", primitive },
+ { "ifprimitive", ifprimitive },
+ { "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/scite/context/lexers/scite-context-lexer-txt.lua b/context/data/scite/context/lexers/scite-context-lexer-txt.lua
new file mode 100644
index 000000000..43eec2c35
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-txt.lua
@@ -0,0 +1,80 @@
+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("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/scite/context/lexers/scite-context-lexer-web-snippets.lua b/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua
new file mode 100644
index 000000000..196a545bc
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-web-snippets.lua
@@ -0,0 +1,133 @@
+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("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 * S("'")
+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/scite/context/lexers/scite-context-lexer-web.lua b/context/data/scite/context/lexers/scite-context-lexer-web.lua
new file mode 100644
index 000000000..86ae76644
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-web.lua
@@ -0,0 +1,67 @@
+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("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/scite/context/lexers/scite-context-lexer-xml-cdata.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua
new file mode 100644
index 000000000..e6276da0d
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-cdata.lua
@@ -0,0 +1,33 @@
+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("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/scite/context/lexers/scite-context-lexer-xml-comment.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua
new file mode 100644
index 000000000..b5b3fefe0
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-comment.lua
@@ -0,0 +1,33 @@
+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("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/scite/context/lexers/scite-context-lexer-xml-script.lua b/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua
new file mode 100644
index 000000000..bbb938dc5
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml-script.lua
@@ -0,0 +1,33 @@
+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("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/scite/context/lexers/scite-context-lexer-xml.lua b/context/data/scite/context/lexers/scite-context-lexer-xml.lua
new file mode 100644
index 000000000..77c89b1d6
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer-xml.lua
@@ -0,0 +1,350 @@
+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("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/scite/context/lexers/scite-context-lexer.lua b/context/data/scite/context/lexers/scite-context-lexer.lua
new file mode 100644
index 000000000..4d401ac7b
--- /dev/null
+++ b/context/data/scite/context/lexers/scite-context-lexer.lua
@@ -0,0 +1,2177 @@
+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",
+
+}
+
+-- todo: hook into context resolver etc
+-- todo: only old api in lexers, rest in context subnamespace
+-- todo: make sure we can run in one state .. copies or shared?
+-- todo: auto-nesting
+
+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.
+--
+-- REMARK
+--
+-- We started using lpeg lexing as soon as it came available. Because we had
+-- rather demanding files an dalso wanted to use nested lexers, we ended up with
+-- our own variant (more robust and faster). As a consequence successive versions
+-- had to be adapted to changes in the (still unstable) api. In addition to
+-- lexing we also have spell checking and such.
+--
+-- STATUS
+--
+-- todo: maybe use a special stripped version of the dll (stable api)
+-- todo: play with hotspot and other properties
+-- wish: access to all scite properties and in fact integrate in scite
+-- todo: add proper tracing and so .. not too hard as we can run on mtxrun
+-- todo: get rid of these lexers.STYLE_XX and lexers.XX (hide such details)
+--
+-- HISTORY
+--
+-- The fold and lex functions are copied and patched from original code by Mitchell
+-- (see lexer.lua). All errors are mine. The ability to use lpeg is a real nice
+-- adition and a brilliant move. The code is a byproduct of the (mainly Lua based)
+-- textadept (still a rapidly moving target) that unfortunately misses a realtime
+-- output pane. On the other hand, SciTE is somewhat crippled by the fact that we
+-- cannot pop in 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.
+--
+-- Starting with SciTE version 3.20 there is an issue with coloring. As we still
+-- lack a connection with SciTE itself (properties as well as printing to the log
+-- pane) and we cannot trace this (on windows). As far as I can see, there are no
+-- fundamental changes in lexer.lua or LexLPeg.cxx so it must be in Scintilla
+-- itself. So for the moment I stick to 3.10. Indicators 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). Also the fact
+-- that char-def.lua lexes fast is a signal that the lexer quits somewhere halfway.
+-- Maybe there are some hard coded limitations on the amount of styles and/or length
+-- if names.
+--
+-- 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 optimized
+-- these small tables by hashing which was more efficient 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.
+--
+-- 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. I've
+-- 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. For instance, we could cache some info with
+-- each file, if only we had knowledge of what file we're dealing with.
+--
+-- 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. When I
+-- have time and motive I will make a proper setup file to tune the look and feel a
+-- bit and associate suffixes with the context lexer. The textadept editor has a
+-- nice style tracing option but lacks the tabs for selecting files that scite has.
+-- It also has no integrated run that pipes to the log pane. 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).
+--
+-- 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).
+--
+-- With 3.41 the interface changed again so it gets time to look into the C++ code
+-- and consider compiling and patching myself. Loading is more complicated not 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. The api (lexing and configuration) is simply too
+-- unstable across versions. Maybe in a few years things have stabelized. (Or maybe
+-- it's not really expected that one writes lexers at all.) A side effect is that I
+-- now no longer will use shipped lexers but just the built-in ones. Not that it
+-- matters much as the context lexers cover what I need (and I can always write
+-- more).
+--
+-- 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.
+--
+-- 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. 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.
+--
+-- TODO
+--
+-- 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.
+
+-- TRACING
+--
+-- The advantage is that we now can check more easily with regular Lua. 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.)
+
+-- todo: make sure we don't overload context definitions when used in context
+
+local lpeg = require("lpeg")
+
+local global = _G
+local find, gmatch, match, lower, upper, gsub, sub, format = string.find, string.gmatch, string.match, string.lower, string.upper, string.gsub, string.sub, 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 lpegmatch = lpeg.match
+
+local nesting = 0
+
+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))
+
+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 ;
+lexers.LEXERPATH = "./?.lua" -- good enough, will be set anyway (was
+
+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"
+}
+
+-- 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)
+ 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):
+
+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 toproperty(specification)
+ local serialized = { }
+ for key, value in next, specification do
+ if value == true then
+ serialized[#serialized+1] = key
+ elseif type(value) == "table" then
+ serialized[#serialized+1] = key .. ":" .. "#" .. value[1] .. value[2] .. value[3]
+ 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
+
+-- 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 trace then
+ 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
+ else
+ report("initializing styleset")
+ end
+ 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
+
+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
+ report("unable to load lua file '%s'",name)
+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
+ report("unable to load definition file '%s'",name)
+ 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
+
+function context.word_match(words,word_chars,case_insensitive)
+ local chars = "%w_" -- maybe just "" when word_chars
+ if word_chars then
+ chars = "^([" .. chars .. gsub(word_chars,"([%^%]%-])", "%%%1") .."]+)"
+ else
+ chars = "^([" .. chars .."]+)"
+ end
+ if case_insensitive then
+ local word_list = { }
+ for i=1,#words do
+ word_list[lower(words[i])] = true
+ end
+ return P(function(input, index)
+ local s, e, word = find(input,chars,index)
+ return word and word_list[lower(word)] and e + 1 or nil
+ end)
+ else
+ local word_list = { }
+ for i=1,#words do
+ word_list[words[i]] = true
+ end
+ return P(function(input, index)
+ local s, e, word = find(input,chars,index)
+ return word and word_list[word] and e + 1 or nil
+ end)
+ end
+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 -- *
+
+ 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 = sign^-1
+ * (digit^0 * period * digit^1 + digit^1 * period * digit^0 + digit^1)
+ * S("eE") * sign^-1 * digit^1 -- *
+ patterns.cardinal = decimal
+
+ patterns.signeddecimal = sign^-1 * decimal
+ patterns.signedoctal = sign^-1 * octal
+ patterns.signedhexadecimal = sign^-1 * hexadecimal
+ patterns.integer = sign^-1 * (hexadecimal + octal + decimal)
+ 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
+
+ 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 = alnum
+ 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 = { }
+
+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
+ 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
+ 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 = { }
+
+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)
+ --
+ 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.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.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
+
+-- 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
+ return
+ elseif predefinedstyles[token_name] then
+ if trace and detail then
+ report("predefined style '%s' is ignored as extra style",token_name)
+ end
+ return
+ 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
+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
+
+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
+ if children then
+ if not initial_rule then
+ initial_rule = lexer_name
+ end
+ local grammar = { initial_rule }
+ add_lexer(grammar, lexer)
+ lexer._INITIALRULE = initial_rule
+ lexer._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
+ lexer._GRAMMAR = Ct(join_tokens(lexer)^0)
+ if trace then
+ report("building grammar for '%s' with whitespace '%s'",lexer_name,lexer.whitespace or "?")
+ end
+ end
+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)",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,#t/2)
+ if collapse then
+ t = collapsed(t)
+ report("lexer collapsed: %s, length: %s, ranges: %s",lexer._NAME,#text,#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.
+
+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,#lexer._CHILDREN or 0,init_style)
+ 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:
+
+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)
+ 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)
+
+function context.loadlexer(filename,namespace)
+ 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 then
+ 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
+ if _r then
+ local _s = lexer._tokenstyles
+ if _s then
+ for token, style in next, _s do
+ add_style(lexer, token, style)
+ end
+ end
+ for i=1,#_r do
+ local rule = _r[i]
+ add_rule(lexer, rule[1], rule[2])
+ end
+ 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] = "()(" .. patterns[i] .. ")"
+ end
+ end
+ end
+ --
+ lexer.lex = lexers.lex
+ lexer.fold = lexers.fold
+ --
+ nesting = nesting - 1
+ --
+ if inspect then
+ context.inspect(lexer)
+ end
+ --
+ return lexer
+end
+
+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
+ 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 ... 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
+
+ if not floor then
+
+ floor = function(n)
+ return tonumber(format("%d",n))
+ end
+
+ math = math or { }
+
+ math.floor = floor
+
+ end
+
+ 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
+
+ helpers.utfcharpattern = P(1) * R("\128\191")^0 -- unchecked but fast
+
+ 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
+
+-- done
+
+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
new file mode 100644
index 000000000..b0c63fe39
--- /dev/null
+++ b/context/data/scite/context/lexers/themes/scite-context-theme.lua
@@ -0,0 +1,150 @@
+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
+
+local font_name = 'Dejavu Sans Mono'
+local font_size = '14'
+
+local colors = {
+ red = { '7F', '00', '00' },
+ green = { '00', '7F', '00' },
+ blue = { '00', '00', '7F' },
+ cyan = { '00', '7F', '7F' },
+ magenta = { '7F', '00', '7F' },
+ yellow = { '7F', '7F', '00' },
+ orange = { 'B0', '7F', '00' },
+ --
+ white = { 'FF', 'FF', 'FF' },
+ light = { 'CF', 'CF', 'CF' },
+ grey = { '80', '80', '80' },
+ dark = { '4F', '4F', '4F' },
+ black = { '00', '00', '00' },
+ --
+ selection = { 'F7', 'F7', 'F7' },
+ logpanel = { 'E7', 'E7', 'E7' },
+ textpanel = { 'CF', 'CF', 'CF' },
+ linepanel = { 'A7', 'A7', 'A7' },
+ tippanel = { '44', '44', '44' },
+ --
+ right = { '00', '00', 'FF' },
+ wrong = { 'FF', '00', '00' },
+}
+
+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 },
+ ["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
+}
+
+local lexer = lexer or require("lexer")
+local context = lexer.context
+
+if context then
+ context.inform("loading context (style) properties")
+ if context.registerstyles then
+ context.registerstyles(styles)
+ end
+ if context.registerproperties then
+ context.registerproperties(properties)
+ end
+end
+
diff --git a/context/data/scite/context/scite-context-data-context.properties b/context/data/scite/context/scite-context-data-context.properties
new file mode 100644
index 000000000..717b08c80
--- /dev/null
+++ b/context/data/scite/context/scite-context-data-context.properties
@@ -0,0 +1,206 @@
+keywordclass.context.constants=\
+zerocount minusone minustwo plusone \
+plustwo plusthree plusfour plusfive plussix \
+plusseven pluseight plusnine plusten plussixteen \
+plushundred plusthousand plustenthousand plustwentythousand medcard \
+maxcard maxcardminusone zeropoint onepoint halfapoint \
+onebasepoint maxdimen scaledpoint thousandpoint points \
+halfpoint zeroskip zeromuskip onemuskip pluscxxvii \
+pluscxxviii pluscclv pluscclvi normalpagebox endoflinetoken \
+outputnewlinechar emptytoks empty undefined voidbox \
+emptybox emptyvbox emptyhbox bigskipamount medskipamount \
+smallskipamount fmtname fmtversion texengine texenginename \
+texengineversion luatexengine pdftexengine xetexengine unknownengine \
+activecatcode bgroup egroup endline conditionaltrue \
+conditionalfalse attributeunsetvalue uprotationangle rightrotationangle downrotationangle \
+leftrotationangle inicatcodes ctxcatcodes texcatcodes notcatcodes \
+txtcatcodes vrbcatcodes prtcatcodes nilcatcodes luacatcodes \
+tpacatcodes tpbcatcodes xmlcatcodes ctdcatcodes escapecatcode \
+begingroupcatcode endgroupcatcode mathshiftcatcode alignmentcatcode endoflinecatcode \
+parametercatcode superscriptcatcode subscriptcatcode ignorecatcode spacecatcode \
+lettercatcode othercatcode activecatcode commentcatcode invalidcatcode \
+tabasciicode newlineasciicode formfeedasciicode endoflineasciicode endoffileasciicode \
+spaceasciicode hashasciicode dollarasciicode commentasciicode ampersandasciicode \
+colonasciicode backslashasciicode circumflexasciicode underscoreasciicode leftbraceasciicode \
+barasciicode rightbraceasciicode tildeasciicode delasciicode lessthanasciicode \
+morethanasciicode doublecommentsignal atsignasciicode exclamationmarkasciicode questionmarkasciicode \
+doublequoteasciicode singlequoteasciicode forwardslashasciicode primeasciicode hyphenasciicode \
+activemathcharcode activetabtoken activeformfeedtoken activeendoflinetoken batchmodecode \
+nonstopmodecode scrollmodecode errorstopmodecode bottomlevelgroupcode simplegroupcode \
+hboxgroupcode adjustedhboxgroupcode vboxgroupcode vtopgroupcode aligngroupcode \
+noaligngroupcode outputgroupcode mathgroupcode discretionarygroupcode insertgroupcode \
+vcentergroupcode mathchoicegroupcode semisimplegroupcode mathshiftgroupcode mathleftgroupcode \
+vadjustgroupcode 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 fontslantperpoint fontinterwordspace fontinterwordstretch \
+fontinterwordshrink fontexheight fontemwidth fontextraspace slantperpoint \
+interwordspace interwordstretch interwordshrink exheight emwidth \
+extraspace mathsupdisplay mathsupnormal mathsupcramped mathsubnormal \
+mathsubcombined 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 setupdocument 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 \
+breakablethinspace nobreakspace nonbreakablespace narrownobreakspace zerowidthnobreakspace \
+ideographicspace ideographichalffillspace twoperemspace threeperemspace fourperemspace \
+fiveperemspace sixperemspace figurespace punctuationspace hairspace \
+zerowidthspace zerowidthnonjoiner zerowidthjoiner zwnj zwj \
+optionalspace asciispacechar
+
+keywordclass.context.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 doifelsecommandhandler doifcommandhandlerelse \
+doifnotcommandhandler doifcommandhandler newmode setmode resetmode \
+newsystemmode setsystemmode resetsystemmode pushsystemmode popsystemmode \
+booleanmodevalue newcount newdimen newskip newmuskip \
+newbox newtoks newread newwrite newmarks \
+newinsert newattribute newif newlanguage newfamily \
+newfam newhelp then begcsname strippedcsname \
+checkedstrippedcsname firstargumentfalse firstargumenttrue secondargumentfalse secondargumenttrue \
+thirdargumentfalse thirdargumenttrue fourthargumentfalse fourthargumenttrue fifthargumentfalse \
+fifthsargumenttrue sixthargumentfalse sixtsargumenttrue doglobal dodoglobal \
+redoglobal resetglobal donothing dontcomplain forgetall \
+donetrue donefalse inlineordisplaymath indisplaymath forcedisplaymath \
+startforceddisplaymath stopforceddisplaymath reqno 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 ruledhfilneg ruledhfillneg normalhfillneg ruledvss \
+ruledvfil ruledvfill ruledvfilneg ruledvfillneg normalvfillneg \
+ruledhbox ruledvbox ruledvtop ruledvcenter ruledmbox \
+ruledhskip ruledvskip ruledkern ruledmskip ruledmkern \
+ruledhglue ruledvglue normalhglue normalvglue ruledpenalty \
+filledhboxb filledhboxr filledhboxg filledhboxc filledhboxm \
+filledhboxy filledhboxk scratchcounter globalscratchcounter scratchdimen \
+globalscratchdimen scratchskip globalscratchskip scratchmuskip globalscratchmuskip \
+scratchtoks globalscratchtoks scratchbox globalscratchbox normalbaselineskip \
+normallineskip normallineskiplimit availablehsize localhsize setlocalhsize \
+distributedhsize hsizefraction nextbox dowithnextbox dowithnextboxcs \
+dowithnextboxcontent dowithnextboxcontentcs scratchwidth scratchheight scratchdepth \
+scratchoffset scratchdistance scratchhsize scratchvsize scratchxoffset \
+scratchyoffset scratchhoffset scratchvoffset scratchxposition scratchyposition \
+scratchtopoffset scratchbottomoffset scratchleftoffset scratchrightoffset scratchcounterone \
+scratchcountertwo scratchcounterthree scratchdimenone scratchdimentwo scratchdimenthree \
+scratchskipone scratchskiptwo scratchskipthree scratchmuskipone scratchmuskiptwo \
+scratchmuskipthree scratchtoksone scratchtokstwo scratchtoksthree scratchboxone \
+scratchboxtwo scratchboxthree scratchnx scratchny scratchmx \
+scratchmy scratchunicode scratchleftskip scratchrightskip scratchtopskip \
+scratchbottomskip doif doifnot doifelse doifinset \
+doifnotinset doifelseinset doifinsetelse doifelsenextchar doifnextcharelse \
+doifelsenextoptional doifnextoptionalelse doifelsenextoptionalcs doifnextoptionalcselse doifelsefastoptionalcheck \
+doiffastoptionalcheckelse 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 tracingall tracingnone \
+loggingall removetoks appendtoks prependtoks appendtotoks \
+prependtotoks to endgraf endpar everyendpar \
+reseteverypar finishpar empty null space \
+quad enspace nbsp obeyspaces obeylines \
+obeyedspace obeyedline obeyedtab obeyedpage normalspace \
+executeifdefined singleexpandafter doubleexpandafter tripleexpandafter dontleavehmode \
+removelastspace removeunwantedspaces keepunwantedspaces wait writestatus \
+define defineexpandable redefine setmeasure setemeasure \
+setgmeasure setxmeasure definemeasure freezemeasure measure \
+measured installcorenamespace getvalue getuvalue setvalue \
+setevalue setgvalue setxvalue letvalue letgvalue \
+resetvalue undefinevalue ignorevalue setuvalue setuevalue \
+setugvalue setuxvalue globallet glet udef \
+ugdef uedef uxdef checked unique \
+getparameters geteparameters getgparameters getxparameters forgetparameters \
+copyparameters getdummyparameters dummyparameter directdummyparameter setdummyparameter \
+letdummyparameter usedummystyleandcolor usedummystyleparameter usedummycolorparameter processcommalist \
+processcommacommand quitcommalist quitprevcommalist processaction processallactions \
+processfirstactioninset processallactionsinset unexpanded expanded startexpanded \
+stopexpanded protected 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 dowith newconstant \
+setnewconstant setconstant setconstantvalue newconditional settrue \
+setfalse settruevalue setfalsevalue 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 modulonumber dividenumber getfirstcharacter doifelsefirstchar \
+doiffirstcharelse startnointerference stopnointerference twodigits threedigits \
+leftorright offinterlineskip oninterlineskip nointerlineskip strut \
+halfstrut quarterstrut depthstrut setstrut strutbox \
+strutht strutdp strutwd struthtdp begstrut \
+endstrut lineheight 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 \
+uncramped cramped 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 startluaparameterset \
+stopluaparameterset luaparameterset definenamedlua obeylualines obeyluatokens \
+startluacode stopluacode startlua stoplua startctxfunction \
+stopctxfunction ctxfunction startctxfunctiondefinition stopctxfunctiondefinition installctxfunction \
+carryoverpar assumelongusagecs Umathbotaccent righttolefthbox lefttorighthbox \
+righttoleftvbox lefttorightvbox righttoleftvtop lefttorightvtop rtlhbox \
+ltrhbox rtlvbox ltrvbox rtlvtop ltrvtop \
+autodirhbox autodirvbox autodirvtop lefttoright righttoleft \
+synchronizelayoutdirection synchronizedisplaydirection synchronizeinlinedirection lesshyphens morehyphens \
+nohyphens dohyphens Ucheckedstartdisplaymath Ucheckedstopdisplaymath nobreak \
+allowbreak goodbreak
+
diff --git a/context/data/scite/context/scite-context-data-interfaces.properties b/context/data/scite/context/scite-context-data-interfaces.properties
new file mode 100644
index 000000000..e75b5b92b
--- /dev/null
+++ b/context/data/scite/context/scite-context-data-interfaces.properties
@@ -0,0 +1,1812 @@
+keywordclass.context.cs=\
+CAP Cap Caps Character \
+Characters Cisla KAP Kap Kaps \
+MESIC MONTH Rimskecislice Romannumerals SLOVA \
+SLOVO Slova Slovo VSEDNIDEN WEEKDAY \
+WORD WORDS Word Words Znak \
+Znaky about adaptlayout aktualnicislonadpisu aktualnidatum \
+appendix arg at atleftmargin atpage \
+atrightmargin background barevnalista barva bilemisto \
+blackrule blackrules blank bookmark bottomspace \
+bublinkovanapoveda but button bydliste bypassblocks \
+cap celkovypocetstran cernalinka cernelinky chapter \
+character characters chem cisla cislonadpisu \
+cislopodrovnice cislorovnice cislostrany citace citovat \
+clip clonefield color column comment \
+comparecolorgroup comparepalet completecombinedlist completelistoffloats completelistofsorts \
+completelistofsynonyms completepagenumber completeregister convertnumber copyfield \
+correctwhitespace coupledocument coupledregister couplemarking couplepage \
+couplepaper coupleregister crlf currentdate currentheadnumber \
+cutspace date datum decouplemarking decrementnumber \
+define defineblank defineblock definebodyfont definebodyfontDEF \
+definebodyfontREF definebodyfontenvironment definebuffer definecolor definecolorgroup \
+definecolumnbreak definecolumnset definecombination definecombinedlist defineconversion \
+definedescription definedfont defineenumeration definefield definefieldstack \
+definefiguresymbol definefloat definefont definefontfeature definefonthandling \
+definefontsynonym defineframed defineframedtext definehead defineindentedtext \
+defineinmargin defineinteractionmenu defineitemgroup definelabel definelayer \
+definelayout definelist definelogo definemakeup definemarking \
+definemathalignment defineoutput defineoverlay definepagebreak definepalet \
+definepapersize defineparagraphs defineplacement defineprofile defineprogram \
+definerawfont definereference definereferenceformat definereferencelist defineregister \
+definerule definesection definesectionblock definesorting definestartstop \
+definesubfield definesymbol definesynonyms definetabletemplate definetabulate \
+definetext definetextposition definetextvariable definetype definetypeface \
+definetyping defineversion definuj definujakcent definujbarvu \
+definujblok definujbloksekce definujbuffer definujfont definujformatodkazu \
+definujhbox definujhlavnipole definujinterakcnimenu definujkombinovanyseznam definujkonverzi \
+definujlogo definujnadpis definujobrazeksymbol definujodkaz definujodstavce \
+definujopis definujoramovani definujoramovanytext definujpaletu definujplvouciobjekt \
+definujpodpole definujpole definujpopis definujpopisek definujprekryv \
+definujpreskok definujprikaz definujprofil definujprogram definujprostredizakladnihofontu \
+definujrejstrik definujsablonutabulky definujsekci definujseznam definujseznamodkazu \
+definujskupinubarev definujstartstop definujstyl definujstylfontu definujsymbol \
+definujsynonumumfontu definujsynonyma definujtabelaci definujtext definujtrideni \
+definujupravu definujvelikostpapiru definujverzi definujvycet definujvystup \
+definujzakladnifont definujzasobnikpoli definujznaceni definujznak delkaseznamu \
+description determineheadnumber determinelistcharacteristics disableinteractionmenu dodrzujprofil \
+dodrzujverzi dodrzujverziprofilu dvoustrannypapir emptylines enumeration \
+externalfigure externiobraz fakt field fieldstack \
+fillinfield fillinline fillinrules fillintext fitfield \
+fixedspaces followprofile followprofileversion followversion footnote \
+footnotetext forceblocks fraction framed framedtext \
+from getbuffer getmarking getnumber godown \
+goto gotobox graycolor grid hairline \
+head headnumber headsym headtext hideblocks \
+high hl hlavnijazyk hlavniuroven hodnotabarvy \
+hodnotasedi immediatebetweenlist immediatetolist in indentation \
+indenting inframed ininner inleft inline \
+inmargin inneredgedistance inneredgewidth innermargindistance innermarginwidth \
+inothermargin inouter inright instalacejazyka installlanguage \
+interactionbar interactionbuttons interakcnilista interakcnitlacitka interaktivnimenu \
+item items its jazyk jdidolu \
+jdina jdinabox jdinastranu jmeno kap \
+keepblocks klonujpole komponenta konvertujcislo kopirujpole \
+korekcebilehomista labeling labels labeltext language \
+leftaligned leg listsymbol loadsorts loadsynonyms \
+logfields lohi low mainlanguage maoramovani \
+mapfontsize mar marginalnilinka marginalninadpis marginalnislovo \
+marginalnitext marginrule margintext marking markversion \
+matematika mathematics mazaramovani mediaeval meritko \
+mesic mezera midaligned mirror month \
+moveformula moveongrid movesidefloat mrizka nadpis \
+nadruhyokraj nalevo nalevyokraj name naokraj \
+napravo napravyokraj nastavbarvu nastavbarvy nastavbilamista \
+nastavblok nastavbloksekce nastavbuffer nastavcernelinky nastavcislonadpisu \
+nastavcislostrany nastavcislovani nastavcislovaniodstavcu nastavcislovaniradku nastavcislovanistran \
+nastavcitaci nastavdefinicipoznamekpodcarou nastavdeleniplvoucichobjektu nastavdelitko nastavdolnitexty \
+nastavexterniobrazy nastavhorejsek nastavhornitexty nastavinterakci nastavinterakcnilistu \
+nastavinterakcnimenu nastavinterakcniobrazovku nastavjazyk nastavkapitalky nastavkombinovanyseznam \
+nastavkomentar nastavkomentarstrany nastavlegendu nastavmarginalie nastavmarginalniblok \
+nastavmarginalnilinky nastavmeziradkovoumezeru nastavnadpis nastavnadpisy nastavodkazovani \
+nastavodsazovani nastavodstavce nastavopis nastavoramovanetexty nastavoramovani \
+nastavorez nastavotoceni nastavpaletu nastavplvouciobjekt nastavplvouciobjekty \
+nastavpodcislostrany nastavpodtrzeni nastavpole nastavpolozky nastavpopisek \
+nastavpopisky nastavpopisy nastavpozadi nastavpoznamkypodcarou nastavprechodstrany \
+nastavpreskok nastavprofily nastavprogramy nastavprostredizakladnihofontu nastavpublikace \
+nastavradkovani nastavradky nastavrastr nastavrejstrik nastavrovnice \
+nastavsadusymbolu nastavsekci nastavseznam nastavseznamodkazu nastavsirkucary \
+nastavsloupce nastavspodek nastavspojeni nastavsynchronizaci nastavsynchronizacnilistu \
+nastavsynonyma nastavsystem nastavtab nastavtabelaci nastavtabulky \
+nastavtenkelinky nastavtext nastavtexthlavicky nastavtextovelinky nastavtextpopisku \
+nastavtexttexty nastavtextyupati nastavtextyzahlavi nastavtlacitka nastavtoleranci \
+nastavtrideni nastavtype nastavumisteniprotejsku nastavumistovani nastavupati \
+nastavupravu nastavurl nastavusporadani nastavvelikostpapiru nastavverze \
+nastavvsechnapole nastavvycty nastavvyplnovelinky nastavvyplnoveradky nastavvystup \
+nastavvzhled nastavzahlavi nastavzakladnifont nastavzarovnani nastavznaceni \
+nastavzuzeni nastrane navigating nejakyradek nekde \
+nextsection neznamo nivy nizky nocap \
+noheaderandfooterlines noindenting nokap nolist nomarking \
+nomoreblocks nomorefiles nop nospace note \
+notopandbottomlines nowhitespace numberofsubpages numbers obrazovka \
+odkaz odkaznadatum odkaznastranu odkaznatext odkazujici \
+odsazenishora odsazenizleva odsazovani okr opakovat \
+opis opissoubor oramovani oref orez \
+otocit outeredgedistance outeredgewidth outermargindistance outermarginwidth \
+overbar overbars overstrike overstrikes oznaceni \
+oznacverzi packed page pagedepth pageoffset \
+pagereference paragraph parovastrana part periods \
+pis placebookmarks placecombinedlist placefloat placefootnotes \
+placeformula placeheadnumber placeheadtext placelegend placelist \
+placelistoffloats placelistofsorts placelistofsynonyms placelocalfootnotes placelogos \
+placeongrid placeontopofeachother placepagenumber placerawlist placereferencelist \
+placeregister placerule placesidebyside placesubformula placetextvariable \
+plnezneni pol pole polozka polozky \
+popisky poppisek porovnejpaletu porovnejskupinubarev position \
+positiontext pozadi pozice poznamka poznamkapodcarou \
+pref prelozit premistinamrizku prepninazakladnifont preskoc \
+prizpusobivepole prizpusobvzhled processblocks processpage produkt \
+program projekt propojeneznaceni propojenydokument propojenyrejstrik \
+prostredi publication publikace quotation quote \
+ran ref reference referral referraldate \
+register reservefloat reset resetmarking resetnumber \
+resettextcontent resetznaceni rightaligned rimskecislice romannumerals \
+rotate rozdelplvouciobjekt rozmer rozpojeneznaceni roztazene \
+scale schovejbloky screen section sedabarva \
+seeregister selectblocks selectpaper selectversion setnumber \
+settextcontent settextvariable setupalign setupanswerarea setuparranging \
+setupbackground setupbackgrounds setupblackrules setupblank setupblock \
+setupbodyfont setupbodyfontenvironment setupbottom setupbottomtexts setupbuffer \
+setupbuttons setupcapitals setupcaption setupcaptions setupclipping \
+setupcolor setupcolors setupcolumns setupcolumnset setupcolumnsetlines \
+setupcolumnsetstart setupcombinations setupcombinedlist setupcomment setupdescriptions \
+setupenumerations setupexternalfigures setupfield setupfields setupfillinlines \
+setupfillinrules setupfloat setupfloats setupfloatsplitting setupfonthandling \
+setupfontsynonym setupfooter setupfootertexts setupfootnotedefinition setupfootnotes \
+setupforms setupformulas setupframed setupframedtexts setuphead \
+setupheader setupheadertexts setupheadnumber setupheads setupheadtext \
+setuphyphenmark setupindentedtext setupindenting setupinmargin setupinteraction \
+setupinteractionbar setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 \
+setupitemgroup setupitems setuplabeltext setuplanguage setuplayout \
+setuplegend setuplinenumbering setuplines setuplinewidth setuplist \
+setuplistalternative setupmakeup setupmarginblocks setupmarginrules setupmarking \
+setupmathalignment setupnarrower setupnumber setupnumbering setupoppositeplacing \
+setupoutput setuppagenumber setuppagenumbering setuppagetransitions setuppalet \
+setuppaper setuppapersize setupparagraphnumbering setupparagraphs setupplacement \
+setuppositioning setupprofiles setupprograms setuppublications setupquote \
+setupreferencelist setupreferencing setupregister setuprotate setuprule \
+setupscreens setupsection setupsectionblock setupsorting setupspacing \
+setupstartstop setupstrut setupsubpagenumber setupsymbolset setupsynchronization \
+setupsynchronizationbar setupsynonyms setupsystem setuptab setuptables \
+setuptabulate setuptext setuptextposition setuptextrules setuptexttexts \
+setuptextvariable setupthinrules setuptolerance setuptop setuptoptexts \
+setuptype setuptyping setupunderbar setupurl setupversions \
+setupwhitespace showbodyfont showbodyfontenvironment showcolor showcolorgroup \
+showexternalfigures showfields showframe showgrid showlayout \
+showmakeup showpalet showprint showsetups showstruts \
+showsymbolset sirkalevehookraje sirkalevemarginalie sirkamarginalie sirkaokraje \
+sirkapapiru sirkapravehookraje sirkapravemarginalie sirkasazby sirkaseznamu \
+sirkatextu sirkatiskpapiru sloupec slovovpravo someline \
+somewhere sort space splitfloat spodek \
+stanovcharakteristickuseznamu stanovcislonadpisu startalignment startbackground startbarva \
+startbuffer startcislovaniradku startcitace startcolor startcolumnmakeup \
+startcolumns startcolumnset startcombination startcomment startcomponent \
+startdescription startdocument startdokument startenumeration startenvironment \
+startfact startfigure startfloattext startformula startframedtext \
+startglobalni starthiding startinteractionmenu startitemgroup startkodovani \
+startkomponenta startkorekceradku startlegend startline startlinecorrection \
+startlinenumbering startlines startlocal startlocalenvironment startlocalfootnotes \
+startlokalni startlokalnipoznamkypodcarou startmakeup startmarginalniblok startmarginalnilinka \
+startmarginblock startmarginrule startnamemakeup startnarrower startnezhustene \
+startobraz startopposite startoverlay startoverview startpacked \
+startparagraph startpositioning startpostponing startpozadi startprehled \
+startprekryv startproduct startprodukt startprofil startprofile \
+startproject startprojekt startprostredi startprotejsek startquotation \
+startradek startradky startrastr startregister startsadasymbolu \
+startsloupce startspojeni startsymbolset startsynchronizace startsynchronization \
+starttable starttables starttabulate starttabulka starttabulky \
+starttext starttextovalinka starttextrule starttyping startumistovani \
+startunpacked startuprava startversion startverze startzarovnavani \
+startzhustene startzuzeni stopalignment stopbackground stopbarva \
+stopbuffer stopcislovaniradku stopcitace stopcolor stopcolumnmakeup \
+stopcolumns stopcolumnset stopcombination stopcomment stopcomponent \
+stopdescription stopdocument stopdokument stopenumeration stopenvironment \
+stopfact stopfigure stopfloattext stopformula stopframedtext \
+stopglobalni stophiding stopinteractionmenu stopitemgroup stopkodovani \
+stopkomponenta stopkorekceradku stoplegend stopline stoplinecorrection \
+stoplinenumbering stoplines stoplocal stoplocalenvironment stoplocalfootnotes \
+stoplokalni stoplokalnipoznamkypodcarou stopmakeup stopmarginalniblok stopmarginalnilinka \
+stopmarginblock stopmarginrule stopnamemakeup stopnarrower stopnezhustene \
+stopopposite stopoverlay stopoverview stoppacked stopparagraph \
+stoppositioning stoppostponing stoppozadi stopprehled stopprekryv \
+stopproduct stopprodukt stopprofil stopprofile stopproject \
+stopprojekt stopprostredi stopprotejsek stopquotation stopradek \
+stopradky stoprastr stopsloupce stopspojeni stopsymbolset \
+stopsynchronizace stopsynchronization stoptable stoptables stoptabulate \
+stoptabulka stoptabulky stoptext stoptextovalinka stoptextrule \
+stoptyping stopumistovani stopunpacked stopuprava stopversion \
+stopverze stopzarovnavani stopzhustene stopzuzeni strana \
+stretched sub subject subpagenumber subsection \
+subsubject subsubsection subsubsubject switchtobodyfont switchtorawfont \
+sym symbol synchronizacnilista synchronizationbar synchronize \
+synchronizovat synonym tab tecky tenkalinka \
+tenkelinky testcolumn testpage tex texthlavicky \
+textovalinka textpopisku textreference textrule textvariable \
+thinrule thinrules title tlacitko tlacitkomenu \
+tloustkacary tooltip translate tref tvrdamezera \
+tvrdemezery txt typ type typebuffer \
+typefile ukazbarvu ukazexterniobrazy ukazmrizku ukaznastaveni \
+ukazpaletu ukazpodpery ukazpole ukazpostredizakladnihofontu ukazramecek \
+ukazsadusymbolu ukazskupinubarev ukazupravu ukazvytisk ukazvzhled \
+ukazzakladnifont umistikombinovanyseznam umistilegendu umistiloga umistilokalnipoznamkypodcarou \
+umistinadsebe umistinamrizku umistipodrovnici umistipoznamkypodcarou umistirejstrik \
+umistirovnici umistiseznam umistivedlesebe umistizalozky underbar \
+underbars urcicharakteristikurejstriku useURL useXMLfilter useblocks \
+usecommands usedirectory useencoding useexternaldocument useexternalfigure \
+useexternalfile useexternalfiles useexternalsoundtrack usemodule usereferences \
+usespecials usesymbols usetypescript usetypescriptfile uzijJSscripts \
+uzijURL uzijadresar uzijbloky uzijexternidokument uzijexterniobraz \
+uzijexternisoubor uzijexternisoubory uzijexternizvuk uzijkodovani uzijmodul \
+uzijmoduly uzijodkazy uzijprikazy uzijspeciality uzijsymbol \
+uzijurl version verze vl vlasovalinka \
+vlevo vpravo vradku vsedniden vyberbloky \
+vyberpapir vyberverzi vyplnenytext vyplnovelinky vyplnovepole \
+vyplnovyradek vyskahorejsku vyskapapiru vyskasazby vyskaseznamu \
+vyskaspodku vyskatextu vyskatiskpapiru vyskaupati vyskazahlavi \
+vysoky vyznam vzdalenosthorejsku vzdalenostlevehookraje vzdalenostlevemarginalie \
+vzdalenostmarginalie vzdalenostokraje vzdalenostpravehookraje vzdalenostpravemarginalie vzdalenostspodku \
+vzdalenostupati vzdalenostzahlavi weekday whitespace wordright \
+writebetweenlist writetolist writetoreferencelist writetoregister zablokujinterakcnimenu \
+zachovejbloky zadnamezera zadnebilemisto zadnedalsibloky zadnedalsisoubory \
+zadnehorniadolniradky zadneodsazovani zadnezahlaviaupati zadneznaceni zadnyrozmer \
+zadnyseznam zadnytest zalozka zapisdorejstriku zapisdoseznamu \
+zapisdoseznamuodkazu zapismeziseznam zaramovani zarovnanonastred zarovnanovlevo \
+zarovnanovpravo zasobnikpoli zaznamovepole zhustene ziskejbuffer \
+ziskejznaceni zlomek znaceni znak znaky \
+zpracujbloky zpracujstranu zrcadlit zref zvysujicicislo
+
+keywordclass.context.de=\
+Buchstabe Buchstaben CAP Cap \
+Caps Character Characters KAP Kap \
+Kaps MONAT MONTH Roemischezahlen Romannumerals \
+WEEKDAY WOCHENTAG WOERTER WORD WORDS \
+WORT Woerter Word Words Wort \
+Ziffern about abstandlinkerrand abstandoben abstandrechterrand \
+abstandunten adaptlayout amgitterausrichten amgitterneuausrichten appendix \
+arg at atleftmargin atpage atrightmargin \
+aufseite ausfuellfeld ausfuelltext ausschnitt background \
+bearbeitebloecke bearbeiteseite bedeutung behaltebloecke bei \
+bemerkung benutzekodierung benutzespezielles benutzeverzeichnis beschrifteversion \
+beschriftung bestimmekopfnummer bestimmelistencharakeristika bestimmeregistercharakteristika bildschirm \
+blackrule blackrules blank blanko bookmark \
+bottomspace breitelinkerrand breiterechterrand bruch buchstabe \
+buchstaben but button bypassblocks cap \
+chapter character characters chem clip \
+clonefield color column comment comparecolorgroup \
+comparepalet completecombinedlist completelistoffloats completelistofsorts completelistofsynonyms \
+completepagenumber completeregister convertnumber copyfield correctwhitespace \
+coupledocument coupledregister couplemarking couplepage couplepaper \
+coupleregister crlf currentdate currentheadnumber cutspace \
+date datum decouplemarking decrementnumber define \
+defineblank defineblock definebodyfont definebodyfontDEF definebodyfontREF \
+definebodyfontenvironment definebuffer definecolor definecolorgroup definecolumnbreak \
+definecolumnset definecombination definecombinedlist defineconversion definedescription \
+definedfont defineenumeration definefield definefieldstack definefiguresymbol \
+definefloat definefont definefontfeature definefonthandling definefontsynonym \
+defineframed defineframedtext definehead defineindentedtext defineinmargin \
+defineinteractionmenu defineitemgroup definelabel definelayer definelayout \
+definelist definelogo definemakeup definemarking definemathalignment \
+defineoutput defineoverlay definepagebreak definepalet definepapersize \
+defineparagraphs defineplacement defineprofile defineprogram definerawfont \
+definereference definereferenceformat definereferencelist defineregister definerule \
+defineschriftsynonym definesection definesectionblock definesorting definestartstop \
+definesubfield definesymbol definesynonyms definetabletemplate definetabulate \
+definetext definetextposition definetextvariable definetype definetypeface \
+definetyping defineversion definiereabbsymbol definiereabsaetze definiereabschnitt \
+definiereabschnittsblock definiereakzent definierebefehl definierebeschreibung definierebeschreibungen \
+definierebeschriftung definiereblanko definiereblock definierefarbe definierefarbengruppe \
+definierefeld definierefeldstapel definierefliesstext definierefliesstextumgebung definieregleitobjekt \
+definierehauptfeld definierehbox definiereinteraktionsmenue definierekonversion definierelabel \
+definiereliste definierelogo definieren definierenummerierung definiereoverlay \
+definierepalette definierepapierformat definiereprofil definiereprogramme definierepuffer \
+definierereferenz definierereferenzformat definierereferenzliste definiereregister definiereschrift \
+definiereschriftstil definieresortieren definierestartstop definierestil definieresubfeld \
+definieresymbol definieresynonyme definieretabellenvorlage definieretabulator definieretext \
+definieretippen definiereueberschrift definiereumbruch definiereumrahmt definiereumrahmtertext \
+definiereversion definierezeichen definierezusammengestellteliste description determineheadnumber \
+determinelistcharacteristics dimension disableinteractionmenu doppelseite doppelseitigespapier \
+drehen duennelinie duennerumriss einezeile einziehen \
+emptylines entknuepfebeschriftung enumeration externalfigure externeabbildung \
+farbbalken farbe farbewert feld feldstapel \
+festesspatium field fieldstack fillinfield fillinline \
+fillinrules fillintext fitfield fixedspaces folgeprofil \
+folgeprofilversion folgeversion followprofile followprofileversion followversion \
+footnote footnotetext forceblocks format formelnummer \
+fraction framed framedtext from fussnote \
+fusszeileabstand fusszeilenhoehe gefuelltesrechteck gefuelltezeile geg \
+gesamtseitenanzahl gestreckt getbuffer getmarking getnumber \
+gitter godown goto gotobox graufarbe \
+grauwert graycolor grid haarlinie hairline \
+hauptsprache head headnumber headsym headtext \
+heutigesdatum heutigeskopfnummer hideblocks high hintergrund \
+hl hoch hoeheoben hoeheunten holebeschriftung \
+holepuffer imlinken imlinkenrand immaumrise immediatebetweenlist \
+immediatetolist imrechten imrechtenrand imumriss in \
+inaktiviereinteraktionsmenue inanderermarginale indentation indenting inframed \
+ininner inleft inline inlinkermarginale inmargin \
+inmarginalie inneredgedistance inneredgewidth innermargindistance innermarginwidth \
+inothermargin inouter inrechtermarginale inright installieresprache \
+installlanguage interactionbar interactionbuttons interaktionsbalken interaktionsknopfe \
+interaktionsmenue inzeile irgendwo item items \
+its kap keepblocks keindimension keinebeschriftung \
+keinebloeckemehr keinedateienmehr keinekopfundfusszeilen keineliste keinspatium \
+keintest keinzeilenobenundunten keinzwischenraum kleinerdurchschuss klonierefeld \
+knopf komponente konvertierezahl kopf kopfniveau \
+kopfnummer kopfweite kopfzeilenabstand kopfzeilenhoehe kopierefeld \
+korrigierezwischenraum label labeling labels labeltext \
+language leftaligned leg liniendicke linkemarginalafstand \
+linkemarginalbreite linksbuendig listenbreite listenhoehe listenlaenge \
+listsymbol loadsorts loadsynonyms logfields lohi \
+low mainlanguage mapfontsize mar marginalafstand \
+marginalbreite marginallinie marginaltext marginaltitel marginalwort \
+marginrule margintext marking markversion mathematics \
+mathematik maumrise mediaeval menueknopf midaligned \
+mirror monat month moveformula moveongrid \
+movesidefloat nachunten name navigating nextsection \
+nichteinziehen nocap noheaderandfooterlines noindenting nokap \
+nolist nomarking nomoreblocks nomorefiles nop \
+nospace note notiz notopandbottomlines nowhitespace \
+numberofsubpages numbers nummererhoehen outeredgedistance outeredgewidth \
+outermargindistance outermarginwidth overbar overbars overstrike \
+overstrikes packed page pagedepth pageoffset \
+pagereference papierbreite papierhoehe paragraph part \
+passelayoutan passendfeld periods placebookmarks placecombinedlist \
+placefloat placefootnotes placeformula placeheadnumber placeheadtext \
+placelegend placelist placelistoffloats placelistofsorts placelistofsynonyms \
+placelocalfootnotes placelogos placeongrid placeontopofeachother placepagenumber \
+placerawlist placereferencelist placeregister placerule placesidebyside \
+placesubformula placetextvariable platzierebookmarks platziereformel platzierefussnoten \
+platzierelegende platziereliste platzierelogo platzierelokalefussnoten platzierenebeneinander \
+platziereregister platziereuntereinander platziereunterformel platzierezusammengestellteliste pos \
+position positiontext posten printpapierbreite printpapierhoehe \
+processblocks processpage produkt program programm \
+projekt publication publikation punkt quotation \
+quote ran randabstand randbreite rechteck \
+rechtecke rechtemarginalafstand rechtemarginalbreite rechtsbuendig ref \
+reference referenz referieren referral referraldate \
+register registrierefelder reservefloat reset resetmarking \
+resetnumber resettextcontent rightaligned roemischezahlen romannumerals \
+rotate ruecksetzten ruecksetztenbeschriftung rumpfweite satzbreite \
+satzhoehe scale schreibezumregister schreibezurliste schreibezurreferenzliste \
+schreibezwischenliste screen section seeregister seite \
+seitenreferenz seitenummer selectblocks selectpaper selectversion \
+setnumber settext settextcontent settextvariable setupalign \
+setupanswerarea setuparranging setupbackground setupbackgrounds setupblackrules \
+setupblank setupblock setupbodyfont setupbodyfontenvironment setupbottom \
+setupbottomtexts setupbuffer setupbuttons setupcapitals setupcaption \
+setupcaptions setupclipping setupcolor setupcolors setupcolumns \
+setupcolumnset setupcolumnsetlines setupcolumnsetstart setupcombinations setupcombinedlist \
+setupcomment setupdescriptions setupenumerations setupexternalfigures setupfield \
+setupfields setupfillinlines setupfillinrules setupfloat setupfloats \
+setupfloatsplitting setupfonthandling setupfontsynonym setupfooter setupfootertexts \
+setupfootnotedefinition setupfootnotes setupforms setupformulas setupframed \
+setupframedtexts setuphead setupheader setupheadertexts setupheadnumber \
+setupheads setupheadtext setuphyphenmark setupindentedtext setupindenting \
+setupinmargin setupinteraction setupinteractionbar setupinteractionmenu setupinteractionscreen \
+setupinterlinespace setupinterlinespace2 setupitemgroup setupitems setuplabeltext \
+setuplanguage setuplayout setuplegend setuplinenumbering setuplines \
+setuplinewidth setuplist setuplistalternative setupmakeup setupmarginblocks \
+setupmarginrules setupmarking setupmathalignment setupnarrower setupnumber \
+setupnumbering setupoppositeplacing setupoutput setuppagenumber setuppagenumbering \
+setuppagetransitions setuppalet setuppaper setuppapersize setupparagraphnumbering \
+setupparagraphs setupplacement setuppositioning setupprofiles setupprograms \
+setuppublications setupquote setupreferencelist setupreferencing setupregister \
+setuprotate setuprule setupscreens setupsection setupsectionblock \
+setupsorting setupspacing setupstartstop setupstrut setupsubpagenumber \
+setupsymbolset setupsynchronization setupsynchronizationbar setupsynonyms setupsystem \
+setuptab setuptables setuptabulate setuptext setuptextposition \
+setuptextrules setuptexttexts setuptextvariable setupthinrules setuptolerance \
+setuptop setuptoptexts setuptype setuptyping setupunderbar \
+setupurl setupversions setupwhitespace showbodyfont showbodyfontenvironment \
+showcolor showcolorgroup showexternalfigures showfields showframe \
+showgrid showlayout showmakeup showpalet showprint \
+showsetups showstruts showsymbolset someline somewhere \
+sort space spalte spatium spiegeln \
+splitfloat sprache startabbildung startalignment startausrichtung \
+startbackground startbuffer startcolor startcolumnmakeup startcolumns \
+startcolumnset startcombination startcomment startcomponent startdescription \
+startdocument startdokument startenger startenumeration startenvironment \
+startfact startfarbe startfigure startfloattext startformula \
+startframedtext startgegenueber startglobal startgrosserdurchschuss starthiding \
+starthintergrund startinteractionmenu startitemgroup startkleinerdurchschuss startkodierung \
+startkombination startkomponente startlegend startline startlinecorrection \
+startlinenumbering startlines startlocal startlocalenvironment startlocalfootnotes \
+startlokal startlokalefussnoten startmakeup startmarginalblock startmarginallinie \
+startmarginblock startmarginrule startnamemakeup startnarrower startopposite \
+startoverlay startoverview startpacked startparagraph startpositionieren \
+startpositioning startpostponing startproduct startprodukt startprofil \
+startprofile startproject startprojekt startquotation startraster \
+startregister startspalten startsymbolset startsynchronisation startsynchronization \
+starttabelle starttabellen starttable starttables starttabulate \
+starttext starttextlinie starttextrule starttyping startueberblick \
+startumbruch startumgebung startunpacked startversion startzeile \
+startzeilen startzeilenkorrektur startzeilennumerierung startzitat stelleabsaetzeein \
+stelleabsatznummerierungein stelleabschnittein stelleabschnittsblockein stelleanordnenein stelleaufzaehlungenein \
+stelleausgabeein stelleausrichtungein stelleausschnittein stellebeschreibungein stellebeschriftungein \
+stellebilderunterschriftein stellebildunterschriftein stellebindestrichein stelleblankoein stelleblockein \
+stelledrehenein stelleduennerumrissein stelleeinziehenein stelleengerein stelleexterneabbildungenein \
+stellefarbeein stellefarbenein stellefeldein stellefelderin stellefliesstextein \
+stellefliesstextumgebungein stelleformelnein stellefussnotendefinitionein stellefussnotenein stellefusszeileein \
+stellefusszeilentextein stellegefuelltesrechteckein stellegefuelltezeileein stellegegenueberplatzierenein stellegleitobjekteein \
+stellegleitobjektein stellehintergruendeein stellehintergrundein stelleinmarginalieein stelleinteraktionein \
+stelleinteraktionsbalkenein stelleinteraktionsbildschirmein stelleinteraktionsmenueein stelleknopfein stellekombinationein \
+stellekommentarein stellekopfzahlein stellekopfzeileein stellekopfzeilentextein stellelabeltextein \
+stellelayoutein stellelegendeein stellelinienbreiteein stellelisteein stellemarginalblockein \
+stellemarginallinieein stellenobenein stellenummerierungein stellepaletteein stellepapierformatein \
+stelleplatziegeteiltegleitobjekt stellepositionierenein stellepostenein stelleprofilein stelleprogrammein \
+stellepublikationein stellepufferein stellerasterein stellerechteckein stellereferenzierenein \
+stellereferenzlisteein stelleregisterein stelleseitenkommentarein stelleseitennummerein stelleseitennummeriernungein \
+stelleseitenuebergangein stellesortierenein stellespaltenein stellespatiumein stellespracheein \
+stellesymbolsetein stellesynchronisationein stellesynchronisationsbalkenein stellesynonymein stellesystemein \
+stelletabein stelletabellenein stelletabulatorein stelletextein stelletextobenein \
+stelletexttexteein stelletextumrissein stelletextuntenein stelletipein stelletippenein \
+stelletoleranzein stelleueberschriftein stelleueberschriftenein stelleueberschrifttextein stelleumbruchein \
+stelleumrahmtein stelleumrahmtetexteein stelleuntenein stelleunterseitennummerein stelleunterstreichenein \
+stelleurlein stelleversalienein stelleversionein stellezeilenabstandein stellezeilenein \
+stellezeilennumerierungein stellezitierenein stellezusammengestelltelisteein stellezwischenraumein stopalignment \
+stopausrichtung stopbackground stopbuffer stopcolor stopcolumnmakeup \
+stopcolumns stopcolumnset stopcombination stopcomment stopcomponent \
+stopdescription stopdocument stopdokument stopenger stopenumeration \
+stopenvironment stopfact stopfarbe stopfigure stopfloattext \
+stopformula stopframedtext stopgegenueber stopglobal stopgrosserdurchschuss \
+stophiding stophintergrund stopinteractionmenu stopitemgroup stopkleinerdurchschuss \
+stopkodierung stopkombination stopkomponente stoplegend stopline \
+stoplinecorrection stoplinenumbering stoplines stoplocal stoplocalenvironment \
+stoplocalfootnotes stoplokal stoplokalefussnoten stopmakeup stopmarginalblock \
+stopmarginallinie stopmarginblock stopmarginrule stopnamemakeup stopnarrower \
+stopopposite stopoverlay stopoverview stoppacked stopparagraph \
+stoppositionieren stoppositioning stoppostponing stopproduct stopprodukt \
+stopprofil stopprofile stopproject stopprojekt stopquotation \
+stopraster stopspalten stopsymbolset stopsynchronisation stopsynchronization \
+stoptabelle stoptabellen stoptable stoptables stoptabulate \
+stoptext stoptextlinie stoptextrule stoptyping stopueberblick \
+stopumbruch stopumgebung stopunpacked stopversion stopzeile \
+stopzeilen stopzeilenkorrektur stopzeilennumerierung stopzitat stretched \
+sub subject subpagenumber subsection subsubject \
+subsubsection subsubsubject switchtobodyfont switchtorawfont sym \
+symbol synchronisationsbalken synchronisieren synchronizationbar synchronize \
+synonym tab teilegleitobjekt testcolumn testpage \
+tex textbreite texthoehe textlinie textreference \
+textreferenz textrule textvariable thinrule thinrules \
+tief tiho tip tippedatei tippen \
+tippepuffer title tooltip translate txt \
+typ type typebuffer typefile ueber \
+ueberschrifttext uebersetzten umgebung umrahmt unbekant \
+underbar underbars unterformelnummer useURL useXMLfilter \
+useblocks usecommands usedirectory useencoding useexternaldocument \
+useexternalfigure useexternalfile useexternalfiles useexternalsoundtrack usemodule \
+usereferences usespecials usesymbols usetypescript usetypescriptfile \
+verbergebloecke vergleichefarbengruppe vergleichepalette verknuepfebeschriftung verknuepfedokument \
+verknuepfregister version verweis verweisdatum verwendeJSscript \
+verwendeURL verwendebefehl verwendebloecke verwendeexteresdokument verwendeexterneabbildung \
+verwendeexternedatei verwendeexternedateien verwendeexternestonstueck verwendemodul verwendemodule \
+verwendereferenzen verwendesymbole verwendeurl vl volleswort \
+von waehlebloeckeaus waehlepapieraus waehleversionaus wechselezumfliesstext \
+weekday whitespace wiederholen wochentag wohnort \
+wordright wortrechts writebetweenlist writetolist writetoreferencelist \
+writetoregister zeigedruck zeigeeinstellungen zeigeexterneabbildungen zeigefarbe \
+zeigefarbengruppe zeigefelder zeigefliesstext zeigefliesstextumgebung zeigegitter \
+zeigelayout zeigepalette zeigerahmen zeigestruts zeigeumbruch \
+zentriert ziffern zitat zitieren zu \
+zurbox zurseite zwischenraum
+
+keywordclass.context.en=\
+CAP Cap Caps Character \
+Characters MONTH Numbers Romannumerals WEEKDAY \
+WORD WORDS Word Words about \
+adaptlayout adding appendix arg at \
+atleftmargin atpage atrightmargin background backspace \
+blackrule blackrules blank bookmark bottomdistance \
+bottomheight bottomspace but button bypassblocks \
+cap chapter character characters chem \
+clip clonefield color colorbar colorvalue \
+column comment comparecolorgroup comparepalet completecombinedlist \
+completelistoffloats completelistofsorts completelistofsynonyms completepagenumber completeregister \
+component convertnumber copyfield correctwhitespace coupledocument \
+coupledregister couplemarking couplepage couplepaper coupleregister \
+crlf currentdate currentheadnumber cutspace date \
+decouplemarking decrementnumber define defineaccent defineblank \
+defineblock definebodyfont definebodyfontDEF definebodyfontREF definebodyfontenvironment \
+definebuffer definecharacter definecolor definecolorgroup definecolumnbreak \
+definecolumnset definecombination definecombinedlist definecommand defineconversion \
+definedescription definedfont defineenumeration definefield definefieldstack \
+definefiguresymbol definefloat definefont definefontfeature definefonthandling \
+definefontstyle definefontsynonym defineframed defineframedtext definehbox \
+definehead defineindentedtext defineinmargin defineinteractionmenu defineitemgroup \
+definelabel definelayer definelayout definelist definelogo \
+definemainfield definemakeup definemarking definemathalignment defineoutput \
+defineoverlay definepagebreak definepalet definepapersize defineparagraphs \
+defineplacement defineprofile defineprogram definerawfont definereference \
+definereferenceformat definereferencelist defineregister definerule definesection \
+definesectionblock definesorting definestartstop definestyle definesubfield \
+definesymbol definesynonyms definetabletemplate definetabulate definetext \
+definetextbackground definetextposition definetextvariable definetype definetypeface \
+definetyping defineversion description determineheadnumber determinelistcharacteristics \
+determineregistercharacteristics dimension disableinteractionmenu domicile donttest \
+edgedistance edgewidth emptylines enumeration environment \
+externalfigure fact field fieldstack fillinfield \
+fillinline fillinrules fillintext fitfield fixedspace \
+fixedspaces followprofile followprofileversion followversion footerdistance \
+footerheight footnote footnotetext forceblocks formulanumber \
+fraction framed framedtext from getbuffer \
+getmarking getnumber godown goto gotobox \
+gotopage graycolor greyvalue grid hairline \
+head headerdistance headerheight headlevel headnumber \
+headsym headtext hideblocks high hl \
+immediatebetweenlist immediatetolist in incrementnumber indentation \
+indenting inframed infull ininner inleft \
+inleftedge inleftmargin inline inmaframed inmargin \
+inneredgedistance inneredgewidth innermargindistance innermarginwidth inothermargin \
+inouter inright inrightedge inrightmargin installlanguage \
+interactionbar interactionbuttons interactionmenu item items \
+its keepblocks label labeling labels \
+labeltext language leftaligned leftedgedistance leftedgewidth \
+leftmargindistance leftmarginwidth leg linethickness listheight \
+listlength listsymbol listwidth loadsorts loadsynonyms \
+logfields lohi low maframed mainlanguage \
+makeupheight makeupwidth mapfontsize mar margindistance \
+marginrule margintext margintitle marginwidth marginword \
+marking markversion mathematics mediaeval menubutton \
+midaligned mirror month moveformula moveongrid \
+movesidefloat name navigating nextsection nocap \
+nodimension noheaderandfooterlines noindenting nolist nomarking \
+nomoreblocks nomorefiles nop nospace note \
+notopandbottomlines nowhitespace numberofsubpages numbers outeredgedistance \
+outeredgewidth outermargindistance outermarginwidth overbar overbars \
+overstrike overstrikes packed page pagedepth \
+pagenumber pageoffset pagereference paperheight paperwidth \
+paragraph part periods placebookmarks placecombinedlist \
+placefloat placefootnotes placeformula placeheadnumber placeheadtext \
+placelegend placelist placelistoffloats placelistofsorts placelistofsynonyms \
+placelocalfootnotes placelogos placeongrid placeontopofeachother placepagenumber \
+placerawlist placereferencelist placeregister placerule placesidebyside \
+placesubformula placetextvariable position positiontext printpaperheight \
+printpaperwidth processblocks processpage product program \
+project publication quotation quote ran \
+redo ref reference referral referraldate \
+referring register remark reservefloat reset \
+resetmarking resetnumber resettextcontent rightaligned rightedgedistance \
+rightedgewidth rightmargindistance rightmarginwidth romannumerals rotate \
+scale screen section seeregister selectblocks \
+selectpaper selectversion setnumber settextcontent settextvariable \
+setupalign setupanswerarea setuparranging setupbackground setupbackgrounds \
+setupblackrules setupblank setupblock setupbodyfont setupbodyfontenvironment \
+setupbottom setupbottomtexts setupbuffer setupbuttons setupcapitals \
+setupcaption setupcaptions setupclipping setupcolor setupcolors \
+setupcolumns setupcolumnset setupcolumnsetlines setupcolumnsetstart setupcombinations \
+setupcombinedlist setupcomment setupdescriptions setupenumerations setupexternalfigures \
+setupfield setupfields setupfillinlines setupfillinrules setupfloat \
+setupfloats setupfloatsplitting setupfonthandling setupfontsynonym setupfooter \
+setupfootertexts setupfootnotedefinition setupfootnotes setupforms setupformulae \
+setupformulas setupframed setupframedtexts setuphead setupheader \
+setupheadertexts setupheadnumber setupheads setupheadtext setuphyphenmark \
+setupindentedtext setupindenting setupinmargin setupinteraction setupinteractionbar \
+setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 setupitemgroup \
+setupitemizations setupitems setuplabeltext setuplanguage setuplayout \
+setuplegend setuplinenumbering setuplines setuplinewidth setuplist \
+setuplistalternative setupmakeup setupmarginblocks setupmarginrules setupmarking \
+setupmathalignment setupnarrower setupnumber setupnumbering setupoppositeplacing \
+setupoutput setuppagecomment setuppagenumber setuppagenumbering setuppagetransitions \
+setuppalet setuppaper setuppapersize setupparagraphnumbering setupparagraphs \
+setupplacement setuppositioning setupprofiles setupprograms setuppublications \
+setupquote setupreferencelist setupreferencing setupregister setuprotate \
+setuprule setupscreens setupsection setupsectionblock setupsorting \
+setupspacing setupstartstop setupstrut setupsubpagenumber setupsymbolset \
+setupsynchronization setupsynchronizationbar setupsynonyms setupsystem setuptab \
+setuptables setuptabulate setuptext setuptextbackground setuptextposition \
+setuptextrules setuptexttexts setuptextvariable setupthinrules setuptolerance \
+setuptop setuptoptexts setuptype setuptyping setupunderbar \
+setupurl setupversions setupwhitespace showbodyfont showbodyfontenvironment \
+showcolor showcolorgroup showexternalfigures showfields showframe \
+showgrid showlayout showmakeup showpalet showprint \
+showsetups showstruts showsymbolset someline somewhere \
+sort space splitfloat startalignment startbackground \
+startbuffer startcoding startcolor startcolumnmakeup startcolumns \
+startcolumnset startcombination startcomment startcomponent startdescription \
+startdocument startenumeration startenvironment startfact startfigure \
+startfloattext startformula startframed startframedtext startglobal \
+starthiding startinteractionmenu startitemgroup startlegend startline \
+startlinecorrection startlinenumbering startlines startlocal startlocalenvironment \
+startlocalfootnotes startmakeup startmarginblock startmarginrule startnamemakeup \
+startnarrower startopposite startoverlay startoverview startpacked \
+startparagraph startpositioning startpostponing startproduct startprofile \
+startproject startquotation startraster startregister startsymbolset \
+startsynchronization starttable starttables starttabulate starttext \
+starttextbackground starttextrule starttyping startunpacked startversion \
+stopalignment stopbackground stopbuffer stopcoding stopcolor \
+stopcolumnmakeup stopcolumns stopcolumnset stopcombination stopcomment \
+stopcomponent stopdescription stopdocument stopenumeration stopenvironment \
+stopfact stopfigure stopfloattext stopformula stopframed \
+stopframedtext stopglobal stophiding stopinteractionmenu stopitemgroup \
+stoplegend stopline stoplinecorrection stoplinenumbering stoplines \
+stoplocal stoplocalenvironment stoplocalfootnotes stopmakeup stopmarginblock \
+stopmarginrule stopnamemakeup stopnarrower stopopposite stopoverlay \
+stopoverview stoppacked stopparagraph stoppositioning stoppostponing \
+stopproduct stopprofile stopproject stopquotation stopraster \
+stopsymbolset stopsynchronization stoptable stoptables stoptabulate \
+stoptext stoptextbackground stoptextrule stoptyping stopunpacked \
+stopversion stretched sub subformulanumber subject \
+subpagenumber subsection subsubject subsubsection subsubsubject \
+switchtobodyfont switchtorawfont sym symbol symoffset \
+synchronizationbar synchronize synonym tab testcolumn \
+testpage tex textheight textreference textrule \
+textvariable textwidth thinrule thinrules title \
+tooltip topdistance topheight topspace totalnumberofpages \
+translate txt typ type typebuffer \
+typefile underbar underbars unitmeaning unknown \
+useJSscripts useURL useXMLfilter useblocks usecommands \
+usedirectory useencoding useexternaldocument useexternalfigure useexternalfile \
+useexternalfiles useexternalsoundtrack usemodule usemodules usereferences \
+usespecials usesymbols usetypescript usetypescriptfile useurl \
+version vl weekday whitespace wordright \
+writebetweenlist writetolist writetoreferencelist writetoregister
+
+keywordclass.context.fr=\
+CAP Cap Caps Caractere \
+Caracteres Character Characters Chiffresromains JOURSEMAINE \
+MOIS MONTH MOT MOTS Mot \
+Mots Numeros Romannumerals WEEKDAY WORD \
+WORDS Word Words a about \
+adaptedisposition adaptlayout affectenumero affectevariabletexte ajustechamp \
+alaligne alapage aligneadroite aligneagauche aligneaumilieu \
+appendix arg arriereplan at atleftmargin \
+atpage atrightmargin background baha barrecouleur \
+barreinteraction barresynchronisation bas blackrule blackrules \
+blank bookmark bouton boutonmenu boutonsinteraction \
+but button bypassblocks cacheblocs cap \
+caractere caracteres champ changepolicebrute changepolicecorps \
+chapter character characters chem chiffresromains \
+citation citer clip clonechamp clonefield \
+colonne color column comment commentaire \
+comparecolorgroup comparegroupecouleur comparepalet comparepalette completecombinedlist \
+completelistoffloats completelistofsorts completelistofsynonyms completenumeropage completeregister \
+completeregistre composant composeenalinea concernant convertitnumero \
+convertnumber copitchamp copyfield correctwhitespace corrigeespaceblanc \
+couleur couleurgrise coupledocument coupledregister couplemarking \
+couplemarquage couplepage couplepaper couplepapier coupleregister \
+coupleregistre crlf currentdate currentheadnumber cutspace \
+dactylographier dans dansautremarge dansborddroit dansbordgauche \
+dansdroite dansgauche dansmarge dansmargedroite dansmargegauche \
+date datecourante daterecommandation de decouplemarking \
+decouplemarquage decrementenumero define defineblank defineblock \
+definebodyfont definebodyfontDEF definebodyfontREF definebodyfontenvironment definebuffer \
+definecolor definecolorgroup definecombination definecombinedlist defineconversion \
+definedescription definedfont defineenumeration definefield definefieldstack \
+definefiguresymbol definefloat definefont definefontfeature definefonthandling \
+definefontsynonym defineframed defineframedtext definehead defineindentedtext \
+defineinteractionmenu defineitemgroup definelabel definelist definelogo \
+definemakeup definemarking definemathalignment defineoutput defineoverlay \
+definepalet definepapersize defineparagraphs defineplacement defineprofile \
+defineprogram definereference definereferenceformat definereferencelist defineregister \
+definesection definesectionblock definesorting definestartstop definesubfield \
+definesymbol definesynonyms definetabletemplate definetabulate definetext \
+definetype definetypeface definetyping defineversion definicaractere \
+definit definitaccent definitbloc definitblocsection definitbuffer \
+definitcalque definitchamp definitchampprincipal definitcommande definitconversion \
+definitcouleur definitdactylo definitdansmarge definitdemarrestoppe definitdescription \
+definitdisposition definitenumeration definitenvironnementpolicecorps definitetiquette definitflottant \
+definitformatreference definitgroupecouleur definithbox definitjeucolonne definitliste \
+definitlisteimbriquee definitlistereference definitlogo definitmakeup definitmarquage \
+definitmenuinteraction definitnotepdp definitpalette definitparagraphes definitpilechamp \
+definitpolice definitpolicebrute definitpolicecorps definitpositiontexte definitprofil \
+definitprogramme definitreference definitregistre definitregle definitrevetement \
+definitsautdecolonne definitsautdepage definitsection definitsortie definitsouschamp \
+definitstyle definitstylepolice definitsymbole definitsymbolefigure definitsynonymepolice \
+definitsynonymes definittabulation definittaillepapier definittete definittexte \
+definittrametableau definittri definittype definitvariabletexte definitversion \
+definitvide demarrealignement demarrearriereplan demarreblocmarge demarrecitation \
+demarreciter demarrecodage demarrecolonnes demarrecombinaison demarrecompoetroite \
+demarrecomposant demarrecorrectionligne demarrecouleur demarredegroupe demarredocument \
+demarreenvironement demarrefigure demarreglobal demarregroupe demarrejeucolonne \
+demarrejeusymboles demarreligne demarreligneregleetexte demarrelignes demarrelocal \
+demarremakeup demarremargereglee demarrenotespdplocales demarrenumerotationligne demarreopposition \
+demarrepositionnement demarreproduit demarreprofil demarreprojet demarreraster \
+demarrerevetement demarresynchronisation demarretableau demarretableaux demarretexte \
+demarreversion demarrevuedensemble deplaceformule deplacesurgrille description \
+determinecaracteristiqueliste determinecaracteristiquesregistre determineheadnumber determinelistcharacteristics determinenumerotete \
+dimension disableinteractionmenu distancebord distanceborddroit distancebordgauche \
+distanceentete distanceinf distancemarge distancemargedroite distancemargegauche \
+distancepdp distancesup domicile echelle ecran \
+ecritdansliste ecritdanslistereference ecritentreliste ecritregistre el \
+element elements emptylines enumeration environement \
+espace espaceblanc espacefixe espaceinf espacesfixes \
+espacesup etiquette etiquettes etire externalfigure \
+fait faitreference fichierdactylo field fieldstack \
+figureexterne fillinfield fillinline fillinrules fillintext \
+fitfield fixedspaces followprofile followprofileversion followversion \
+footnote footnotetext forceblocks forceblocs fraction \
+framed framedtext from gardeblocs getbuffer \
+getmarking getnumber godown goto gotobox \
+graycolor grid grille groupe hairline \
+haut hauteureditionpapier hauteurentete hauteurinf hauteurliste \
+hauteurmakeup hauteurpapier hauteurpdp hauteursup hauteurtexte \
+head headnumber headsym headtext hideblocks \
+high hl immediatebetweenlist immediatetolist in \
+inconnu incrementenumero indentation indenting inframed \
+infull inhibemenuinteraction ininner inleft inline \
+inmargin inmframed inneredgedistance inneredgewidth innermargindistance \
+innermarginwidth inothermargin inouter inright installelangue \
+installlanguage interactionbar interactionbuttons item items \
+its joursemaine keepblocks labeling labels \
+labeltext labeltexte language langue langueprincipale \
+largeurbord largeurborddroit largeurbordgauche largeureditionpapier largeurligne \
+largeurliste largeurmakeup largeurmarge largeurmargedroite largeurmargegauche \
+largeurpapier largeurtexte leftaligned leg ligneh \
+lignenoire ligneregleetexte lignesnoires listesymbole listsymbol \
+llongueurliste loadsorts loadsynonyms logchamp logfields \
+lohi low mainlanguage mapfontsize mar \
+margereglee marginrule margintext marking markversion \
+marquage marquageversion marquepage mathematics mathematique \
+mediaeval menuinteraction mframed midaligned mirror \
+mois month montrecadre montrechamps montrecouleur \
+montredisposition montreedition montreenvironnementpolicecorps montrefiguresexternes montregrille \
+montregroupecouleur montrejeusymboles montremakeup montrepalette montrepolicecorps \
+montrereglages montrestruts motdroit motmarge moveongrid \
+movesidefloat name navigating nextsection niveautete \
+nocap noheaderandfooterlines noindenting nolist nomarking \
+nombredesouspages nombretotaldepages nommacro nomoreblocks nomorefiles \
+nop nospace note notepdp notopandbottomlines \
+nowhitespace numbers numeroformule numeropage numeros \
+numerosousformule numerotete numerotetecourant obtientmarquage oriente \
+outeredgedistance outeredgewidth outermargindistance outermarginwidth overbar \
+overbars overstrike overstrikes packed page \
+pagedepth pagedouble pageoffset pagereference paragraph \
+part pasplusdeblocs pasplusdefichiers periodes periods \
+pilechamp placebookmarks placecombinedlist placecoteacote placefloat \
+placeflottant placefootnotes placeformula placeformule placelegend \
+placelegende placelesunsaudessusdesautres placelist placeliste placelisteinmbriquee \
+placelistereference placelistoffloats placelistofsorts placelistofsynonyms placelocalfootnotes \
+placelogos placemarquespages placenotespdp placenotespdplocales placenumeropage \
+placenumerotete placeongrid placeontopofeachother placerawlist placereferencelist \
+placeregister placeregistre placeregle placesidebyside placesousformule \
+placesubformula placesurgrille placetextetete placevariabletexte position \
+positionnetexte prendbuffer processblocks processpage produit \
+program programme projet publication qqpart \
+quotation quote ran raz razmarquage \
+raznumero recommandation ref refait reference \
+referencepage referencetexte referral referraldate reflete \
+register reglealignement reglearrangement reglearriereplan reglearriereplans \
+reglebarreinteraction reglebarresynchronisation reglebloc regleblocmarge regleblocsection \
+regleboutons reglebuffer reglecapitales reglechamp reglechamps \
+regleclipping reglecolonnes reglecombinaisons reglecommentaire reglecommentairepage \
+reglecompoetroite reglecomposeenalinea reglecouleur reglecouleurs regledactylo \
+regledansmarge regledemarrestoppe regledescriptions regledisposition regleecraninteraction \
+regleecrans regleelements regleencadre regleentete regleenumerations \
+regleenvironnementpolicecorps regleepaisseurligne regleespaceblanc regleespacement regleespacementinterligne \
+reglefiguresexternes regleflottant regleflottants regleformulaires regleformules \
+reglegroupeselements regleinf regleinteraction regleintitule regleintitules \
+reglejeucolonne reglejeusymboles reglelabeltexte reglelangue reglelegende \
+reglelignes reglelignesnoires reglelignesreglestexte regleliste reglelisteimbriquee \
+reglelistereference reglemakeup reglemargereglee reglemarquage reglemarquagehyphenation \
+reglemenuinteraction reglenotepdp reglenumero reglenumeropage reglenumerotation \
+reglenumerotationligne reglenumerotationpage reglenumerotationparagraphe reglenumerotete regleoriente \
+reglepalette reglepapier regleparagraphes reglepdp regleplacementopposition \
+reglepolicecorps reglepositionnement reglepositiontexte regleprofils regleprogrammes \
+reglepublications reglereferencage regleregistre regleregle regleremplitligne \
+regleremplitlignesreglees reglesection regleseparationflottant reglesortie reglesouslignage \
+reglesousnumeropage reglestrut reglesup reglesynchronisation reglesynonymes \
+reglesysteme regletab regletableaux regletabulation regletaillepapier \
+regletete regletetes regletexte regletextesentete regletextesinf \
+regletextespdp regletextessup regletextestexte regletextetete regletolerance \
+regletraitsfins regletransitionspage regletri regletype regleurl \
+reglevariabletexte regleversions remplitchamp remplitligne remplitlignesreglees \
+remplittexte reservefloat reset resetmarking resettextcontent \
+retourarriere rightaligned romannumerals rotate sansalinea \
+sansdimension sansespace sansespaceblanc sanslignesenteteetpdp sanslignessupetinf \
+sansliste sansmarquage sanstest sauteblocs scale \
+screen section seeregister selectblocks selectionneblocs \
+selectionnepapier selectionneversion selectpaper selectversion sensunite \
+separeflottant settext settextcontent setupalign setupanswerarea \
+setuparranging setupbackground setupbackgrounds setupblackrules setupblank \
+setupblock setupbodyfont setupbodyfontenvironment setupbottom setupbottomtexts \
+setupbuffer setupbuttons setupcapitals setupcaption setupcaptions \
+setupclipping setupcolor setupcolors setupcolumns setupcolumnsetlines \
+setupcolumnsetstart setupcombinations setupcombinedlist setupcomment setupdescriptions \
+setupenumerations setupexternalfigures setupfield setupfields setupfillinlines \
+setupfillinrules setupfloat setupfloats setupfloatsplitting setupfonthandling \
+setupfontsynonym setupfooter setupfootertexts setupfootnotedefinition setupfootnotes \
+setupforms setupformulas setupframed setupframedtexts setuphead \
+setupheader setupheadertexts setupheadnumber setupheads setupheadtext \
+setuphyphenmark setupindentedtext setupindenting setupinmargin setupinteraction \
+setupinteractionbar setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 \
+setupitemgroup setupitems setuplabeltext setuplanguage setuplayout \
+setuplegend setuplinenumbering setuplines setuplinewidth setuplist \
+setuplistalternative setupmakeup setupmarginblocks setupmarginrules setupmarking \
+setupmathalignment setupnarrower setupnumbering setupoppositeplacing setupoutput \
+setuppagenumber setuppagenumbering setuppagetransitions setuppalet setuppaper \
+setuppapersize setupparagraphnumbering setupparagraphs setupplacement setuppositioning \
+setupprofiles setupprograms setuppublications setupquote setupreferencelist \
+setupreferencing setupregister setuprotate setupscreens setupsection \
+setupsectionblock setupsorting setupspacing setupstrut setupsubpagenumber \
+setupsymbolset setupsynchronization setupsynchronizationbar setupsynonyms setupsystem \
+setuptab setuptables setuptabulate setuptext setuptextrules \
+setuptexttexts setupthinrules setuptolerance setuptop setuptoptexts \
+setuptype setuptyping setupunderbar setupurl setupversions \
+setupwhitespace showbodyfont showbodyfontenvironment showcolor showcolorgroup \
+showexternalfigures showfields showframe showgrid showlayout \
+showmakeup showpalet showprint showsetups showstruts \
+showsymbolset someline somewhere sort sousnumeropage \
+space splitfloat startalignment startbackground startbuffer \
+startcolor startcolumnmakeup startcolumns startcombination startcomment \
+startcomponent startdescription startdocument startenumeration startenvironment \
+startfact startfigure startfloattext startformula startframedtext \
+starthiding startinteractionmenu startitemgroup startlegend startline \
+startlinecorrection startlinenumbering startlines startlocal startlocalenvironment \
+startlocalfootnotes startmakeup startmarginblock startmarginrule startnamemakeup \
+startnarrower startopposite startoverlay startoverview startpacked \
+startparagraph startpositioning startpostponing startproduct startprofile \
+startproject startquotation startregister startsymbolset startsynchronization \
+starttable starttables starttabulate starttextrule starttyping \
+startunpacked startversion stopalignment stopbackground stopbuffer \
+stopcolor stopcolumnmakeup stopcolumns stopcombination stopcomment \
+stopcompoetroite stopcomponent stopdescription stopdocument stopenumeration \
+stopenvironment stopfact stopfigure stopfloattext stopformula \
+stopframedtext stophiding stopinteractionmenu stopitemgroup stoplegend \
+stopline stoplinecorrection stoplinenumbering stoplines stoplocal \
+stoplocalenvironment stoplocalfootnotes stopmakeup stopmarginblock stopmarginrule \
+stopnamemakeup stopnarrower stopopposite stopoverlay stopoverview \
+stoppacked stopparagraph stoppealignement stoppearriereplan stoppeblocmarge \
+stoppecitation stoppecodage stoppecolonnes stoppecombinaison stoppecomposant \
+stoppecorrectionligne stoppecouleur stoppedegroupe stoppedocument stoppeenvironement \
+stoppeglobal stoppegroupe stoppejeucolonne stoppeligne stoppeligneregleetexte \
+stoppelignes stoppelocal stoppemakeup stoppemargereglee stoppenotespdplocales \
+stoppenumerotationligne stoppeopposition stoppepositionnement stoppeproduit stoppeprofil \
+stoppeprojet stopperaster stopperevetement stoppesynchronisation stoppetableau \
+stoppetableaux stoppetexte stoppeversion stoppevuedensemble stoppositioning \
+stoppostponing stopproduct stopprofile stopproject stopquotation \
+stopsymbolset stopsynchronization stoptable stoptables stoptabulate \
+stoptextrule stoptyping stopunpacked stopversion stretched \
+sub subject subsection subsubject subsubsection \
+subsubsubject suggestion suivantprofil suivantversion suivantversionprofil \
+switchtobodyfont sym symbol symbole synchronise \
+synchronizationbar synchronize synonym tab tapebuffer \
+testcolumn testpage tete tex textemarge \
+textenotepdp textetete textreference textrule thinrule \
+thinrules title titremarge tooltip traduire \
+traiteblocs traitepage traitfin traitsfins translate \
+txt typ type typebuffer typefile \
+underbar underbars uneligne useURL useXMLfilter \
+useblocks usecommands usedirectory useencoding useexternaldocument \
+useexternalfigure useexternalfile useexternalfiles useexternalsoundtrack usemodule \
+usereferences usespecials usesymbols usetypescript usetypescriptfile \
+utiliseJSscripts utiliseURL utiliseblocs utilisechemin utilisecommandes \
+utilisedocumentexterne utiliseencodage utilisefichierexterne utilisefichiersexternes utilisefigureexterne \
+utilisemodule utilisemodules utilisepsiteaudioexterne utilisereferences utilisespecialites \
+utilisesymboles utiliseurl va vaalaboite vaalapage \
+vaenbas valeurcouleur valeurgris variabletexte version \
+vide vl weekday whitespace wordright \
+writebetweenlist writetolist writetoreferencelist writetoregister
+
+keywordclass.context.it=\
+CAP Cap Caps Character \
+Characters GIORNOSETTIMANA Lettera Lettere MESE \
+MONTH Numeri Numeriromani PAROLA PAROLE \
+Parola Parole Romannumerals WEEKDAY WORD \
+WORDS Word Words about accoppiacarta \
+accoppiadocumento accoppiamarcatura accoppiapagina accoppiaregistro adaptlayout \
+adattacampo adattalayout al allineacentro allineadestra \
+allineasinistra altezzacarta altezzacartastampa altezzacima altezzaelenco \
+altezzafondo altezzaintestazione altezzamakeup altezzapdp altezzatesto \
+ambiente ampiezzabordo ampiezzabordodestro ampiezzabordosinistro ampiezzacarta \
+ampiezzacartastampa ampiezzaelenco ampiezzamakeup ampiezzamargine ampiezzamarginedestro \
+ampiezzamarginesinistro ampiezzatesto ap apagina appendix \
+arg at atleftmargin atpage atrightmargin \
+background barracolori barrainterazione barrasincronizzazione bastablocchi \
+bastafile blackrule blackrules blank bookmark \
+but button bypassblocks cambiaafontdeltesto campi \
+camporiempimento cap capello chapter character \
+characters chem chim circondato citazione \
+clip clonacampo clonefield colonna color \
+colore coloregrigio column comment commento \
+comparecolorgroup comparepalet completecombinedlist completelistoffloats completelistofsorts \
+completelistofsynonyms completeregister componenet confrontagruppocolori confrontatavolozza \
+convertinumero convertnumber copiacampo copyfield correctwhitespace \
+correggispaziobianco coupledocument coupledregister couplemarking couplepage \
+couplepaper coupleregister crlf currentdate currentheadnumber \
+cutspace da daqualcheparte data datadioggi \
+datareferral date decouplemarking decrementnumber define \
+defineblank defineblock definebodyfont definebodyfontDEF definebodyfontREF \
+definebodyfontenvironment definebuffer definecolor definecolorgroup definecolumnbreak \
+definecombination definecombinedlist defineconversion definedescription definedfont \
+defineenumeration definefield definefieldstack definefiguresymbol definefloat \
+definefont definefontfeature definefonthandling definefontsynonym defineframed \
+defineframedtext definehead defineindentedtext defineinmargin defineinteractionmenu \
+defineitemgroup definelabel definelayer definelist definelogo \
+definemakeup definemarking definemathalignment defineoutput defineoverlay \
+definepagebreak definepalet definepapersize defineparagraphs defineplacement \
+defineprofile defineprogram definereference definereferenceformat definereferencelist \
+defineregister definesection definesectionblock definesorting definestartstop \
+definesubfield definesymbol definesynonyms definetabletemplate definetabulate \
+definetext definetype definetypeface definetyping defineversion \
+definisci definisciaccento definisciambientefontdeltesto definisciblocco definiscibloccosezione \
+definiscibuffer definiscicampo definiscicampoprincipale definiscicapoversi definiscicarattere \
+definiscicolore definiscicomando definisciconversione definiscidescrizione definiscidimensionicarta \
+definiscielenco definiscielencocombinato definiscienumerazione definiscietichetta definiscifigurasimbolo \
+definiscifont definiscifontdeltesto definiscifontgrezzo definisciformatoriferimento definiscigruppocolonne \
+definiscigruppocolori definiscihbox definisciincorniciato definisciiniziatermina definiscilayout \
+definiscilinea definiscilistariferimenti definiscilogo definiscimakeup definiscimarcatura \
+definiscimenuinterazione definiscimodellotabella definiscioggettomobile definisciordinamento definiscioutput \
+definisciposizionetesto definisciprofilo definisciprogramma definisciregistro definisciriferimento \
+definiscirigovuoto definiscisezione definiscisimbolo definiscisinonimi definiscisinonimofont \
+definiscisottocampo definiscisovrapposizione definiscistackcampi definiscistile definiscistilefont \
+definiscitabulato definiscitavolozza definiscitesta definiscitesto definiscitestoincorniciato \
+definiscitype definiscityping definiscivariabiletesto definisciversion description \
+determinacaratteristicheregistro determinacarattersticheelenco determinanumerotesta determineheadnumber determinelistcharacteristics \
+dimensione disabilitamenuinterazione disableinteractionmenu distanzabordo distanzabordodestro \
+distanzabordosinistro distanzacima distanzafondo distanzaintestazione distanzamargine \
+distanzamarginedestro distanzamarginesinistro distanzapdp domicilio el \
+elaborablocchi elaborapagina elementi elemento emptylines \
+enumeration etichetta etichette externalfigure fatto \
+field fieldstack figuraesterna fillinfield fillinline \
+fillinrules fillintext fitfield fixedspaces followprofile \
+followprofileversion followversion fondo footnote footnotetext \
+forceblocks forzablocchi fraction framed framedtext \
+frazione from getbuffer getmarking getnumber \
+giornosettimana godown goto gotobox graycolor \
+grid griglia hairline head headnumber \
+headsym headtext hideblocks high hl \
+ignoto immediatebetweenlist immediatetolist impaccato impostaallineamento \
+impostaambientefontdeltesto impostaampiezzariga impostabarrainterazione impostabarrasincronizzazione impostablocchimargine \
+impostablocco impostabloccosezione impostabuffer impostacampi impostacampo \
+impostacapoversi impostacaption impostacaptions impostacima impostaclippling \
+impostacolonne impostacolore impostacolori impostacombinazioni impostacommento \
+impostacommentopagina impostadefinizionenotepdp impostadescrizioni impostadimensionicarta impostaelementi \
+impostaelencazioni impostaelenco impostaelencocombinato impostaenumerazioni impostafigureesterne \
+impostafondo impostafontdeltesto impostaforms impostaformule impostagruppocolonne \
+impostaincorniciato impostainiziatermina impostainmargine impostainstestazione impostainterazione \
+impostainterlinea impostalayout impostalegenda impostalinea impostalineemargine \
+impostalineenere impostalineeriempimento impostalineesottili impostalineetesto impostalingua \
+impostalistariferimenti impostamaiuscole impostamakeup impostamarcatura impostamenuinterazione \
+impostamenzione impostanotepdp impostanumerazione impostanumerazionecapoversi impostanumerazionepagina \
+impostanumerazionerighe impostanumeropagina impostanumerosottopagina impostanumerotesta impostaoggettimobili \
+impostaoggettomobile impostaordinamento impostaoutput impostaparranging impostapdp \
+impostapiustretto impostaposizionamento impostaposizionamentoopposti impostaposizionetesto impostaprofili \
+impostaprogrammi impostapubblicazioni impostapulsanti impostaregistro impostarientro \
+impostariferimento impostarighe impostarigheriempimento impostarigovuoto impostarotazione \
+impostaschermi impostaschermointerazione impostasegnosillabazione impostasetsimboli impostasezione \
+impostasfondi impostasfondo impostasincronizzazione impostasinonimi impostasistema \
+impostasottolinea impostaspaziatura impostaspaziobianco impostaspezzamentooggettomobile impostastrut \
+impostatab impostatabelle impostatabulato impostatavolozza impostatesta \
+impostateste impostatesticima impostatestifondo impostatestiincorniciati impostatestiintestazioni \
+impostatestipdp impostatesto impostatestoetichette impostatestointestazioni impostatestotesti \
+impostatolleranza impostatransizionepagina impostatype impostatyping impostaurl \
+impostavariabiletesto impostaversioni in inaltromargine incorniciato \
+incrementanumero indentation indenting indestra inframed \
+ininner iniziaallineamento iniziaambiente iniziabloccomargine iniziacitazione \
+iniziacodifica iniziacolonne iniziacolore iniziacombinazione iniziacomponente \
+iniziacorrezioneriga iniziadocumento iniziafigura iniziaglobale iniziagruppocolonne \
+iniziaimpaccato inizialineamargine inizialineatesto inizialocale iniziamakeup \
+inizianotepdplocali inizianumerazionerighe iniziaopposto iniziaoverview iniziapiustretto \
+iniziaposizionamento iniziaprodotto iniziaprofilo iniziaprogetto iniziaraster \
+iniziariga iniziarighe iniziasetsimboli iniziasfondo iniziasincronizzazione \
+iniziasovrapposizione iniziatabella iniziatabelle iniziatesto iniziaunpacked \
+iniziaversione inlatodestro inlatosinistro inleft inline \
+inmaframed inmargin inmargine inmarginedestro inmarginesinistro \
+inneredgedistance inneredgewidth innermargindistance innermarginwidth inothermargin \
+inouter inriga inright insinistra installalingua \
+installlanguage interactionbar interactionbuttons intorno item \
+items its keepblocks labeling labels \
+labeltext language leftaligned leg lettera \
+lettere lineamargine lineanera lineasottile lineatesto \
+lineenere lineeriempimento lineesottili lingua linguaprincipale \
+listsymbol livellotesta loadsorts loadsynonyms logcampi \
+logfields lohi low lunghezzaelenco maframed \
+mainlanguage mapfontsize mar marcatura marcaversione \
+marginrule margintext marking markversion matematica \
+mathematics mediaeval menuinterattivo menzione mese \
+mettielenco mettielencocombinato mettifiancoafianco mettiformula mettiingriglia \
+mettilegenda mettilinea mettiloghi mettinotepdp mettinotepdplocali \
+mettinumeropagina mettiregistro mettisegnalibro mettisottoformula mettiunosullaltro \
+mettivariabiletesto midaligned mirror month mostraambientefontdeltesto \
+mostracampi mostracolore mostracornice mostrafiguresterne mostrafontdeltesto \
+mostragriglia mostragruppocolori mostraimpostazioni mostralyout mostramakeup \
+mostrasetsimboli mostrastampa mostrastruts mostratavolozza moveongrid \
+movesidefloat name nascondiblocchi navigating nextsection \
+nientedimensioni nienteelenco nientelineecimafondo nientelineintestazionepdp nientemarcatura \
+nienterientro nientespazio nientespaziobianco nocap noheaderandfooterlines \
+noindenting nolist nomarking nome nomeunita \
+nomoreblocks nomorefiles nop nospace nota \
+notapdp note notest notopandbottomlines nowhitespace \
+numberofsubpages numbers numeri numeriromani numeroformula \
+numeropagina numeropaginacompleto numerosottoformula numerotesta numerotestacorrente \
+numerototaledipagine outeredgedistance outeredgewidth outermargindistance outermarginwidth \
+overbar overbars overstrike overstrikes packed \
+page pagedepth pageoffset pagereference pagina \
+paragraph paroladestra parolainmargine part passaafontgrezzo \
+ped pedap periods perlungo placebookmarks \
+placecombinedlist placefloat placefootnotes placeformula placelegend \
+placelist placelistoffloats placelistofsorts placelistofsynonyms placelocalfootnotes \
+placelogos placeongrid placeontopofeachother placerawlist placereferencelist \
+placeregister placesidebyside placesubformula position posizionanumerotesta \
+posizionatesto posizionatestotesta posizione prendibuffer prendimarcatura \
+processblocks processpage prodotto progetto program \
+programma pubblicazione publication pulsante pulsantemenu \
+pulsantinterazione punti qualcheriga quotation quote \
+ran ref reference referral referraldate \
+referring register reimposta reimpostamarcatura reservefloat \
+reset resetmarking resetnumber resettextcontent rientro \
+rif rifai riferimento riferimentopagina riferimentotesto \
+riflessione rigariempimento rightaligned rigovuoto romannumerals \
+rotate ruota saltablocchi scala scale \
+schermo screen scrividentroelenco scriviinelenco scriviinlistariferimenti \
+scriviinregistro section seeregister segnalibro seguiprofilo \
+seguiversione seguiversioneprofilo selectblocks selectpaper selectversion \
+selezionablocchi selezionacarta selezionaversione separamarcatura setnumber \
+settext settextcontent setupalign setupanswerarea setuparranging \
+setupbackground setupbackgrounds setupblackrules setupblank setupblock \
+setupbodyfont setupbodyfontenvironment setupbottom setupbottomtexts setupbuffer \
+setupbuttons setupcapitals setupcaption setupcaptions setupclipping \
+setupcolor setupcolors setupcolumns setupcolumnsetlines setupcolumnsetstart \
+setupcombinations setupcombinedlist setupcomment setupdescriptions setupenumerations \
+setupexternalfigures setupfield setupfields setupfillinlines setupfillinrules \
+setupfloat setupfloats setupfloatsplitting setupfonthandling setupfontsynonym \
+setupfooter setupfootertexts setupfootnotedefinition setupfootnotes setupforms \
+setupformulas setupframed setupframedtexts setuphead setupheader \
+setupheadertexts setupheadnumber setupheads setupheadtext setuphyphenmark \
+setupindentedtext setupindenting setupinmargin setupinteraction setupinteractionbar \
+setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 setupitemgroup \
+setupitems setuplabeltext setuplanguage setuplayout setuplegend \
+setuplinenumbering setuplines setuplinewidth setuplist setuplistalternative \
+setupmakeup setupmarginblocks setupmarginrules setupmarking setupmathalignment \
+setupnarrower setupnumbering setupoppositeplacing setupoutput setuppagenumber \
+setuppagenumbering setuppagetransitions setuppalet setuppaper setuppapersize \
+setupparagraphnumbering setupparagraphs setupplacement setuppositioning setupprofiles \
+setupprograms setuppublications setupquote setupreferencelist setupreferencing \
+setupregister setuprotate setupscreens setupsection setupsectionblock \
+setupsorting setupspacing setupstrut setupsubpagenumber setupsymbolset \
+setupsynchronization setupsynchronizationbar setupsynonyms setupsystem setuptab \
+setuptables setuptabulate setuptext setuptextrules setuptexttexts \
+setupthinrules setuptolerance setuptop setuptoptexts setuptype \
+setuptyping setupunderbar setupurl setupversions setupwhitespace \
+setvariabiletesto sfondo showbodyfont showbodyfontenvironment showcolor \
+showcolorgroup showexternalfigures showfields showframe showgrid \
+showlayout showmakeup showpalet showprint showsetups \
+showstruts showsymbolset sim simbolo sincronizza \
+someline somewhere sort space spazifissi \
+spazio spaziobianco spaziocima spaziodietro spaziofisso \
+spaziofondo spessoreriga spezzaoggettomobile splitfloat spostaagriglia \
+spostaformula stackcampi startalignment startbackground startbuffer \
+startcolor startcolumnmakeup startcolumns startcombination startcomment \
+startcomponent startdescription startdocument startenumeration startenvironment \
+startfact startfigure startfloattext startformula startframedtext \
+starthiding startinteractionmenu startitemgroup startlegend startline \
+startlinecorrection startlinenumbering startlines startlocal startlocalenvironment \
+startlocalfootnotes startmakeup startmarginblock startmarginrule startnamemakeup \
+startnarrower startopposite startoverlay startoverview startpacked \
+startparagraph startpositioning startpostponing startproduct startprofile \
+startproject startquotation startregister startsymbolset startsynchronization \
+starttable starttables starttabulate starttextrule starttyping \
+startunpacked startversion stirato stopalignment stopbackground \
+stopbuffer stopcolor stopcolumnmakeup stopcolumns stopcombination \
+stopcomment stopcomponent stopdescription stopdocument stopenumeration \
+stopenvironment stopfact stopfigure stopfloattext stopformula \
+stopframedtext stophiding stopinteractionmenu stopitemgroup stoplegend \
+stopline stoplinecorrection stoplinenumbering stoplines stoplocal \
+stoplocalenvironment stoplocalfootnotes stopmakeup stopmarginblock stopmarginrule \
+stopnamemakeup stopnarrower stopopposite stopoverlay stopoverview \
+stoppacked stopparagraph stoppositioning stoppostponing stopproduct \
+stopprofile stopproject stopquotation stopsymbolset stopsynchronization \
+stoptable stoptables stoptabulate stoptextrule stoptyping \
+stopunpacked stopversion stretched sub subject \
+subpagenumber subsection subsubject subsubsection subsubsubject \
+switchtobodyfont sym symbol synchronizationbar synchronize \
+synonym tab terminaallineamento terminaambiente terminabloccomargine \
+terminacitazione terminacodifica terminacolonne terminacolore terminacombinazione \
+terminacomponente terminacorrezioneriga terminadocumento terminaglobale terminagruppocolonne \
+terminaimpaccato terminalineamargine terminalineatesto terminalocale terminamakeup \
+terminanotepdplocali terminanumerazionerighe terminaopposto terminaoverview terminapiustretto \
+terminaposizionamento terminaprodotto terminaprofili terminaprogetto terminaraster \
+terminariga terminarighe terminasfondo terminasincronizzazione terminasovrapposizione \
+terminatabella terminatabelle terminatesto terminaunpacked terminaversioni \
+testa testcolumn testoetichetta testoinmargine testoinstestazioni \
+testonotapdp testoriempimento testpage tex textreference \
+textrule thinrule thinrules tieniblocchi title \
+titoloinmargine tooltip traduci translate txt \
+typ type typebuffer typefile underbar \
+underbars usaJSscripts usaURL usablocco usacartella \
+usacodifica usacolonnasonoraesterna usacomandi usadocumentoesterno usafiguraesterna \
+usafileesterni usafileesterno usamoduli usamodulo usariferimenti \
+usasimboli usaspecialita usaurl useURL useXMLfilter \
+useblocks usecommands usedirectory useencoding useexternaldocument \
+useexternalfigure useexternalfile useexternalfiles useexternalsoundtrack usemodule \
+usereferences usespecials usesymbols usetypescript usetypescriptfile \
+vaia vaiabox vaiapagina vaigiu valorecolore \
+valoregrigio variabiletesto version versione vl \
+weekday whitespace wordright writebetweenlist writetolist \
+writetoreferencelist writetoregister
+
+keywordclass.context.nl=\
+CAP Cap Caps Character \
+Characters Cijfers KAP Kap Kaps \
+Letter Letters MAAND MONTH Romannumerals \
+Romeins WEEKDAG WEEKDAY WOORD WOORDEN \
+WORD WORDS Woord Woorden Word \
+Words aantalsubpaginas about achtergrond adaptlayout \
+appendix arg at atpage background \
+bepaalkopnummer bepaallijstkenmerken bepaalregisterkenmerken betekenis binnenmargeafstand \
+binnenmargebreedte binnenrandafstand binnenrandbreedte blackrule blackrules \
+blank blanko blokje blokjes blokkeerinteractiemenu \
+bodemwit bookmark bovenafstand bovenhoogte breuk \
+buitenmargeafstand buitenmargebreedte buitenrandafstand buitenrandbreedte but \
+button bypassblocks cap chapter character \
+characters chem cijfers citaat citeer \
+clip clonefield color column comment \
+comparecolorgroup comparepalet completecombinedlist completelistoffloats completelistofsorts \
+completelistofsynonyms completeregister converteernummer convertnumber copieerveld \
+copyfield correctwhitespace corrigeerwitruimte coupledocument coupledregister \
+couplemarking couplepage couplepaper coupleregister crlf \
+currentdate currentheadnumber date datum decouplemarking \
+define defineblank defineblock definebodyfont definebodyfontDEF \
+definebodyfontREF definebodyfontenvironment definebuffer definecolor definecolorgroup \
+definecombinedlist defineconversion definedescription definedfont defineenumeration \
+definefield definefieldstack definefiguresymbol definefloat definefont \
+definefontfeature definefonthandling definefontsynonym defineframed defineframedtext \
+definehead defineindentedtext defineinteractionmenu definelabel definelist \
+definelogo definemakeup definemarking defineoutput defineoverlay \
+definepalet definepapersize defineparagraphs defineprofile defineprogram \
+definerawfont definereference definereferenceformat definereferencelist defineregister \
+definesection definesectionblock definesorting definestartstop definesubfield \
+definesymbol definesynonyms definetabletemplate definetabulate definetext \
+definetype definetypeface definetyping defineversion definieer \
+definieeraccent definieeralineas definieerbeeldmerk definieerblanko definieerblok \
+definieerbuffer definieercombinatie definieercommando definieerconversie definieerfiguursymbool \
+definieerfont definieerfontstijl definieerfontsynoniem definieerhbox definieerhoofdveld \
+definieeringesprongentext definieerinmarge definieerinteractiemenu definieeritemgroep definieerkadertekst \
+definieerkarakter definieerkleur definieerkleurgroep definieerkolomgroep definieerkolomovergang \
+definieerkop definieerkorps definieerkorpsomgeving definieerlayer definieerlayout \
+definieerletter definieerlijn definieerlijst definieermarkering definieeromlijnd \
+definieeropmaak definieeroverlay definieerpaginaovergang definieerpalet definieerpapierformaat \
+definieerplaats definieerplaatsblok definieerprofiel definieerprogramma definieerreferentie \
+definieerreferentieformaat definieerreferentielijst definieerregister definieersamengesteldelijst definieersectie \
+definieersectieblok definieersorteren definieerstartstop definieersubveld definieersymbool \
+definieersynoniemen definieertabelvorm definieertabulatie definieertekst definieertekstachtergrond \
+definieertekstpositie definieertekstvariabele definieertype definieertypen definieeruitvoer \
+definieerveld definieerveldstapel definieerversie definieerwiskundeuitlijnen description \
+determineheadnumber determinelistcharacteristics dimensie directnaarlijst directtussenlijst \
+disableinteractionmenu doordefinieren doorlabelen doornummeren dunnelijn \
+dunnelijnen eenregel emptylines enumeration ergens \
+externalfigure externfiguur field fieldstack fillinfield \
+fillinline fillinrules fillintext fitfield fixedspaces \
+followprofile followprofileversion followversion footnote footnotetext \
+forceblocks forceerblokken formulenummer fraction framed \
+framedtext from gebruikJSscripts gebruikURL gebruikXMLfilter \
+gebruikblokken gebruikcommandos gebruikexterndocument gebruikexternefile gebruikexternefiles \
+gebruikexternfiguur gebruikexterngeluidsfragment gebruikgebied gebruikmodule gebruikmodules \
+gebruikreferenties gebruikspecials gebruiksymbolen gebruiktypescript gebruiktypescriptfile \
+gebruikurl geenblokkenmeer geenbovenenonderregels geendimensie geenfilesmeer \
+geenhoofdenvoetregels geenlijst geenmarkering geenspatie geentest \
+geenwitruimte geg getbuffer getmarking godown \
+goto gotobox graycolor grid grijskleur \
+grijswaarde haalbuffer haalmarkering haalnummer haarlijn \
+hairline handhaafblokken head headnumber headtext \
+herhaal hideblocks high hl hoofdafstand \
+hoofdhoogte hoofdtaal hoog huidigedatum huidigekopnummer \
+in inanderemarge inbinnen inbuiten indentation \
+indenting inframed ininner inleft inlijnd \
+inline inlinker inlinkermarge inlinkerrand inmarge \
+inmargin inothermargin inouter inrechter inrechtermarge \
+inrechterrand inregel inright inspringen installeertaal \
+installlanguage interactiebalk interactiebuttons interactiemenu interactionbar \
+interactionbuttons invullijnen invulregel invultekst invulveld \
+inwilijnd item items its kantlijn \
+kap keepblocks kenmerk kenmerkdatum kentekstvariabeletoe \
+kleur kleurenbalk kleurwaarde kloonveld kolom \
+kop kopniveau kopnummer koppeldocument koppelmarkering \
+koppelpagina koppelpapier koppelregister kopsym koptekst \
+kopwit laag label labeling labels \
+labeltekst labeltext laho language leftaligned \
+leg legeregels letter letters lijndikte \
+lijstbreedte lijsthoogte lijstlengte lijstsymbool linkermargeafstand \
+linkermargebreedte linkerrandafstand linkerrandbreedte listsymbol loadsorts \
+loadsynonyms logfields lohi low maand \
+mainlanguage mapfontsize mar margeafstand margebreedte \
+margetekst margetitel margewoord marginrule margintext \
+markeer markeerversie marking markversion mathematics \
+mediaeval menubutton midaligned mirror month \
+moveongrid naam naar naarbox naarpagina \
+name navigerend nextsection nietinspringen nocap \
+noheaderandfooterlines noindenting nokap nolist nomarking \
+nomoreblocks nomorefiles noot nop nospace \
+note notopandbottomlines nowhitespace numbers omgeving \
+omlaag omlijnd onbekend onderafstand onderdeel \
+onderhoogte ontkoppelmarkering op opelkaar oplinkermarge \
+oppagina oprechtermarge overbar overbars overstrike \
+overstrikes packed page pagereference pagina \
+paginadiepte paginanummer paginaoffset paginareferentie papierbreedte \
+papierhoogte paragraph part paslayoutaan passeerblokken \
+passendveld periods plaatsbeeldmerken plaatsbookmarks plaatsformule \
+plaatskopnummer plaatskoptekst plaatslegenda plaatslijn plaatslijst \
+plaatslijstmetsynoniemen plaatslokalevoetnoten plaatsnaastelkaar plaatsonderelkaar plaatsopgrid \
+plaatspaginanummer plaatsplaatsblok plaatsreferentielijst plaatsregister plaatsruwelijst \
+plaatssamengesteldelijst plaatssubformule plaatstekstvariabele plaatsvoetnoten placebookmarks \
+placecombinedlist placefloat placefootnotes placeformula placelegend \
+placelist placelistoffloats placelistofsorts placelistofsynonyms placelocalfootnotes \
+placelogos placeongrid placeontopofeachother placereferencelist placeregister \
+placesidebyside placesubformula position positioneer positioneertekst \
+printpapierbreedte printpapierhoogte processblocks processpage produkt \
+program programma projekt publicatie publication \
+punten quotation quote ran randafstand \
+randbreedte rechtermargeafstand rechtermargebreedte rechterrandafstand rechterrandbreedte \
+ref refereer reference referentie referral \
+referraldate regellinks regelmidden regelrechts register \
+registreervelden reservefloat reset resetmarkering resetmarking \
+resetnummer resettekstinhoud resettextcontent rightaligned romannumerals \
+romeins rooster rotate roteer rugwit \
+scale schaal scherm schrijfnaarlijst schrijfnaarreferentielijst \
+schrijfnaarregister schrijftussenlijst screen section seeregister \
+selectblocks selecteerblokken selecteerpapier selecteerversie selectpaper \
+selectversion setnummer settextcontent setupalign setuparranging \
+setupbackground setupbackgrounds setupblackrules setupblank setupblock \
+setupbodyfont setupbodyfontenvironment setupbottom setupbottomtexts setupbuffer \
+setupbuttons setupcapitals setupcaption setupcaptions setupclipping \
+setupcolor setupcolors setupcolumns setupcombinations setupcombinedlist \
+setupcomment setupdescriptions setupenumerations setupexternalfigures setupfield \
+setupfields setupfillinlines setupfillinrules setupfloat setupfloats \
+setupfloatsplitting setupfonthandling setupfontsynonym setupfooter setupfootertexts \
+setupfootnotedefinition setupfootnotes setupforms setupformulas setupframed \
+setupframedtexts setuphead setupheader setupheadertexts setupheadnumber \
+setupheads setupheadtext setuphyphenmark setupindentedtext setupindenting \
+setupinmargin setupinteraction setupinteractionbar setupinteractionmenu setupinteractionscreen \
+setupinterlinespace setupinterlinespace2 setupitemgroup setupitems setuplabeltext \
+setuplanguage setuplayout setuplegend setuplinenumbering setuplines \
+setuplinewidth setuplist setuplistalternative setupmakeup setupmarginblocks \
+setupmarginrules setupmarking setupnarrower setupnumbering setupoppositeplacing \
+setupoutput setuppagenumber setuppagenumbering setuppagetransitions setuppalet \
+setuppaper setuppapersize setupparagraphnumbering setupparagraphs setuppositioning \
+setupprofiles setupprograms setuppublications setupquote setupreferencelist \
+setupreferencing setupregister setuprotate setupscreens setupsection \
+setupsectionblock setupsorting setupspacing setupstrut setupsubpagenumber \
+setupsymbolset setupsynchronization setupsynchronizationbar setupsynonyms setupsystem \
+setuptab setuptables setuptabulate setuptext setuptextrules \
+setuptexttexts setupthinrules setuptolerance setuptop setuptoptexts \
+setuptype setuptyping setupunderbar setupurl setupversions \
+setupwhitespace showbodyfont showbodyfontenvironment showcolor showcolorgroup \
+showexternalfigures showfields showframe showgrid showlayout \
+showmakeup showpalet showprint showsetups showstruts \
+showsymbolset snijwit som someline somewhere \
+sort space spatie spiegel splitfloat \
+splitsplaatsblok startachtergrond startalignment startbackground startbuffer \
+startcitaat startcodering startcolor startcolumns startcombinatie \
+startcombination startcomment startcomponent startdescription startdocument \
+startenumeration startenvironment startfact startfigure startfiguur \
+startfloattext startformula startframedtext startglobaal starthiding \
+startinteractionmenu startitemgroup startkantlijn startkleur startkolomgroep \
+startkolommen startkolomopmaak startlegend startline startlinecorrection \
+startlinenumbering startlines startlocal startlocalenvironment startlocalfootnotes \
+startlokaal startlokalevoetnoten startmakeup startmargeblok startmarginblock \
+startmarginrule startnaast startnamemakeup startnarrower startomgeving \
+startomlijnd startonderdeel startopelkaar startopmaak startopposite \
+startoverlay startoverview startoverzicht startpacked startparagraph \
+startpositioneren startpositioning startpostponing startproduct startprodukt \
+startprofiel startprofile startproject startprojekt startquotation \
+startraster startregel startregelcorrectie startregelnummeren startregels \
+startregister startsmaller startsymbolset startsymboolset startsynchronisatie \
+startsynchronization starttabel starttabellen starttable starttables \
+starttabulate starttekst starttekstachtergrond starttekstlijn starttextrule \
+starttyping startuitlijnen startunpacked startvanelkaar startversie \
+startversion stelachtergrondenin stelachtergrondin stelalineasin stelantwoordgebiedin \
+stelarrangerenin stelblankoin stelblokin stelblokjesin stelblokkopjein \
+stelblokkopjesin stelbovenin stelboventekstenin stelbufferin stelbuttonsin \
+stelciterenin stelclipin stelcombinatiesin stelcommentaarin steldoordefinierenin \
+steldoornummerenin steldunnelijnenin stelexternefigurenin stelformulesin stelformulierenin \
+stelhoofdin stelhoofdtekstenin stelingesprongentextin stelinmargein stelinspringenin \
+stelinteractiebalkin stelinteractiein stelinteractiemenuin stelinteractieschermin stelinterliniein \
+stelinvullijnenin stelinvulregelsin stelitemgroepin stelitemsin stelkadertekstenin \
+stelkantlijnin stelkapitalenin stelkleurenin stelkleurin stelkolomgroepin \
+stelkolomgroepregelsin stelkolomgroepstartin stelkolommenin stelkopin stelkopnummerin \
+stelkoppeltekenin stelkoppenin stelkoptekstin stelkorpsin stelkorpsomgevingin \
+stellabeltekstin stellayoutin stellegendain stellijndiktein stellijnin \
+stellijstin stelmargeblokkenin stelmarkeringin stelnaastplaatsenin stelnummerenin \
+stelnummerin stelomlijndin stelonderin stelonderstrepenin stelondertekstenin \
+stelopmaakin stelopsommingenin stelpaginacommentaarin stelpaginanummerin stelpaginanummeringin \
+stelpaginaovergangenin stelpaletin stelpapierformaatin stelpapierin stelparagraafnummerenin \
+stelplaatsblokin stelplaatsblokkenin stelplaatsbloksplitsenin stelplaatsin stelpositionerenin \
+stelprofielenin stelprogrammasin stelpublicatiesin stelrastersin stelreferentielijstin \
+stelrefererenin stelregelnummerenin stelregelsin stelregisterin stelroterenin \
+stelsamengesteldelijstin stelsectieblokin stelsectiein stelsmallerin stelsorterenin \
+stelspatieringin stelstartstopin stelstrutin stelsubpaginanummerin stelsymboolsetin \
+stelsynchronisatiebalkin stelsynchronisatiein stelsynoniemenin stelsysteemin steltaalin \
+steltabellenin steltabin steltabulatiein steltekstachtergrondin steltekstin \
+steltekstinhoudin steltekstlijnenin steltekstpositiein stelteksttekstenin steltekstvariabelein \
+steltolerantiein steltypein steltypenin steluitlijnenin steluitvoerin \
+stelurlin stelveldenin stelveldin stelversiesin stelvoetin \
+stelvoetnootdefinitiein stelvoetnotenin stelvoettekstenin stelwiskundeuitlijnenin stelwitruimtein \
+stopachtergrond stopalignment stopbackground stopbuffer stopcitaat \
+stopcodering stopcolor stopcolumns stopcombinatie stopcombination \
+stopcomment stopcomponent stopdescription stopdocument stopenumeration \
+stopenvironment stopfact stopfigure stopfloattext stopformula \
+stopframedtext stopglobaal stophiding stopinteractionmenu stopitemgroup \
+stopkantlijn stopkleur stopkolomgroep stopkolommen stopkolomopmaak \
+stoplegend stopline stoplinecorrection stoplinenumbering stoplines \
+stoplocal stoplocalenvironment stoplocalfootnotes stoplokaal stoplokalevoetnoten \
+stopmakeup stopmargeblok stopmarginblock stopmarginrule stopnaast \
+stopnamemakeup stopnarrower stopomgeving stopomlijnd stoponderdeel \
+stopopelkaar stopopmaak stopopposite stopoverlay stopoverview \
+stopoverzicht stoppacked stopparagraph stoppositioneren stoppositioning \
+stoppostponing stopproduct stopprodukt stopprofiel stopprofile \
+stopproject stopprojekt stopquotation stopraster stopregel \
+stopregelcorrectie stopregelnummeren stopregels stopsmaller stopsymbolset \
+stopsynchronisatie stopsynchronization stoptabel stoptabellen stoptable \
+stoptables stoptabulate stoptekst stoptekstachtergrond stoptekstlijn \
+stoptextrule stoptyping stopuitlijnen stopunpacked stopvanelkaar \
+stopversie stopversion stretched sub subformulenummer \
+subject subpaginanummer subsection subsubject subsubsection \
+subsubsubject suggestie switchnaarkorps switchtobodyfont switchtorawfont \
+sym symbol symbool symoffset synchronisatiebalk \
+synchroniseer synchronizationbar synchronize synonym taal \
+tab tekstbreedte teksthoogte tekstlijn tekstreferentie \
+tekstvariabele testkolom testpagina tex textreference \
+textrule thinrule thinrules title toelichting \
+tooltip toonexternefiguren toongrid tooninstellingen toonkader \
+toonkleur toonkleurgroep toonkorps toonkorpsomgeving toonlayout \
+toonopmaak toonpalet toonprint toonstruts toonsymboolset \
+toonvelden totaalaantalpaginas translate txt typ \
+type typebuffer typefile uit uitgerekt \
+underbar underbars useURL useblocks usecodering \
+usecommands usedirectory useencoding useexternaldocument useexternalfigure \
+useexternalfile useexternalfiles useexternalsoundtrack usemodule usereferences \
+usespecials usesymbols usetypescript usetypescriptfile vastespatie \
+vastespaties veld veldstapel verbergblokken vergelijkkleurgroep \
+vergelijkpalet verhoognummer verlaagnummer verplaatsformule verplaatsopgrid \
+verplaatszijblok versie version vertaal verwerkblokken \
+verwerkpagina vl voetafstand voethoogte voetnoot \
+voetnoottekst volgprofiel volgprofielversie volgversie volledigepaginanummer \
+volledigregister voluit weekdag weekday whitespace \
+wilijnd wiskunde witruimte woonplaats woordrechts \
+wordright writebetweenlist writetolist writetoreferencelist writetoregister \
+zetbreedte zethoogte
+
+keywordclass.context.pe=\
+CAP Cap Caps Character \
+Characters MONTH Numbers Romannumerals WEEKDAY \
+WORD WORDS Word Words about \
+adaptlayout appendix at atpage background \
+blackrule blackrules blank bookmark but \
+button bypassblocks cap chapter character \
+characters chem clip clonefield color \
+column comment comparecolorgroup comparepalet completecombinedlist \
+completelistoffloats completelistofsorts completelistofsynonyms completeregister convertnumber \
+copyfield correctwhitespace coupledocument coupledregister couplemarking \
+couplepage couplepaper coupleregister crlf currentdate \
+currentheadnumber date decouplemarking define defineblank \
+defineblock definebodyfont definebodyfontDEF definebodyfontREF definebodyfontenvironment \
+definebuffer definecolor definecolorgroup definecombinedlist defineconversion \
+definedescription definedfont defineenumeration definefield definefieldstack \
+definefiguresymbol definefloat definefont definefontfeature definefonthandling \
+definefontsynonym defineframed defineframedtext definehead defineindentedtext \
+defineinteractionmenu definelabel definelist definelogo definemakeup \
+definemarking defineoutput defineoverlay definepalet definepapersize \
+defineparagraphs defineprofile defineprogram definereference definereferenceformat \
+definereferencelist defineregister definesection definesectionblock definesorting \
+definestartstop definesubfield definesymbol definesynonyms definetabletemplate \
+definetabulate definetext definetype definetypeface definetyping \
+defineversion description determineheadnumber determinelistcharacteristics disableinteractionmenu \
+emptylines enumeration externalfigure field fieldstack \
+fillinfield fillinline fillinrules fillintext fitfield \
+fixedspaces followprofile followprofileversion followversion footnote \
+footnotetext forceblocks fraction framed framedtext \
+from getbuffer getmarking godown goto \
+gotobox graycolor grid hairline head \
+headnumber headtext hideblocks high hl \
+in indentation indenting inframed ininner \
+inleft inline inmargin inmframed inothermargin \
+inouter inright installlanguage interactionbar interactionbuttons \
+item items its keepblocks labeling \
+labels labeltext language leftaligned listsymbol \
+loadsorts loadsynonyms logfields lohi low \
+mainlanguage mapfontsize mar marginrule margintext \
+marking markversion mathematics mediaeval mframed \
+midaligned mirror month moveongrid name \
+nextsection nocap noheaderandfooterlines noindenting nolist \
+nomarking nomoreblocks nomorefiles nop nospace \
+note notopandbottomlines nowhitespace numbers overbar \
+overbars overstrike overstrikes packed page \
+pagereference paragraph part periods placebookmarks \
+placecombinedlist placefloat placefootnotes placeformula placelegend \
+placelist placelistoffloats placelistofsorts placelistofsynonyms placelocalfootnotes \
+placelogos placeongrid placeontopofeachother placereferencelist placeregister \
+placesidebyside placesubformula position processblocks processpage \
+program publication quotation quote ran \
+ref reference referral referraldate register \
+reservefloat reset resetmarking resettextcontent rightaligned \
+romannumerals rotate scale screen section \
+seeregister selectblocks selectpaper selectversion settextcontent \
+setupalign setupanswerarea setuparranging setupbackground setupbackgrounds \
+setupblackrules setupblank setupblock setupbodyfont setupbodyfontenvironment \
+setupbottom setupbottomtexts setupbuffer setupbuttons setupcapitals \
+setupcaption setupcaptions setupclipping setupcolor setupcolors \
+setupcolumns setupcombinations setupcombinedlist setupcomment setupdescriptions \
+setupenumerations setupexternalfigures setupfield setupfields setupfillinlines \
+setupfillinrules setupfloat setupfloats setupfloatsplitting setupfonthandling \
+setupfontsynonym setupfooter setupfootertexts setupfootnotedefinition setupfootnotes \
+setupforms setupformulas setupframed setupframedtexts setuphead \
+setupheader setupheadertexts setupheadnumber setupheads setupheadtext \
+setuphyphenmark setupindentedtext setupindenting setupinmargin setupinteraction \
+setupinteractionbar setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 \
+setupitemgroup setupitems setuplabeltext setuplanguage setuplayout \
+setuplegend setuplinenumbering setuplines setuplinewidth setuplist \
+setuplistalternative setupmakeup setupmarginblocks setupmarginrules setupmarking \
+setupnarrower setupnumbering setupoppositeplacing setupoutput setuppagenumber \
+setuppagenumbering setuppagetransitions setuppalet setuppaper setuppapersize \
+setupparagraphnumbering setupparagraphs setuppositioning setupprofiles setupprograms \
+setuppublications setupquote setupreferencelist setupreferencing setupregister \
+setuprotate setupscreens setupsection setupsectionblock setupsorting \
+setupspacing setupstrut setupsubpagenumber setupsymbolset setupsynchronization \
+setupsynchronizationbar setupsynonyms setupsystem setuptab setuptables \
+setuptabulate setuptext setuptextrules setuptexttexts setupthinrules \
+setuptolerance setuptop setuptoptexts setuptype setuptyping \
+setupunderbar setupurl setupversions setupwhitespace showbodyfont \
+showbodyfontenvironment showcolor showcolorgroup showexternalfigures showfields \
+showframe showgrid showlayout showmakeup showpalet \
+showprint showsetups showstruts showsymbolset someline \
+somewhere sort space splitfloat startalignment \
+startbackground startbuffer startcolor startcolumns startcombination \
+startcomment startcomponent startdescription startdocument startenumeration \
+startenvironment startfact startfigure startfloattext startformula \
+startframedtext starthiding startinteractionmenu startitemgroup startlegend \
+startline startlinecorrection startlinenumbering startlines startlocal \
+startlocalenvironment startlocalfootnotes startmakeup startmarginblock startmarginrule \
+startnamemakeup startnarrower startopposite startoverlay startoverview \
+startpacked startparagraph startpositioning startpostponing startproduct \
+startprofile startproject startquotation startraster startregister \
+startsymbolset startsynchronization starttable starttables starttabulate \
+starttextrule starttyping startunpacked startversion stopalignment \
+stopbackground stopbuffer stopcolor stopcolumns stopcombination \
+stopcomment stopcomponent stopdescription stopdocument stopenumeration \
+stopenvironment stopfact stopfigure stopfloattext stopformula \
+stopframedtext stophiding stopinteractionmenu stopitemgroup stoplegend \
+stopline stoplinecorrection stoplinenumbering stoplines stoplocal \
+stoplocalenvironment stoplocalfootnotes stopmakeup stopmarginblock stopmarginrule \
+stopnamemakeup stopnarrower stopopposite stopoverlay stopoverview \
+stoppacked stopparagraph stoppositioning stoppostponing stopproduct \
+stopprofile stopproject stopquotation stopraster stopsymbolset \
+stopsynchronization stoptable stoptables stoptabulate stoptextrule \
+stoptyping stopunpacked stopversion stretched sub \
+subject subsection subsubject subsubsection subsubsubject \
+switchtobodyfont sym symbol synchronizationbar synchronize \
+synonym tab tex textreference textrule \
+thinrule thinrules title tooltip translate \
+txt typ type typebuffer typefile \
+underbar underbars useJSscripts useURL useXMLfilter \
+useblocks usecommands usedirectory useencoding useexternaldocument \
+useexternalfigure useexternalfile useexternalfiles useexternalsoundtrack usemodule \
+usereferences usespecials usesymbols usetypescript usetypescriptfile \
+useurl version vl weekday whitespace \
+wordright writebetweenlist writetolist writetoreferencelist writetoregister \
+آفست‌صفحه آیتم آیتمها آینه اجباربلوکها \
+ارتفاع‌آرایش ارتفاع‌بالا ارتفاع‌برگ ارتفاع‌ته‌برگ ارتفاع‌خط \
+ارتفاع‌سربرگ ارتفاع‌متن ارتفاع‌پایین از ازکارانداختن‌منوی‌پانل \
+استفاده‌بلوکها استفاده‌دستخط‌تایپ استفاده‌رمزینه استفاده‌شکل‌خارجی استفاده‌فرمانها \
+استفاده‌قطعه‌موزیک‌خارجی استفاده‌مدول استفاده‌مدولها استفاده‌مرجعها استفاده‌مسیر \
+استفاده‌نمادها استفاده‌نوشتارخارجی استفاده‌ویژگیها استفاده‌پرونده‌خارجی استفاده‌پرونده‌دستخط‌تایپ \
+استفاده‌پرونده‌های‌خارجی اعدادلاتین افزودن اما امتحان‌نکن \
+انتخاب‌برگ انتخاب‌بلوکها انتخاب‌نسخه انتقال‌به‌توری انتقال‌فرمول \
+انتقال‌کنار‌شناور انجام‌دوباره بارگذاری‌آرایش بارگذاری‌آیتمها بارگذاری‌ارجاع \
+بارگذاری‌اندازه‌برگ بارگذاری‌باریکتر بارگذاری‌بافر بارگذاری‌بالا بارگذاری‌بخش \
+بارگذاری‌بردباری بارگذاری‌برنامه‌ها بارگذاری‌برگ بارگذاری‌بست بارگذاری‌بلوک \
+بارگذاری‌بلوکهای‌حاشیه بارگذاری‌بلوک‌بخش بارگذاری‌تایپ بارگذاری‌تایپ‌کردن بارگذاری‌تب \
+بارگذاری‌ترتیب بارگذاری‌ترکیب‌ها بارگذاری‌تطابق بارگذاری‌تعریف‌پانوشت بارگذاری‌تنظیم \
+بارگذاری‌تنظیم‌ریاضی بارگذاری‌ته‌برگ بارگذاری‌تورفتگی بارگذاری‌توضیح بارگذاری‌توضیح‌صفحه \
+بارگذاری‌ثبت بارگذاری‌جانشانی بارگذاری‌جدولها بارگذاری‌جدول‌بندی بارگذاری‌خالی \
+بارگذاری‌خروجی بارگذاری‌خط بارگذاری‌خطها بارگذاری‌خطهای‌حاشیه بارگذاری‌خطهای‌سیاه \
+بارگذاری‌خطهای‌متن بارگذاری‌خطهای‌مجموعه‌ستون بارگذاری‌خطها‌ی‌نازک بارگذاری‌درج‌درخطها بارگذاری‌درج‌مخالف \
+بارگذاری‌درون‌حاشیه بارگذاری‌دوران بارگذاری‌دکمه‌ها بارگذاری‌راهنما بارگذاری‌رنگ \
+بارگذاری‌رنگها بارگذاری‌زبان بارگذاری‌ستونها بارگذاری‌سر بارگذاری‌سربرگ \
+بارگذاری‌سرها بارگذاری‌سیستم بارگذاری‌شرح بارگذاری‌شرحها بارگذاری‌شروع‌مجموعه‌ستون \
+بارگذاری‌شروع‌پایان بارگذاری‌شماره بارگذاری‌شماره‌زیرصفحه بارگذاری‌شماره‌سر بارگذاری‌شماره‌صفحه \
+بارگذاری‌شماره‌گذاری بارگذاری‌شماره‌گذاریها بارگذاری‌شماره‌گذاری‌صفحه بارگذاری‌شماره‌گذاری‌پاراگراف بارگذاری‌شماره‌‌گذاری‌خط \
+بارگذاری‌شناور بارگذاری‌شناورها بارگذاری‌شکافتن‌شناورها بارگذاری‌شکلهای‌خارجی بارگذاری‌طرح \
+بارگذاری‌طرح‌بندی بارگذاری‌عرض‌خط بارگذاری‌فاصله‌بین‌خط بارگذاری‌فرمولها بارگذاری‌فضای‌سفید \
+بارگذاری‌فضا‌گذاری بارگذاری‌قالبی بارگذاری‌قلم‌متن بارگذاری‌لوح بارگذاری‌لیست \
+بارگذاری‌لیست‌ترکیبی بارگذاری‌لیست‌مرجع بارگذاری‌مترادفها بارگذاری‌متغیر‌متن بارگذاری‌متن \
+بارگذاری‌متنهای‌بالا بارگذاری‌متن‌سر بارگذاری‌متن‌سربرگ بارگذاری‌متن‌قالبی بارگذاری‌متن‌متنها \
+بارگذاری‌متن‌پانوشت بارگذاری‌متن‌پایین بارگذاری‌مجموعه‌ستون بارگذاری‌مجموعه‌نماد بارگذاری‌محیط‌قلم‌متن \
+بارگذاری‌منوی‌پانل بارگذاری‌مکان‌متن بارگذاری‌مکان‌گذاری بارگذاری‌میدان بارگذاری‌میدانها \
+بارگذاری‌میله‌تطابق بارگذاری‌میله‌زیر بارگذاری‌میله‌پانل بارگذاری‌نسخه‌ها بارگذاری‌نشانه‌شکستن \
+بارگذاری‌نشانه‌گذاری بارگذاری‌نشرها بارگذاری‌نقل بارگذاری‌پاراگرافها بارگذاری‌پانل \
+بارگذاری‌پانوشتها بارگذاری‌پایین بارگذاری‌پرده‌ها بارگذاری‌پرده‌پانل بارگذاری‌پروفایلها \
+بارگذاری‌پرکردن‌خطها بارگذاری‌پس‌زمینه بارگذاری‌پس‌زمینه‌ها بارگذاری‌چیدن بارگذاری‌گذارصفحه \
+بارگذاری‌گروههای‌آیتم بارگذاری‌گروه‌آیتم بازنشانی بازنشانی‌شماره بازنشانی‌متن \
+بازنشانی‌نشانه‌گذاری باگذاری‌متن‌برچسب بدون‌بعد بدون‌بلوکهای‌بیشتر بدون‌تورفتگی \
+بدون‌خط‌بالاوپایین بدون‌خط‌سروته‌برگ بدون‌فایلهای‌بیشتر بدون‌فضا بدون‌فضای‌سفید \
+بدون‌لیست بدون‌نشانه‌گذاری برنامه بروبه بروبه‌جعبه \
+بروبه‌صفحه بروپایین برچسب برچسبها بعد \
+بلند بلوکهای‌پردازش بلوکها‌پنهان بنویس‌بین‌لیست بنویس‌درثبت \
+بنویس‌درلیست‌مرجع بنویس‌در‌لیست تاریخ تاریخ‌جاری تاریخ‌رجوع \
+تایپ تایپ‌بافر تایپ‌پرونده تب ترجمه \
+تطابق تعریف تعریف‌آرایش تعریف‌آرم تعریف‌الگوی‌جدول \
+تعریف‌اندازه‌برگ تعریف‌بافر تعریف‌بخش تعریف‌برنامه تعریف‌برچسب \
+تعریف‌بلوک تعریف‌بلوک‌بخش تعریف‌تایپ تعریف‌تایپ‌کردن تعریف‌تبدیل \
+تعریف‌ترتیب تعریف‌ترکیب تعریف‌تنظیم‌ریاضی تعریف‌توده‌میدان تعریف‌ثبت \
+تعریف‌جانشانی تعریف‌جدول‌بندی تعریف‌جعبه‌‌افقی تعریف‌حرف تعریف‌خالی \
+تعریف‌خروجی تعریف‌خط‌حائل تعریف‌درون‌حاشیه تعریف‌رنگ تعریف‌زیرمیدان \
+تعریف‌سبک تعریف‌سبک‌قلم تعریف‌سر تعریف‌شرح تعریف‌شروع‌پایان \
+تعریف‌شماره‌بندی تعریف‌شمایل‌مرجع تعریف‌شناور تعریف‌شکستن‌ستون تعریف‌شکست‌صفحه \
+تعریف‌طرح‌بندی تعریف‌فرمان تعریف‌قالبی تعریف‌قلم تعریف‌قلم‌خام \
+تعریف‌قلم‌متن تعریف‌لایه تعریف‌لهجه تعریف‌لوح تعریف‌لیست \
+تعریف‌لیست‌ترکیبی تعریف‌لیست‌مرجع تعریف‌مترادفها تعریف‌مترادف‌قلم تعریف‌متغیرمتن \
+تعریف‌متن تعریف‌متن‌قالبی تعریف‌مجموعه‌ستون تعریف‌محیط‌قلم‌بدنه تعریف‌مرجع \
+تعریف‌منوی‌پانل تعریف‌مکان‌متن تعریف‌میدان تعریف‌میدان‌اصلی تعریف‌نسخه \
+تعریف‌نشانه‌گذاری تعریف‌نماد تعریف‌نمادشکل تعریف‌پاراگرافها تعریف‌پروفایل \
+تعریف‌پوشش تعریف‌گروه‌آیتم تعریف‌گروه‌رنگ تعیین‌شماره تعیین‌شماره‌سر \
+تعیین‌متغیر‌متن تعیین‌محتوای‌متن تعیین‌مشخصات‌ثبت تعیین‌مشخصات‌لیست تغییربه‌قلم‌بدنه \
+تغییربه‌قلم‌خام تنظیم‌راست تنظیم‌طرح‌بندی تنظیم‌وسط توجه \
+تورفتگی توری تولید تک ثبت‌زوج \
+ثبت‌کامل جداسازی‌نشانه‌گذاری حاش حرف حرفها \
+حفظ‌بلوکها حقیقت خالی خطهای‌سیاه خطهای‌نازک \
+خطها‌خالی خط‌حاشیه خط‌سیاه خط‌متن خط‌مو \
+خط‌نازک خ‌ا خ‌ع در درج‌آرمها \
+درج‌ثبت درج‌خط درج‌درخط درج‌درخطها درج‌درمتن \
+درج‌درمیدان درج‌در‌بالای‌یکدیگر درج‌در‌توری درج‌راهنما درج‌زیرفرمول \
+درج‌شماره‌سر درج‌شماره‌صفحه درج‌شناور درج‌فرمول درج‌لیست \
+درج‌لیست‌خام درج‌لیست‌مختلط درج‌لیست‌مرجع درج‌متغیرمتن درج‌متن‌سر \
+درج‌پانوشتها درج‌پانوشتهای‌موضعی درج‌چوب‌خط درج‌کنار‌به‌کنار درحاشیه \
+درحاشیه‌دیگر درحاشیه‌راست درحاشیه‌چپ درخارجی درخط \
+درداخلی درراست درصفحه درقالبی درلبه‌راست \
+درلبه‌چپ درمورد درون درپر درچپ \
+دریافت‌بافر دریافت‌شماره دریافت‌نشانه دوران دکمه \
+دکمه‌منو دکمه‌پانل رج رجوع رنگ \
+رنگ‌خاکستری روزهفته ریاضی زبان زبان‌اصلی \
+ستون ستون‌امتحان سر سرپوش‌کوچک‌نه شروع‌آرایش \
+شروع‌آرایش‌ستون شروع‌باریکتر شروع‌بازبینی شروع‌بلوک‌حاشیه شروع‌ترکیب \
+شروع‌تصحیح‌خط شروع‌تطابق شروع‌تنظیم شروع‌تولید شروع‌جدول \
+شروع‌جدولها شروع‌خط شروع‌خطها شروع‌خط‌حاشیه شروع‌خط‌متن \
+شروع‌رنگ شروع‌ستونها شروع‌سراسری شروع‌شماره‌گذاری‌خط شروع‌شکل \
+شروع‌غیر‌فشرده شروع‌فشرده شروع‌متن شروع‌مجموعه‌ستون شروع‌مجموعه‌نماد \
+شروع‌محیط شروع‌مخالف شروع‌موضعی شروع‌مولفه شروع‌مکان‌گذاری \
+شروع‌نسخه شروع‌نقل‌قول شروع‌نوشتار شروع‌پانوشتهای‌موضعی شروع‌پروفایل \
+شروع‌پروژه شروع‌پس‌زمینه شروع‌پوشش شروع‌کد شماره‌افزایش \
+شماره‌زیرصفحه شماره‌زیرفرمول شماره‌سر شماره‌سرجاری شماره‌صفحه \
+شماره‌صفحه‌کامل شماره‌فرمول شماره‌مبدل شماره‌ها شماره‌کاهش \
+شماره‌کل‌صفحه‌ها شکافتن‌شناور شکل‌خارجی صفحه صفحه‌تست \
+صفحه‌زوج صفحه‌پردازش طول‌لیست عبوربلوکها عرض‌آرایش \
+عرض‌برگ عرض‌حاشیه عرض‌حاشیه‌خارجی عرض‌حاشیه‌داخلی عرض‌حاشیه‌راست \
+عرض‌حاشیه‌چپ عرض‌خط عرض‌لبه عرض‌لبه‌خارجی عرض‌لبه‌داخلی \
+عرض‌لبه‌راست عرض‌لبه‌چپ عرض‌لیست عرض‌متن عمق‌صفحه \
+عنوان‌حاشیه فاصله‌بالا فاصله‌ته‌برگ فاصله‌حاشیه فاصله‌حاشیه‌خارجی \
+فاصله‌حاشیه‌داخلی فاصله‌حاشیه‌راست فاصله‌حاشیه‌چپ فاصله‌سربرگ فاصله‌لبه \
+فاصله‌لبه‌خارجی فاصله‌لبه‌داخلی فاصله‌لبه‌راست فاصله‌لبه‌چپ فاصله‌پایین \
+فاصله‌پشت فشرده فضا فضاهای‌ثابت فضای‌بالا \
+فضای‌برش فضای‌ثابت فضای‌سفید فضای‌سفیدصحیح فضای‌پایین \
+فوری‌به‌لیست فوری‌بین‌لیست قالبی لوح‌مقایسه ماه \
+متغیر متن متن‌برچسب متن‌حاشیه متن‌سر متن‌پانوشت \
+محیط مراجعه مرجع مرجع‌صفحه مرجع‌متن \
+مرحله‌سر مسکن معنی‌واحد مقایسه‌گروه‌رنگ مقدارخاکستری \
+مقداررنگ مقیاس منفی منوی‌پانل مولفه \
+مکان مکان‌متن میدان میدانهای‌گزارش میدان‌شبیه‌سازی \
+میدان‌پشته میدان‌کپی میله‌تطابق میله‌رنگ میله‌پانل \
+ناشناس نام‌ماکرو نسخه نسخه‌نشانه نشانه‌گذاری \
+نشانه‌گذاری‌زوج نشر نصب‌زبان نقطه‌ها نقل \
+نقل‌قول نم نماد نمادسر نمادلیست \
+نمایش‌آرایش نمایش‌بارگذاریها نمایش‌بستها نمایش‌توری نمایش‌رنگ \
+نمایش‌شکلهای‌خارجی نمایش‌طرح‌بندی نمایش‌قالب نمایش‌قلم‌بدنه نمایش‌لوح \
+نمایش‌مجموعه‌علامت نمایش‌محیط‌قلم‌بدنه نمایش‌میدانها نمایش‌چاپ نمایش‌گروه‌رنگ \
+نوشتارزوج هدایت پا پابا پانوشت \
+پایان‌آرایش پایان‌آرایش‌ستون پایان‌بازبینی پایان‌بلوک‌حاشیه پایان‌ترکیب \
+پایان‌تصحیح‌خط پایان‌تطابق پایان‌تنظیم پایان‌تولید پایان‌جدول \
+پایان‌جدولها پایان‌خط پایان‌خطها پایان‌خط‌حاشیه پایان‌خط‌متن \
+پایان‌رنگ پایان‌ستونها پایان‌سراسری پایان‌شماره‌گذاری‌خط پایان‌غیرفشرده \
+پایان‌فشرده پایان‌متن پایان‌مجموعه‌ستون پایان‌محیط پایان‌مخالف \
+پایان‌موضعی پایان‌مولفه پایان‌مکان‌گذاری پایان‌نازکتر پایان‌نسخه \
+پایان‌نقل‌قول پایان‌نوشتار پایان‌پانوشتهای‌موضعی پایان‌پروفایل پایان‌پروژه \
+پایان‌پس‌زمینه پایان‌پوشش پایان‌کد پایین پرده \
+پروژه پرکردن‌میدان پس‌زمینه پیروی‌نسخه پیروی‌نسخه‌پروفایل \
+پیروی‌پروفایل چاپ‌ارتفاع‌برگ چاپ‌عرض‌برگ چوبخط چپ‌چین \
+کاغذزوج کسر کشیده کلمه‌حاشیه کلمه‌راست \
+گیره یادداشت یک‌جا یک‌خط
+
+keywordclass.context.ro=\
+CAP CUVANT CUVINTE Cap \
+Caps Character Characters Cuvant Cuvinte \
+KAP Kap Kaps LUNA Litera \
+Litere MONTH Numere Numereromane Romannumerals \
+WEEKDAY WORD WORDS Word Words \
+ZIDINSAPTAMANA about adapteazaaspect adaptlayout adubuffer \
+adumarcaje afiseazaaspect afiseazacampuri afiseazaculoare afiseazafiguriexterne \
+afiseazafonttext afiseazagrid afiseazagrupculoare afiseazamakeup afiseazamediufonttext \
+afiseazapaleta afiseazarama afiseazasetari afiseazasetsimboluri afiseazastruts \
+afiseazatiparire aliniat aliniatcentru aliniatdreapta aliniatstanga \
+appendix arg ascundeblocuri at atleftmargin \
+atpage atrightmargin background baraculoare barainteractiune \
+barasincronizare blackrule blackrules blanc blank \
+bookmark but butoaneinteractiune buton butonmeniu \
+button bypassblocks camp campumplere cap \
+chapter character characters chem citat \
+clip cloneazacamp clonefield coloana color \
+column comment comparagrupculoare comparapaleta comparecolorgroup \
+comparepalet completeazanumarpagina completecombinedlist completelistoffloats completelistofsorts \
+completelistofsynonyms completeregister componenta convertestenumar convertnumber \
+copiazacamp copyfield corecteazaspatiualb correctwhitespace coupledocument \
+coupledregister couplemarking couplepage couplepaper coupleregister \
+crlf culoare culoaregri cupleazadocument cupleazamarcaje \
+cupleazaregistru currentdate currentheadnumber cutspace cuvantdreapta \
+cuvantmarginal data datacurenta datareferit date \
+decouplemarking decrementnumber decupleazamarcaje define defineblank \
+defineblock definebodyfont definebodyfontDEF definebodyfontREF definebodyfontenvironment \
+definebuffer definecolor definecolorgroup definecolumnbreak definecolumnset \
+definecombination definecombinedlist defineconversion definedescription definedfont \
+defineenumeration definefield definefieldstack definefiguresymbol definefloat \
+definefont definefontfeature definefonthandling definefontsynonym defineframed \
+defineframedtext definehead defineindentedtext defineinmargin defineinteractionmenu \
+defineitemgroup definelabel definelayer definelayout definelist \
+definelogo definemakeup definemarking definemathalignment defineoutput \
+defineoverlay definepagebreak definepalet definepapersize defineparagraphs \
+defineplacement defineprofile defineprogram definereference definereferenceformat \
+definereferencelist defineregister definesection definesectionblock definesorting \
+definestartstop defineste definesteaccent definesteantet definesteblanc \
+definestebloc definesteblocsectiune definestebuffer definestecamp definestecampprincipal \
+definestecaracter definestecomanda definesteconversie definesteculoare definestedescriere \
+definestedimensiunehartie definesteenumerare definesteeticheta definestefloat definestefont \
+definestefontraw definestefonttext definesteformatreferinte definestegrupculori definestehbox \
+definesteinconjurare definestelista definestelistacombinata definestelistareferinte definestelogo \
+definestemakeup definestemarcaje definestemediulfonttext definestemeniuinteractiune definesteoutput \
+definesteoverlay definestepaleta definesteparagraf definestepozitietext definesteprofil \
+definesteprogram definestereferinte definesteregistru definesterigla definestesablontabel \
+definestesectiune definestesimbol definestesimbolfigura definestesinonim definestesinonimfont \
+definestesortare definestestartstop definestestil definestestilfont definestestivacampuri \
+definestesubcamp definestetabulatori definestetext definestetexteinconjurate definestetextinconjurat \
+definestetyping definestevariabilatext definesteversiune definesubfield definesymbol \
+definesynonyms definetabletemplate definetabulate definetext definetype \
+definetypeface definetyping defineversion description despre \
+determinacaracteristicilelistei determinacaracteristiciregistru determinanumartitlu determineheadnumber determinelistcharacteristics \
+dezactiveazameniuinteractiune dimensiune din disableinteractionmenu distantaantet \
+distantacolt distantacoltdreapta distantacoltstanga distantajos distantamargine \
+distantamarginedreapta distantamarginestanga distantasubsol distantasus domiciliu \
+dute dutebox dutepagina ecran el \
+element emptylines enumeration eticheta etichete \
+externalfigure fact faraaliniat faradimensiune farafisiere \
+faraliniiantetsisubsol faraliniisussijos faralista faramarcaje faraspatiu \
+faraspatiualb field fieldstack figuraexterna fillinfield \
+fillinline fillinrules fillintext firdepar fitfield \
+fixedspaces followprofile followprofileversion followversion folosesteURL \
+folosestebloc folosestecodificarea folosestecomenzi folosestedirector folosestedocumentextern \
+folosestefiguraexterna folosestefisiereexterne folosestefisierextern folosestemodul folosestemodule \
+folosestemuzicaexterna folosestereferinte folosestescriptJS folosestesimboluri folosestespeciale \
+folosesteurl footnote footnotetext forceblocks forteazablocuri \
+fractie fraction framed framedtext from \
+fundal gatablocuri getbuffer getmarking getnumber \
+godown goto gotobox graycolor grid \
+grosimelinie hairline hartiedubla head headnumber \
+headsym headtext hideblocks high hl \
+immediatebetweenlist immediatetolist impachetat impartefloat in \
+inalt inaltamargine inaltimeantet inaltimehartie inaltimehartieimprimanta \
+inaltimejos inaltimelista inaltimemakeup inaltimesubsol inaltimesus \
+inaltimetext indentation indenting indreapta inframed \
+ininner injos inleft inline inlinie \
+inmaframed inmargin inmargineadreapta inmargineastanga inneredgedistance \
+inneredgewidth innermargindistance innermarginwidth inothermargin inouter \
+inparteadreapta inparteastanga inright instalarelimba installlanguage \
+instanga interactionbar interactionbuttons intins item \
+items its jos jossus kap \
+keepblocks la labeling labels labeltext \
+language lapagina latimecoltdreapta latimecoltstanga latimecolturi \
+latimehartie latimehartieimprimanta latimelista latimemakeup latimemargine \
+latimemarginedreapta latimemarginestanga latimetext leftaligned leg \
+limba limbaprincipala liniemargine linieneagra liniesubtire \
+linieumplere liniinegre liniisubtiri listsymbol litera \
+litere loadsorts loadsynonyms logcampuri logfields \
+lohi low luna lungimelista maframed \
+mainlanguage mapfontsize mar marcaje marcheazaversiune \
+marginal marginrule margintext marking markversion \
+matematica mathematics mediaeval mediu meniuinteractiune \
+midaligned minicitat mirror month moveformula \
+moveongrid movesidefloat mutapegrid name navigating \
+necunoscut nextsection niveltitlu nocap noheaderandfooterlines \
+noindenting nokap nolist nomarking nomoreblocks \
+nomorefiles nop nospace nota notasubsol \
+note notopandbottomlines nowhitespace numarformula numarincrement \
+numarpagina numarsubformula numartitlu numartitlucurent numartotalpagini \
+numberofsubpages numbers nume numere numereromane \
+numeunitate nutesta olinie outeredgedistance outeredgewidth \
+outermargindistance outermarginwidth overbar overbars overstrike \
+overstrikes packed page pagedepth pageoffset \
+pagereference pagina paginadubla paragraph part \
+pastreazablocuri pelung periods placebookmarks placecombinedlist \
+placefloat placefootnotes placeformula placeheadnumber placeheadtext \
+placelegend placelist placelistoffloats placelistofsorts placelistofsynonyms \
+placelocalfootnotes placelogos placeongrid placeontopofeachother placerawlist \
+placereferencelist placeregister placesidebyside placesubformula plaseazapegrid \
+plaseazasemnecarte position potrivestecamp pozitie pozitietext \
+proceseazabloc proceseazapagina processblocks processpage produs \
+program proiect publicatie publication puncte \
+punedeasuprafiecareia punefatainfata puneformula punelegenda punelista \
+punelistacombinata punelogouri punenotesubsol punenotesubsollocale punenumarpagina \
+puneregistru punerigla punesubformula punevariabilatext quotation \
+quote ran ref refa reference \
+referinta referintapagina referintatext referit referral \
+referraldate referring reflexie register remarca \
+reservefloat reset reseteazamarcaje resetmarking resetnumber \
+resettextcontent rightaligned riglatext rigleumplere romannumerals \
+rotate roteste saripesteblocuri scala scale \
+screen scriebuffer scrieinlista scrieinlistareferinte scrieinregistru \
+scrieintreliste section seeregister selectblocks selecteazablocuri \
+selecteazahartie selecteazaversiune selectpaper selectversion semncarte \
+setarebarasincronizare setareitemization setarelimba setareoutput setarepozitie \
+setaresincronizare seteazaaliniat seteazaalinierea seteazaantet seteazaaranjareapag \
+seteazaaspect seteazabarainteractiune seteazablanc seteazabloc seteazablocsectiune \
+seteazablocurimarginale seteazabuffer seteazabutoane seteazacamp seteazacampuri \
+seteazaclipping seteazacoloane seteazacombinari seteazacomentariu seteazacomentariupagina \
+seteazaculoare seteazaculori seteazadefinireanotasubsol seteazadescriere seteazadimensiunihartie \
+seteazaecrane seteazaecraninteractiune seteazaelemente seteazaenumerare seteazafiguriexterne \
+seteazafloat seteazafloats seteazafonttext seteazaformulare seteazaformule \
+seteazafundal seteazafundaluri seteazagrosimelinie seteazaimpartireafloat seteazainconjurat \
+seteazaingust seteazainteractiunea seteazajos seteazalegenda seteazalegendele \
+seteazaliniesilabe seteazaliniesubtire seteazalinii seteazaliniimargine seteazaliniinegre \
+seteazaliniiumplere seteazalista seteazalistacombinata seteazalistareferinte seteazamajuscule \
+seteazamakeup seteazamarcaje seteazamarginal seteazamediulfonttext seteazameniuinteractiune \
+seteazaminicitat seteazanotasubsol seteazanumarpagina seteazanumarsubpagina seteazanumartitlu \
+seteazanumerotare seteazanumerotarelinii seteazanumerotarepagina seteazanumerotareparagrafe seteazapaleta \
+seteazaparagrafe seteazaplasareaopozita seteazapozitietext seteazaprofile seteazaprograme \
+seteazapublicatii seteazareferinte seteazaregistru seteazarigla seteazarigletext \
+seteazarigleumplere seteazarotare seteazasectiune seteazasimbol seteazasinonime \
+seteazasistem seteazasortare seteazaspatiu seteazaspatiualb seteazaspatiuinterliniar \
+seteazastrut seteazasublinie seteazasubsol seteazasus seteazatab \
+seteazatabele seteazatabulatori seteazatext seteazatexteantet seteazatextejos \
+seteazatextesubsol seteazatextesus seteazatextetext seteazatexteticheta seteazatexttitlu \
+seteazatitlu seteazatitluri seteazatoleranta seteazatranzitiepagina seteazatype \
+seteazatyping seteazaurl seteazavariabilatext seteazaversiuni setnumber \
+settextcontent setupalign setupanswerarea setuparranging setupbackground \
+setupbackgrounds setupblackrules setupblank setupblock setupbodyfont \
+setupbodyfontenvironment setupbottom setupbottomtexts setupbuffer setupbuttons \
+setupcapitals setupcaption setupcaptions setupclipping setupcolor \
+setupcolors setupcolumns setupcolumnset setupcolumnsetlines setupcolumnsetstart \
+setupcombinations setupcombinedlist setupcomment setupdescriptions setupenumerations \
+setupexternalfigures setupfield setupfields setupfillinlines setupfillinrules \
+setupfloat setupfloats setupfloatsplitting setupfonthandling setupfontsynonym \
+setupfooter setupfootertexts setupfootnotedefinition setupfootnotes setupforms \
+setupformulas setupframed setupframedtexts setuphead setupheader \
+setupheadertexts setupheadnumber setupheads setupheadtext setuphyphenmark \
+setupindentedtext setupindenting setupinmargin setupinteraction setupinteractionbar \
+setupinteractionmenu setupinteractionscreen setupinterlinespace setupinterlinespace2 setupitemgroup \
+setupitems setuplabeltext setuplanguage setuplayout setuplegend \
+setuplinenumbering setuplines setuplinewidth setuplist setuplistalternative \
+setupmakeup setupmarginblocks setupmarginrules setupmarking setupmathalignment \
+setupnarrower setupnumber setupnumbering setupoppositeplacing setupoutput \
+setuppagenumber setuppagenumbering setuppagetransitions setuppalet setuppaper \
+setuppapersize setupparagraphnumbering setupparagraphs setupplacement setuppositioning \
+setupprofiles setupprograms setuppublications setupquote setupreferencelist \
+setupreferencing setupregister setuprotate setupscreens setupsection \
+setupsectionblock setupsorting setupspacing setupstartstop setupstrut \
+setupsubpagenumber setupsymbolset setupsynchronization setupsynchronizationbar setupsynonyms \
+setupsystem setuptab setuptables setuptabulate setuptext \
+setuptextrules setuptexttexts setupthinrules setuptolerance setuptop \
+setuptoptexts setuptype setuptyping setupunderbar setupurl \
+setupversions setupwhitespace setvariabilatext showbodyfont showbodyfontenvironment \
+showcolor showcolorgroup showexternalfigures showfields showframe \
+showgrid showlayout showmakeup showpalet showprint \
+showsetups showstruts showsymbolset sim simbol \
+sincronizeaza someline somewhere sort space \
+spatiifixate spatiu spatiualb spatiufixat spatiujos \
+spatiuspate spatiusus splitfloat startalignment startaliniere \
+startbackground startblocmarginal startbuffer startcitat startcodificare \
+startcoloane startcolor startcolumnmakeup startcolumns startcolumnset \
+startcombinare startcombination startcomment startcomponent startcomponenta \
+startcorectielinie startculoare startdescription startdocument startenumeration \
+startenvironment startfact startfigura startfigure startfloattext \
+startformula startframedtext startfundal startglobal starthiding \
+startimpachetat startingust startinteractionmenu startitemgroup startlegend \
+startline startlinecorrection startlinenumbering startlines startlinie \
+startliniemargine startlinii startlocal startlocalenvironment startlocalfootnotes \
+startmakeup startmarginblock startmarginrule startmediu startnamemakeup \
+startnarrower startneimpachetat startnotesubsollocale startnumerotarelinii startopozit \
+startopposite startoverlay startoverview startpacked startparagraph \
+startpositioning startpostponing startpozitionare startproduct startprodus \
+startprofil startprofile startproiect startproject startquotation \
+startraster startregister startriglatext startsetsimboluri startsincronizare \
+startsymbolset startsynchronization starttabel starttabele starttable \
+starttables starttabulate starttext starttextrule starttyping \
+startunpacked startversion startversiune stivacampuri stopalignment \
+stopaliniere stopbackground stopblobal stopblocmarginal stopbuffer \
+stopcitat stopcodificare stopcoloane stopcolor stopcolumnmakeup \
+stopcolumns stopcolumnset stopcombinare stopcombination stopcomment \
+stopcomponent stopcomponenta stopcorectielinie stopculoare stopdescription \
+stopdocument stopenumeration stopenvironment stopfact stopfigure \
+stopfloattext stopformula stopframedtext stopfundal stophiding \
+stopimpachetat stopingust stopinteractionmenu stopitemgroup stoplegend \
+stopline stoplinecorrection stoplinenumbering stoplines stoplinie \
+stopliniemargine stoplinii stoplocal stoplocalenvironment stoplocalfootnotes \
+stopmakeup stopmarginblock stopmarginrule stopmediu stopnamemakeup \
+stopnarrower stopneimpachetat stopnotesubsollocale stopnumerotarelinii stopopozit \
+stopopposite stopoverlay stopoverview stoppacked stopparagraph \
+stoppositioning stoppostponing stoppozitionare stopproduct stopprodus \
+stopprofil stopprofile stopproiect stopproject stopquotation \
+stopraster stopriglatext stopsincronizare stopsymbolset stopsynchronization \
+stoptabel stoptabele stoptable stoptables stoptabulate \
+stoptext stoptextrule stoptyping stopunpacked stopversion \
+stopversiune stretched sub subject subpagenumber \
+subsection subsubject subsubsection subsubsubject switchtobodyfont \
+sym symbol synchronizationbar synchronize synonym \
+tab testcolumn testpage tex texteticheta \
+textmarginal textreference textrule texttitlu textumplere \
+thinrule thinrules title titlu titlumarginal \
+tooltip traduce translate trecilafontraw trecilafonttext \
+txt typ type typebuffer typefile \
+underbar underbars undeva urmeazaprofil urmeazaversiune \
+urmeazaversiuneprofil useURL useXMLfilter useblocks usecommands \
+usedirectory useencoding useexternaldocument useexternalfigure useexternalfile \
+useexternalfiles useexternalsoundtrack usemodule usereferences usespecials \
+usesymbols usetypescript usetypescriptfile valoareculoare valoaregri \
+variabilatext version versiune vl weekday \
+whitespace wordright writebetweenlist writetolist writetoreferencelist \
+writetoregister zidinsaptamana
+
diff --git a/context/data/scite/context/scite-context-data-metafun.properties b/context/data/scite/context/scite-context-data-metafun.properties
new file mode 100644
index 000000000..977ca9dfd
--- /dev/null
+++ b/context/data/scite/context/scite-context-data-metafun.properties
@@ -0,0 +1,59 @@
+keywordclass.metafun.commands=\
+transparency sqr log ln \
+exp inv pow pi radian \
+tand cotd sin cos tan \
+cot atan asin acos invsin \
+invcos invtan acosh asinh sinh \
+cosh zmod paired tripled unitcircle \
+fulldiamond unitdiamond fullsquare llcircle lrcircle \
+urcircle ulcircle tcircle bcircle lcircle \
+rcircle lltriangle lrtriangle urtriangle ultriangle \
+uptriangle downtriangle lefttriangle righttriangle triangle \
+smoothed cornered superellipsed randomized squeezed \
+enlonged shortened punked curved unspiked \
+simplified blownup stretched enlarged leftenlarged \
+topenlarged rightenlarged bottomenlarged crossed laddered \
+randomshifted interpolated paralleled cutends peepholed \
+llenlarged lrenlarged urenlarged ulenlarged llmoved \
+lrmoved urmoved ulmoved rightarrow leftarrow \
+centerarrow boundingbox innerboundingbox outerboundingbox pushboundingbox \
+popboundingbox 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 cmyk spotcolor multitonecolor \
+namedcolor drawfill undrawfill inverted uncolored \
+softened grayed greyed onlayer along \
+graphictext loadfigure externalfigure figure register \
+withmask bitmapimage colordecimals ddecimal dddecimal \
+ddddecimal textext thetextext rawtextext textextoffset \
+verbatim thelabel label autoalign transparent \
+withtransparency property properties withproperties asgroup \
+infont space crlf dquote percent \
+SPACE CRLF DQUOTE PERCENT grayscale \
+greyscale withgray withgrey colorpart 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 tensecircle roundedsquare \
+colortype whitecolor blackcolor basiccolors normalfill \
+normaldraw visualizepaths naturalizepaths drawboundary drawwholepath \
+visualizeddraw visualizedfill draworigin drawboundingbox drawpath \
+drawpoint drawpoints drawcontrolpoints drawcontrollines drawpointlabels \
+drawlineoptions drawpointoptions drawcontroloptions drawlabeloptions draworiginoptions \
+drawboundoptions drawpathoptions resetdrawoptions undashed decorated \
+redecorated undecorated passvariable passarrayvariable tostring \
+format formatted startpassingvariable stoppassingvariable eofill \
+eoclip area
+
+keywordclass.metafun.internals=\
+nocolormodel greycolormodel graycolormodel rgbcolormodel \
+cmykcolormodel shadefactor textextoffset normaltransparent multiplytransparent \
+screentransparent overlaytransparent softlighttransparent hardlighttransparent colordodgetransparent \
+colorburntransparent darkentransparent lightentransparent differencetransparent exclusiontransparent \
+huetransparent saturationtransparent colortransparent luminositytransparent metapostversion \
+maxdimensions
+
diff --git a/context/data/scite/context/scite-context-data-metapost.properties b/context/data/scite/context/scite-context-data-metapost.properties
new file mode 100644
index 000000000..59014623a
--- /dev/null
+++ b/context/data/scite/context/scite-context-data-metapost.properties
@@ -0,0 +1,127 @@
+keywordclass.metapost.commands=\
+upto downto beginfig endfig \
+beginglyph endglyph rotatedaround reflectedabout arrowhead \
+currentpen currentpicture cuttings defaultfont extra_beginfig \
+extra_endfig ditto EOF 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 triplet quadruplet
+
+keywordclass.metapost.disabled=\
+verbatimtex troffmode
+
+keywordclass.metapost.internals=\
+mitered rounded beveled butt \
+squared eps epsilon infinity bboxmargin \
+ahlength ahangle labeloffset dotlabeldiam defaultpen \
+defaultscale join_radius charscale pen_lft pen_rt \
+pen_top pen_bot
+
+keywordclass.metapost.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
+
+keywordclass.metapost.primitives=\
+charcode day linecap linejoin \
+miterlimit month pausing prologues showstopping \
+time tracingcapsules tracingchoices mpprocset tracingcommands \
+tracingequations tracinglostchars tracingmacros tracingonline tracingoutput \
+tracingrestores tracingspecs tracingstats tracingtitles truecorners \
+warningcheck year false nullpicture pencircle \
+true and angle arclength arctime \
+ASCII boolean bot char color \
+cosd cycle decimal directiontime floor \
+fontsize hex infont intersectiontimes known \
+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 \
+shipout show showdependencies showtoken showvariable \
+special begingroup endgroup of curl \
+tension and controls interpath on \
+off def vardef enddef expr \
+suffix text primary secondary tertiary \
+primarydef secondarydef tertiarydef randomseed also \
+contour doublepath withcolor withcmykcolor withpen \
+dashed 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 \
+readstring scantokens end outer inner \
+write to readfrom 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 stroked filled textual clipped \
+bounded pathpart expandafter minute hour \
+outputformat outputtemplate filenametemplate fontmapfile fontmapline \
+fontpart fontsize glyph restoreclipcolor troffmode \
+runscript maketext
+
+keywordclass.metapost.shortcuts=\
+.. ... -- --- \
+& \
+
+keywordclass.metapost.tex=\
+btex etex verbatimtex
+
diff --git a/context/data/scite/context/scite-context-data-tex.properties b/context/data/scite/context/scite-context-data-tex.properties
new file mode 100644
index 000000000..95933ad53
--- /dev/null
+++ b/context/data/scite/context/scite-context-data-tex.properties
@@ -0,0 +1,238 @@
+keywordclass.tex.aleph=\
+AlephVersion Alephminorversion Alephrevision Alephversion \
+Omegaminorversion Omegarevision Omegaversion boxdir pagebottomoffset \
+pagerightoffset
+
+keywordclass.tex.etex=\
+botmarks clubpenalties currentgrouplevel currentgrouptype \
+currentifbranch currentiflevel currentiftype detokenize dimexpr \
+displaywidowpenalties eTeXVersion eTeXminorversion eTeXrevision eTeXversion \
+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 readline \
+savinghyphcodes savingvdiscards scantokens showgroups showifs \
+showtokens splitbotmarks splitdiscards splitfirstmarks topmarks \
+tracingassigns tracinggroups tracingifs tracingnesting tracingscantokens \
+unexpanded unless widowpenalties
+
+keywordclass.tex.luatex=\
+Uchar Udelcode Udelcodenum Udelimiter \
+Udelimiterover Udelimiterunder Umathaccent Umathaxis Umathbinbinspacing \
+Umathbinclosespacing Umathbininnerspacing Umathbinopenspacing Umathbinopspacing Umathbinordspacing \
+Umathbinpunctspacing Umathbinrelspacing Umathchar Umathchardef Umathcharnum \
+Umathclosebinspacing Umathcloseclosespacing Umathcloseinnerspacing Umathcloseopenspacing Umathcloseopspacing \
+Umathcloseordspacing Umathclosepunctspacing Umathcloserelspacing Umathcode Umathcodenum \
+Umathconnectoroverlapmin Umathfractiondelsize Umathfractiondenomdown Umathfractiondenomvgap Umathfractionnumup \
+Umathfractionnumvgap Umathfractionrule Umathinnerbinspacing Umathinnerclosespacing Umathinnerinnerspacing \
+Umathinneropenspacing Umathinneropspacing Umathinnerordspacing Umathinnerpunctspacing Umathinnerrelspacing \
+Umathlimitabovebgap Umathlimitabovekern Umathlimitabovevgap Umathlimitbelowbgap Umathlimitbelowkern \
+Umathlimitbelowvgap Umathopbinspacing Umathopclosespacing Umathopenbinspacing Umathopenclosespacing \
+Umathopeninnerspacing Umathopenopenspacing Umathopenopspacing Umathopenordspacing Umathopenpunctspacing \
+Umathopenrelspacing Umathoperatorsize Umathopinnerspacing Umathopopenspacing Umathopopspacing \
+Umathopordspacing Umathoppunctspacing Umathoprelspacing Umathordbinspacing Umathordclosespacing \
+Umathordinnerspacing Umathordopenspacing Umathordopspacing Umathordordspacing Umathordpunctspacing \
+Umathordrelspacing Umathoverbarkern Umathoverbarrule Umathoverbarvgap Umathoverdelimiterbgap \
+Umathoverdelimitervgap Umathpunctbinspacing Umathpunctclosespacing Umathpunctinnerspacing Umathpunctopenspacing \
+Umathpunctopspacing Umathpunctordspacing Umathpunctpunctspacing Umathpunctrelspacing Umathquad \
+Umathradicaldegreeafter Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern Umathradicalrule \
+Umathradicalvgap Umathrelbinspacing Umathrelclosespacing Umathrelinnerspacing Umathrelopenspacing \
+Umathrelopspacing Umathrelordspacing Umathrelpunctspacing Umathrelrelspacing Umathspaceafterscript \
+Umathstackdenomdown Umathstacknumup Umathstackvgap Umathsubshiftdown Umathsubshiftdrop \
+Umathsubsupshiftdown Umathsubsupvgap Umathsubtopmax Umathsupbottommin Umathsupshiftdrop \
+Umathsupshiftup Umathsupsubbottommax Umathunderbarkern Umathunderbarrule Umathunderbarvgap \
+Umathunderdelimiterbgap Umathunderdelimitervgap Uoverdelimiter Uradical Uroot \
+Ustack Ustartdisplaymath Ustartmath Ustopdisplaymath Ustopmath \
+Usubscript Usuperscript Uunderdelimiter alignmark aligntab \
+attribute attributedef catcodetable clearmarks crampeddisplaystyle \
+crampedscriptscriptstyle crampedscriptstyle crampedtextstyle fontid formatname \
+gleaders ifabsdim ifabsnum ifprimitive initcatcodetable \
+latelua luaescapestring luastartup luatexbanner luatexrevision \
+luatexversion luafunction mathstyle nokerns noligs \
+outputbox pageleftoffset pagetopoffset postexhyphenchar posthyphenchar \
+preexhyphenchar prehyphenchar primitive savecatcodetable scantextokens \
+suppressfontnotfounderror suppressifcsnameerror suppresslongerror suppressoutererror suppressmathparerror \
+synctex
+
+keywordclass.tex.omega=\
+OmegaVersion bodydir chardp charht \
+charit charwd leftghost localbrokenpenalty localinterlinepenalty \
+localleftbox localrightbox mathdir odelcode odelimiter \
+omathaccent omathchar omathchardef omathcode oradical \
+pagedir pageheight pagewidth pardir rightghost \
+textdir
+
+keywordclass.tex.pdftex=\
+efcode expanded ifincsname ifpdfabsdim \
+ifpdfabsnum ifpdfprimitive leftmarginkern letterspacefont lpcode \
+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 pdfimageapplygamma pdfimagegamma pdfimagehicolor \
+pdfimageresolution pdfincludechars pdfinclusioncopyfonts pdfinclusionerrorlevel pdfinfo \
+pdfinsertht pdflastannot pdflastlinedepth pdflastlink pdflastobj \
+pdflastxform pdflastximage pdflastximagecolordepth pdflastximagepages pdflastxpos \
+pdflastypos pdflinkmargin pdfliteral pdfmapfile pdfmapline \
+pdfminorversion pdfnames pdfnoligatures pdfnormaldeviate pdfobj \
+pdfobjcompresslevel pdfoptionpdfminorversion pdfoutline pdfoutput pdfpageattr \
+pdfpagebox pdfpageheight pdfpageref pdfpageresources pdfpagesattr \
+pdfpagewidth pdfpkmode pdfpkresolution pdfprimitive pdfprotrudechars \
+pdfpxdimen pdfrandomseed pdfrefobj pdfrefxform pdfrefximage \
+pdfreplacefont pdfrestore pdfretval pdfsave pdfsavepos \
+pdfsetmatrix pdfsetrandomseed pdfstartlink pdfstartthread pdftexbanner \
+pdftexrevision pdftexversion pdfthread pdfthreadmargin pdftracingfonts \
+pdftrailer pdfuniformdeviate pdfuniqueresname pdfvorigin pdfxform \
+pdfxformattr pdfxformname pdfxformresources pdfximage pdfximagebbox \
+quitvmode rightmarginkern rpcode tagcode
+
+keywordclass.tex.tex=\
+- / AlephVersion Alephminorversion \
+Alephrevision Alephversion OmegaVersion Omegaminorversion Omegarevision \
+Omegaversion Udelcode Udelcodenum Udelimiter Udelimiterover \
+Udelimiterunder Umathaccent Umathaxis Umathbinbinspacing Umathbinclosespacing \
+Umathbininnerspacing Umathbinopenspacing Umathbinopspacing Umathbinordspacing Umathbinpunctspacing \
+Umathbinrelspacing Umathchar Umathchardef Umathcharnum Umathclosebinspacing \
+Umathcloseclosespacing Umathcloseinnerspacing Umathcloseopenspacing Umathcloseopspacing Umathcloseordspacing \
+Umathclosepunctspacing Umathcloserelspacing Umathcode Umathcodenum Umathconnectoroverlapmin \
+Umathfractiondelsize Umathfractiondenomdown Umathfractiondenomvgap Umathfractionnumup Umathfractionnumvgap \
+Umathfractionrule Umathinnerbinspacing Umathinnerclosespacing Umathinnerinnerspacing Umathinneropenspacing \
+Umathinneropspacing Umathinnerordspacing Umathinnerpunctspacing Umathinnerrelspacing Umathlimitabovebgap \
+Umathlimitabovekern Umathlimitabovevgap Umathlimitbelowbgap Umathlimitbelowkern Umathlimitbelowvgap \
+Umathopbinspacing Umathopclosespacing Umathopenbinspacing Umathopenclosespacing Umathopeninnerspacing \
+Umathopenopenspacing Umathopenopspacing Umathopenordspacing Umathopenpunctspacing Umathopenrelspacing \
+Umathoperatorsize Umathopinnerspacing Umathopopenspacing Umathopopspacing Umathopordspacing \
+Umathoppunctspacing Umathoprelspacing Umathordbinspacing Umathordclosespacing Umathordinnerspacing \
+Umathordopenspacing Umathordopspacing Umathordordspacing Umathordpunctspacing Umathordrelspacing \
+Umathoverbarkern Umathoverbarrule Umathoverbarvgap Umathoverdelimiterbgap Umathoverdelimitervgap \
+Umathpunctbinspacing Umathpunctclosespacing Umathpunctinnerspacing Umathpunctopenspacing Umathpunctopspacing \
+Umathpunctordspacing Umathpunctpunctspacing Umathpunctrelspacing Umathquad Umathradicaldegreeafter \
+Umathradicaldegreebefore Umathradicaldegreeraise Umathradicalkern Umathradicalrule Umathradicalvgap \
+Umathrelbinspacing Umathrelclosespacing Umathrelinnerspacing Umathrelopenspacing Umathrelopspacing \
+Umathrelordspacing Umathrelpunctspacing Umathrelrelspacing Umathspaceafterscript Umathstackdenomdown \
+Umathstacknumup Umathstackvgap Umathsubshiftdown Umathsubshiftdrop Umathsubsupshiftdown \
+Umathsubsupvgap Umathsubtopmax Umathsupbottommin Umathsupshiftdrop Umathsupshiftup \
+Umathsupsubbottommax Umathunderbarkern Umathunderbarrule Umathunderbarvgap Umathunderdelimiterbgap \
+Umathunderdelimitervgap Uoverdelimiter Uradical Uroot Ustack \
+Ustartdisplaymath Ustartmath Ustopdisplaymath Ustopmath Usubscript \
+Usuperscript Uunderdelimiter above abovedisplayshortskip abovedisplayskip \
+abovewithdelims accent adjdemerits advance afterassignment \
+aftergroup alignmark aligntab atop atopwithdelims \
+attribute attributedef badness baselineskip batchmode \
+begingroup belowdisplayshortskip belowdisplayskip binoppenalty bodydir \
+botmark botmarks box boxdir boxmaxdepth \
+brokenpenalty catcode catcodetable char chardef \
+cleaders clearmarks closein closeout clubpenalties \
+clubpenalty copy count countdef cr \
+crampeddisplaystyle crampedscriptscriptstyle crampedscriptstyle crampedtextstyle crcr \
+csname currentgrouplevel currentgrouptype currentifbranch currentiflevel \
+currentiftype day deadcycles def defaulthyphenchar \
+defaultskewchar delcode delimiter delimiterfactor delimitershortfall \
+detokenize dimen dimendef dimexpr directlua \
+discretionary displayindent displaylimits displaystyle displaywidowpenalties \
+displaywidowpenalty displaywidth divide doublehyphendemerits dp \
+dump eTeXVersion eTeXminorversion eTeXrevision eTeXversion \
+edef efcode else emergencystretch end \
+endcsname endgroup endinput endlinechar eqno \
+errhelp errmessage errorcontextlines errorstopmode escapechar \
+everycr everydisplay everyeof everyhbox everyjob \
+everymath everypar everyvbox exhyphenchar exhyphenpenalty \
+expandafter expanded fam fi finalhyphendemerits \
+firstmark firstmarks floatingpenalty font fontchardp \
+fontcharht fontcharic fontcharwd fontdimen fontid \
+fontname formatname futurelet gdef gleaders \
+global globaldefs glueexpr glueshrink glueshrinkorder \
+gluestretch gluestretchorder gluetomu halign hangafter \
+hangindent hbadness hbox hfil hfill \
+hfilneg hfuzz hoffset holdinginserts hrule \
+hsize hskip hss ht hyphenation \
+hyphenchar hyphenpenalty if ifabsdim ifabsnum \
+ifcase ifcat ifcsname ifdefined ifdim \
+ifeof iffalse iffontchar ifhbox ifhmode \
+ifincsname ifinner ifmmode ifnum ifodd \
+ifpdfabsdim ifpdfabsnum ifpdfprimitive ifprimitive iftrue \
+ifvbox ifvmode ifvoid ifx ignorespaces \
+immediate indent initcatcodetable input inputlineno \
+insert insertpenalties interactionmode interlinepenalties interlinepenalty \
+jobname kern language lastbox lastkern \
+lastlinefit lastnodetype lastpenalty lastskip latelua \
+lccode leaders left leftghost lefthyphenmin \
+leftmarginkern leftskip leqno let letterspacefont \
+limits linepenalty lineskip lineskiplimit localbrokenpenalty \
+localinterlinepenalty localleftbox localrightbox long looseness \
+lower lowercase lpcode luaescapestring luastartup \
+luatexbanner luatexrevision luatexversion mag mark \
+marks mathaccent mathbin mathchar mathchardef \
+mathchoice mathclose mathcode mathdir mathinner \
+mathop mathopen mathord mathpunct mathrel \
+mathstyle mathsurround maxdeadcycles maxdepth meaning \
+medmuskip message middle mkern month \
+moveleft moveright mskip muexpr multiply \
+muskip muskipdef mutoglue newlinechar noalign \
+noboundary noexpand noindent nokerns noligs \
+nolimits nolocaldirs nolocalwhatsits nonscript nonstopmode \
+nulldelimiterspace nullfont number numexpr odelcode \
+odelimiter omathaccent omathchar omathchardef omathcode \
+omit openin openout or oradical \
+outer output outputbox outputpenalty over \
+overfullrule overline overwithdelims pagebottomoffset pagedepth \
+pagedir pagediscards pagefilllstretch pagefillstretch pagefilstretch \
+pagegoal pageheight pageleftoffset pagerightoffset pageshrink \
+pagestretch pagetopoffset pagetotal pagewidth par \
+pardir parfillskip parindent parshape parshapedimen \
+parshapeindent parshapelength parskip patterns pausing \
+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 pdfimageapplygamma pdfimagegamma pdfimagehicolor \
+pdfimageresolution pdfincludechars pdfinclusioncopyfonts pdfinclusionerrorlevel pdfinfo \
+pdfinsertht pdflastannot pdflastlinedepth pdflastlink pdflastobj \
+pdflastxform pdflastximage pdflastximagecolordepth pdflastximagepages pdflastxpos \
+pdflastypos pdflinkmargin pdfliteral pdfmapfile pdfmapline \
+pdfminorversion pdfnames pdfnoligatures pdfnormaldeviate pdfobj \
+pdfobjcompresslevel pdfoptionpdfminorversion pdfoutline pdfoutput pdfpageattr \
+pdfpagebox pdfpageheight pdfpageref pdfpageresources pdfpagesattr \
+pdfpagewidth pdfpkmode pdfpkresolution pdfprimitive pdfprotrudechars \
+pdfpxdimen pdfrandomseed pdfrefobj pdfrefxform pdfrefximage \
+pdfreplacefont pdfrestore pdfretval pdfsave pdfsavepos \
+pdfsetmatrix pdfsetrandomseed pdfstartlink pdfstartthread pdftexbanner \
+pdftexrevision pdftexversion pdfthread pdfthreadmargin pdftracingfonts \
+pdftrailer pdfuniformdeviate pdfuniqueresname pdfvorigin pdfxform \
+pdfxformattr pdfxformname pdfxformresources pdfximage pdfximagebbox \
+penalty postdisplaypenalty postexhyphenchar posthyphenchar predisplaydirection \
+predisplaypenalty predisplaysize preexhyphenchar prehyphenchar pretolerance \
+prevdepth prevgraf primitive protected quitvmode \
+radical raise read readline relax \
+relpenalty right rightghost righthyphenmin rightmarginkern \
+rightskip romannumeral rpcode savecatcodetable savinghyphcodes \
+savingvdiscards scantextokens scantokens scriptfont scriptscriptfont \
+scriptscriptstyle scriptspace scriptstyle scrollmode setbox \
+setlanguage sfcode shipout show showbox \
+showboxbreadth showboxdepth showgroups showifs showlists \
+showthe showtokens skewchar skip skipdef \
+spacefactor spaceskip span special splitbotmark \
+splitbotmarks splitdiscards splitfirstmark splitfirstmarks splitmaxdepth \
+splittopskip string suppressfontnotfounderror suppressifcsnameerror suppresslongerror \
+suppressoutererror synctex tabskip tagcode textdir \
+textfont textstyle the thickmuskip thinmuskip \
+time toks toksdef tolerance topmark \
+topmarks topskip tracingassigns tracingcommands tracinggroups \
+tracingifs tracinglostchars tracingmacros tracingnesting tracingonline \
+tracingoutput tracingpages tracingparagraphs tracingrestores tracingscantokens \
+tracingstats uccode uchyph underline unexpanded \
+unhbox unhcopy unkern unless unpenalty \
+unskip unvbox unvcopy uppercase vadjust \
+valign vbadness vbox vcenter vfil \
+vfill vfilneg vfuzz voffset vrule \
+vsize vskip vsplit vss vtop \
+wd widowpenalties widowpenalty write xdef \
+xleaders xspaceskip year
+
+keywordclass.tex.xetex=\
+XeTeXversion
+
diff --git a/context/data/scite/context/scite-context-external.properties b/context/data/scite/context/scite-context-external.properties
new file mode 100644
index 000000000..b48f25525
--- /dev/null
+++ b/context/data/scite/context/scite-context-external.properties
@@ -0,0 +1,104 @@
+# 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 teh 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;
+file.patterns.cpp=*.h;*.c;*.hh;*.cc;*.hpp;*.cpp;*.hxx;*.cxx;
+file.patterns.bib=*.bib
+
+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.tex)=lpeg_scite-context-lexer-tex
+lexer.$(file.patterns.xml)=lpeg_scite-context-lexer-xml
+lexer.$(file.patterns.html)=lpeg_scite-context-lexer-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
+
+comment.block.lpeg_scite-context-lexer-tex=%
+comment.block.at.line.start.lpeg_scite-context-lexer-tex=1
+
+comment.block.lpeg_scite-context-lexer-mps=%
+comment.block.at.line.start.lpeg_scite-context-lexer-mps=1
+
+comment.block.lpeg_scite-context-lexer-lua=--
+comment.block.at.line.start.lpeg_scite-context-lexer-lua=1
+
+comment.block.lpeg_scite-context-lexer-cld=--
+comment.block.at.line.start.lpeg_scite-context-lexer-cld=1
+
+comment.block.lpeg_scite-context-lexer-bibtex=%
+comment.block.at.line.start.lpeg_scite-context-lexer-bibtex=1
+
+comment.block.lpeg_props=#
+comment.block.at.line.start.lpeg_props=1
+
+#~ comment.block.lpeg_ctx-tex=%
+#~ comment.block.at.line.start.lpeg_ctx-tex=1
+
+#~ comment.block.lpeg_ctx-mps=%
+#~ comment.block.at.line.start.lpeg_ctx-mps=1
+
+#~ comment.block.lpeg_ctx-lua=--
+#~ comment.block.at.line.start.lpeg_ctx-lua=1
+
+#~ comment.block.lpeg_ctx-cld=--
+#~ comment.block.at.line.start.lpeg_ctx-cld=1
+
+#~ comment.block.lpeg_props=#
+#~ comment.block.at.line.start.lpeg_props=1
+
+#~ style.*.34=bold
+#~ style.*.35=bold
+
+style.*.34=$(styles.bracelight)
+style.*.35=$(styles.bracebad)
diff --git a/context/data/scite/context/scite-context-internal.properties b/context/data/scite/context/scite-context-internal.properties
new file mode 100644
index 000000000..038381dc7
--- /dev/null
+++ b/context/data/scite/context/scite-context-internal.properties
@@ -0,0 +1,86 @@
+# Metapost: lexer.metapost.interface.default
+#
+# 0 not used
+# 1 metapost primitives and commands
+# 2 metafun macros
+#
+# first lines of a metapost file are interpreted as follows:
+#
+# % interface=none|metapost|mp|metafun
+
+import context/scite-context-data-metapost
+import context/scite-context-data-metafun
+
+keywordclass.metapost.all=$(keywordclass.metapost.tex) $(keywordclass.metapost.plain) $(keywordclass.metapost.primitives)
+keywordclass.metafun.all=$(keywordclass.metafun.constants) $(keywordclass.metafun.helpers)
+
+keywords.$(file.patterns.metafun)=$(keywordclass.metapost.all)
+keywords2.$(file.patterns.metafun)=$(keywordclass.metapost.all) $(keywordclass.metafun.all)
+
+lexer.metapost.interface.default=2
+lexer.metapost.comment.process=0
+
+lexer.$(file.patterns.metapost)=metapost
+lexer.$(file.patterns.metafun)=metapost
+
+# Metapost: comments
+
+comment.block.metapost=%
+comment.block.at.line.start.metapost=1
+
+# internal lexers
+#
+# 0 all \commands
+# 1 tex etex pdftex omega primitives
+# 2 context nl (when context.properties is loaded)
+# 3 context en (when context.properties is loaded)
+# 4 context de (when context.properties is loaded)
+# 5 context cz (when context.properties is loaded)
+# 6 context it (when context.properties is loaded)
+# 7 context ro (when context.properties is loaded)
+# 8 latex (no keywords yet; will move up)
+#
+# first lines of a tex file are interpreted as follows
+#
+# % interface=all|nl|en|de|cz|it|ro|latex
+
+import context/scite-context-data-tex
+import context/scite-context-data-context
+import context/scite-context-data-interfaces
+
+word.characters.$(file.patterns.context)=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@!?_\\
+
+keywordclass.context.base=\
+ $(keywordclass.tex.tex) \
+ $(keywordclass.tex.etex) \
+ $(keywordclass.tex.pdftex) \
+ $(keywordclass.tex.aleph) \
+ $(keywordclass.tex.omega) \
+ $(keywordclass.tex.xetex) \
+ $(keywordclass.context.constants) \
+ $(keywordclass.context.helpers)
+
+keywords.$(file.patterns.context)=$(keywordclass.context.base)
+keywords2.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.nl)
+keywords3.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.en)
+keywords4.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.de)
+keywords5.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.cs)
+keywords6.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.it)
+keywords7.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.ro)
+keywords8.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.fr)
+keywords9.$(file.patterns.context)=$(keywordclass.context.base) $(keywordclass.context.pe)
+
+comment.block.context=%
+comment.block.at.line.start.context=1
+
+lexer.context.interface.default=0
+lexer.context.use.keywords=1
+lexer.context.comment.process=0
+lexer.context.auto.if=1
+
+lexer.$(file.patterns.context)=tex
+lexer.$(file.patterns.tex)=tex
+
+lexer.$(file.patterns.example)=xml
+lexer.$(file.patterns.lua)=lua
+lexer.$(file.patterns.metafun)=metapost
diff --git a/context/data/scite/context/scite-context-user.properties b/context/data/scite/context/scite-context-user.properties
new file mode 100644
index 000000000..b6fc34282
--- /dev/null
+++ b/context/data/scite/context/scite-context-user.properties
@@ -0,0 +1,15 @@
+# this loades the basics
+
+import context/scite-context
+
+# internal lexing
+
+import context/scite-context-internal
+
+# external lexing (tex, mps, cld/lua, xml)
+
+import context/scite-context-external
+
+# this does some tuning
+
+import context/scite-pragma
diff --git a/context/data/scite/context/scite-context.properties b/context/data/scite/context/scite-context.properties
new file mode 100644
index 000000000..f1deb9df5
--- /dev/null
+++ b/context/data/scite/context/scite-context.properties
@@ -0,0 +1,685 @@
+# file : context.properties
+# version : 18 august 2003
+# author : Hans Hagen / PRAGMA ADE / www.pragma-ade.com
+
+# there but not yet working:
+
+# comment.box.start.tex=\n\\starthiding\n
+# comment.box.middle.tex=
+# comment.box.end.tex=\n\\stophiding\n
+
+# comment.box.start.xml=<!--
+# comment.box.middle.xml=
+# comment.box.end.tex=-->
+
+# comment.block.start.xml=<!--\s
+# comment.block.end.xml=\s-->
+
+# calltip.*.end.definition=%
+
+# This is the new default for windows 2000+ per 1.56:
+#
+# if PLAT_WIN
+# find.command=findstr /n /s $(find.what) $(find.files)
+#
+# uncomment this (or move to user properties) if needed:
+#
+# if PLAT_WIN
+# find.command=fgrep -G -n $(find.what) $(find.files)
+
+# 1: better anti-aliasing on windows, also slightly diffent lineheights
+
+#~ technology=1
+
+# not much difference
+#
+# buffered.draw=0
+# two.phase.draw=0
+#
+# no auto save:
+#
+# save.on.timer=0
+
+# Just UTF-8
+
+code.page=65001
+output.code.page=65001
+
+position.maximize=1
+virtual.space=1
+
+textwrapper.margin=4
+textwrapper.length=68
+
+output.wrap=0
+
+# xml.auto.close.tags=1
+
+# ConTeXt: suffixes (really needed)
+
+file.patterns.tex=
+file.patterns.latex=
+file.patterns.context=*.tex;*.mkii;*.mkiv;*.mkvi;*.mkix;*.mkxi;
+
+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
+open.suffix.$(file.patterns.example)=.xml
+filter.example=eXaMpLe|$(file.patterns.example)|
+#~ lexer.$(file.patterns.example)=xml
+
+# Lua : patterns
+
+file.patterns.lua=*.lua;*.luc;*.cld;*.tuc;*.luj;*.lum;*.tma;*.lfg;*.luv;*.lui
+open.suffix.$(file.patterns.lua)=.lua
+filter.lua=Lua MkIV|$(file.patterns.lua)|
+#~ lexer.$(file.patterns.lua)=lua
+
+command.compile.$(file.patterns.lua)=mtxrun --script "$(FileNameExt)"
+command.go.$(file.patterns.lua)=mtxrun --script "$(FileNameExt)"
+
+# W: patterns
+#
+# file.patterns.w=*.c;*.w;*.cc;*.cpp;*.cxx;*.h;*.hh;*.hpp;*.hxx;
+
+# Test: patterns
+
+file.patterns.text=*.txt
+filter.text=Text |$(file.patterns.text)|
+# lexer.$(file.patterns.txt)=txt
+
+file.patterns.pdf=*.pdf
+filter.pdf=PDF |$(file.patterns.pdf)|
+
+# Commands: some scripts
+
+if PLAT_WIN
+ name.context.console=cmd
+ name.context.console=$(ComSpec)
+ name.context.gsview=gsview32.exe
+ name.context.acrobat=
+ name.flag.pdfopen=--autopdf
+ #~ name.flag.pdfopen=--autopdf=default
+
+if PLAT_GTK
+ name.context.console=rxvt
+ name.context.gsview=gv
+ name.context.acrobat=acroread
+ name.flag.pdfopen=--autopdf
+ name.flag.pdfopen=--autopdf=sumatra
+
+name.metafun.console=$(name.context.console)
+name.example.console=$(name.context.console)
+
+name.context.mtxrun=mtxrun --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.texshow=$(name.context.mtxrun) texshow
+name.context.purge=$(name.context.mtxrun) --context --purge --all
+name.context.showcase=$(name.context.mtxrun) --launch showcase.pdf
+
+name.example.xmlcheck=tidy -quiet -utf8 -xml -errors
+
+name.metafun.mptopdf=$(name.context.mtxrun) --script mptopdf
+
+# if needed one can set MTX_SERVER_ROOT to the root of the documentation
+
+if PLAT_WIN
+ name.context.wwwserver=cmd /c start /min "Context Documentation" $(name.context.mtxrun) --script server --auto
+
+if PLAT_GTK
+ name.context.wwwserver=$(name.context.mtxrun) --script server --start > ~/context-wwwserver.log &
+
+# Commands: help info, e:\websites\www.pragma-ade.com\showcase.pdf / todo: manuals
+
+command.help.$(file.patterns.context)=$(name.context.texshow) $(CurrentWord)
+command.help.$(file.patterns.context)=mtxrun --gethelp --url="http://localhost:31415/mtx-server-ctx-help.lua?command=%command%" --command="$(CurrentWord)"
+command.help.$(file.patterns.context)=mtxrun --gethelp --url="http://www.contextgarden.net/Command/%command%" --command="$(CurrentWord)"
+command.help.$(file.patterns.example)=
+command.help.$(file.patterns.metafun)=
+
+command.help.subsystem.$(file.patterns.context)=2
+
+# Commands: tools menu extensions
+
+context.distribution.writable=1
+
+# for the moment using subsystem 1 for perl jobs is better (otherwise dangling jobs)
+
+command.save.before=1
+
+# xml completion
+
+xml.auto.close.tags=1
+
+# extensions
+
+import context/scite-ctx
+
+# hard coded compile / build / go
+
+command.build.$(file.patterns.context)=$(name.context.check) $(FileNameExt)
+command.build.$(file.patterns.metafun)=
+command.build.$(file.patterns.example)=$(name.example.xmlcheck) $(FileNameExt)
+command.build.*.fo=$(name.example.xmlcheck) $(FileNameExt)
+
+command.compile.$(file.patterns.context)=$(name.context.run) $(FileNameExt)
+command.compile.$(file.patterns.metafun)=$(name.context.run) $(name.flag.pdfopen) $(FileNameExt)
+command.compile.$(file.patterns.example)=$(name.context.run) --forcexml $(FileNameExt)
+command.compile.*.fo=$(name.context.run) $(name.flag.pdfopen) --forcexml --use=foxet $(FileNameExt)
+
+command.compile.subsystem.$(file.patterns.context)=1
+command.compile.subsystem.$(file.patterns.metafun)=1
+command.compile.subsystem.$(file.patterns.example)=1
+command.compile.subsystem.*.fo=1
+
+if PLAT_WIN
+ command.go.$(file.patterns.context)=$(FileName).pdf
+ command.go.$(file.patterns.metafun)=$(FileName).pdf
+ command.go.$(file.patterns.example)=$(FileName).pdf
+ command.go.*.fo=$(FileName).pdf
+
+if PLAT_GTK
+ command.go.$(file.patterns.context)=$(name.context.acrobat) $(FileName).pdf
+ command.go.$(file.patterns.metafun)=$(name.context.acrobat) $(FileName).pdf
+ command.go.$(file.patterns.example)=$(name.context.acrobat) $(FileName).pdf
+ command.go.*.fo=$(name.context.acrobat) $(FileName).pdf
+
+command.go.subsystem.$(file.patterns.context)=2
+command.go.subsystem.$(file.patterns.metafun)=2
+command.go.subsystem.$(file.patterns.example)=2
+command.go.subsystem.*.fo=2
+
+# 0 : syntax checking
+
+command.name.0.$(file.patterns.context)=Check TeX File
+command.name.0.$(file.patterns.metafun)=
+command.name.0.$(file.patterns.example)=Check XML File
+
+command.0.$(file.patterns.context)=$(name.context.check) $(FileNameExt)
+command.0.$(file.patterns.metafun)=
+command.0.$(file.patterns.example)=$(name.example.xmlcheck) $(FileNameExt)
+
+# 1 : normal processing
+
+command.name.1.$(file.patterns.context)=Process TeX file
+command.name.1.$(file.patterns.metafun)=Process METAPOST File
+command.name.1.$(file.patterns.example)=Process XML 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.subsystem.$(file.patterns.context)=1
+command.1.subsystem.$(file.patterns.metafun)=1
+command.1.subsystem.$(file.patterns.example)=1
+
+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.exmaple)=$(name.context.runjit) $(FileNameExt) --xml
+command.groupundo.29.*=yes
+command.save.before.29.*=2
+command.shortcut.29.*=Alt+F12
+
+#~ command.name.30.*=Run with jit
+#~ command.subsystem.30.*=1
+#~ command.30.$(file.patterns.context)=$(name.context.runjit) $(FileNameExt)
+#~ command.30.$(file.patterns.metafun)=$(name.context.runjit) $(FileNameExt) --metapost
+#~ command.30.$(file.patterns.exmaple)=$(name.context.runjit) $(FileNameExt) --xml
+#~ command.groupundo.30.*=yes
+#~ command.save.before.30.*=2
+#~ command.shortcut.30.*=Alt+F7
+
+# 2 : pdf viewing
+
+command.name.2.$(file.patterns.context)=View PDF File with GhostScript
+command.name.2.$(file.patterns.metafun)=View PDF File with GhostScript
+command.name.2.$(file.patterns.example)=View PDF File with GhostScript
+
+command.2.$(file.patterns.context)=$(name.context.gsview) $(FileDir)/$(FileName).pdf
+command.2.$(file.patterns.metafun)=$(name.context.gsview) $(FileDir)/$(FileName).pdf
+command.2.$(file.patterns.example)=$(name.context.gsview) $(FileDir)/$(FileName).pdf
+
+command.subsystem.2.$(file.patterns.context)=2
+command.subsystem.2.$(file.patterns.metafun)=2
+command.subsystem.2.$(file.patterns.example)=2
+
+# 3 : clean up
+
+command.name.3.$(file.patterns.context)=Purge Files
+command.name.3.$(file.patterns.metafun)=Purge Files
+command.name.3.$(file.patterns.example)=Purge Files
+
+command.3.$(file.patterns.context)=$(name.context.purge)
+command.3.$(file.patterns.metafun)=$(name.context.purge)
+command.3.$(file.patterns.example)=$(name.context.purge)
+
+# 4 : documentation
+
+command.4.$(file.patterns.context)=$(name.context.showcase)
+command.4.$(file.patterns.metafun)=$(name.context.showcase)
+command.4.$(file.patterns.example)=$(name.context.showcase)
+
+command.name.4.$(file.patterns.context)=Show Documentation
+command.name.4.$(file.patterns.metafun)=Show Documentation
+command.name.4.$(file.patterns.example)=Show Documentation
+
+# 6 : console
+
+command.name.6=Start Console
+command.name.6.$(file.patterns.context)=Start Console
+command.name.6.$(file.patterns.metafun)=Start Console
+command.name.6.$(file.patterns.example)=Start Console
+
+command.6=$(name.context.console)
+command.6.$(file.patterns.context)=$(name.context.console)
+command.6.$(file.patterns.metafun)=$(name.context.console)
+command.6.$(file.patterns.example)=$(name.context.console)
+
+# 7 : listings
+
+command.name.7=Generate Listing
+command.name.7.$(file.patterns.context)=Generate Listing
+command.name.7.$(file.patterns.metafun)=Generate Listing
+command.name.7.$(file.patterns.example)=Generate Listing
+
+command.7=$(name.context.run) --extra=listing --pretty --result=$(FileName) $(FileNameExt)
+command.7.$(file.patterns.context)=$(name.context.run) --extra=listing --pretty --result=$(FileName) $(FileNameExt)
+command.7.$(file.patterns.metafun)=$(name.context.run) --extra=listing --pretty --result=$(FileName) $(FileNameExt)
+command.7.$(file.patterns.example)=$(name.context.run) --extra=listing --pretty --result=$(FileName) $(FileNameExt)
+
+command.7.subsystem=1
+command.7.subsystem.$(file.patterns.context)=1
+command.7.subsystem.$(file.patterns.metafun)=1
+command.7.subsystem.$(file.patterns.example)=1
+
+# 10: arranging
+
+command.name.10.$(file.patterns.context)=Process and Arrange
+command.name.10.$(file.patterns.metafun)=Process and Arrange
+command.name.10.$(file.patterns.example)=Process and Arrange
+command.10.$(file.patterns.context)=$(name.context.run) --arrange $(FileNameExt)
+command.10.$(file.patterns.metafun)=$(name.context.run) --mptex $(FileNameExt)
+command.10.$(file.patterns.example)=$(name.context.run) --arrange --xml $(FileNameExt)
+command.10.subsystem.$(file.patterns.context)=1
+command.10.subsystem.$(file.patterns.metafun)=1
+command.10.subsystem.$(file.patterns.example)=1
+
+# 11: make
+
+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
+
+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.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
+
+command.name.15=Documentation Server
+command.name.15.$(file.patterns.context)=Documentation Service
+command.name.15.$(file.patterns.metafun)=Documentation Service
+command.name.15.$(file.patterns.example)=Documentation Service
+
+command.15=$(name.context.wwwserver)
+command.15.$(file.patterns.context)=$(name.context.wwwserver)
+command.15.$(file.patterns.metafun)=$(name.context.wwwserver)
+command.15.$(file.patterns.example)=$(name.context.wwwserver)
+
+# Editor: syntax highlighting
+
+view.indentation.guides=1
+highlight.indentation.guides=1
+
+# Editor: keys
+
+user.shortcuts=\
+F12|IDM_BUILD|\
+Ctrl+F12|IDM_COMPILE|\
+Shift+F12|IDM_GO|\
+
+os.x.home.end.keys=0
+
+# Editor: fonts
+
+if PLAT_WIN
+ font.monospace=font:Dejavu Sans Mono,size:14
+ font.errorfont=font:Dejavu Sans Mono,size:8
+
+if PLAT_GTK
+ font.monospace=font:!Dejavu Sans Mono,size:14
+ font.errorfont=font:!Dejavu Sans Mono,size:8
+
+if PLAT_MAC
+ font.monospace=font:Dejavu Sans Mono,size:14
+ font.errorfont=font:Dejavu Sans Mono,size:8
+
+font.base=$(font.monospace)
+font.comment=$(font.monospace)
+font.text=$(font.monospace)
+font.text.comment=$(font.monospace)
+font.embedded.base=$(font.monospace)
+font.embedded.comment=$(font.monospace)
+font.vbs=$(font.monospace)
+
+# colors and styles
+
+colors.red=#7F0000
+colors.green=#007F00
+colors.blue=#00007F
+colors.cyan=#007F7F
+colors.magenta=#7F007F
+colors.yellow=#7F7F00
+
+colors.white=#FFFFFF
+colors.light= #CFCFCF
+colors.grey= #808080
+colors.dark= #4F4F4F
+colors.black= #000000
+colors.selection=#F7F7F7
+colors.logpanel=#E7E7E7
+colors.textpanel=#CFCFCF
+colors.linepanel=#A7A7A7
+colors.tippanel=#444444
+colors.right=#0000FF
+colors.wrong=#FF0000
+
+colors.teal=$(colors.cyan)
+colors.purple=$(colors.magenta)
+
+styles.default=fore:$(colors.black),back:$(colors.textpanel),$(font.base)
+styles.nothing=
+
+styles.number=fore:$(colors.cyan)
+styles.comment=fore:$(colors.yellow)
+styles.string=fore:$(colors.magenta)
+styles.keyword=fore:$(colors.blue),bold
+
+styles.char=fore:$(colors.magenta)
+styles.class=fore:$(colors.black),bold
+styles.constant=fore:$(colors.cyan),bold
+styles.definition=fore:$(colors.black),bold
+styles.error=fore:$(colors.red)
+styles.function=fore:$(colors.black),bold
+styles.operator=fore:$(colors.blue)
+styles.preproc=fore:$(colors.yellow),bold
+styles.tag=fore:$(colors.cyan)
+styles.type=fore:$(colors.blue)
+styles.variable=fore:$(colors.black)
+styles.identifier=$(styles.nothing)
+
+styles.linenumber=back:$(colors.linepanel)
+styles.bracelight=fore:$(colors.orange),bold
+styles.bracebad=fore:$(colors.orange),bold
+styles.indentguide=fore:$(colors.linepanel),back:$(colors.white)
+styles.calltip=fore:$(colors.white),back:$(colors.tippanel)
+styles.controlchar=$(styles.nothing)
+
+# end of colors and styles
+
+# 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=#000000
+
+# Editor: fast switching between files
+
+tabbar.visible=1
+tabbar.hide.one=0
+tabbar.multiline=1
+
+buffers=100
+load.on.activate=1
+check.if.already.open=1
+tabbar.multiline=1
+
+# Editor: handy anyway
+
+line.margin.visible=1
+#~ line.numbers=6
+line.margin.width=3+
+title.full.path=1
+strip.trailing.spaces=1
+save.session=1
+save.recent=1
+open.dialog.in.file.directory=1
+
+# Editor: tabbing
+
+tabsize=4
+indent.size=4
+use.tabs=0
+indent.automatic=1
+indent.opening=0
+indent.closing=0
+
+# Editor: misc
+
+# edge.mode=0
+# edge.column=80
+
+error.marker.fore=#FFFFFF
+error.marker.back=#007F7F
+
+# Editor: status
+
+statusbar.visible=1
+statusbar.number=1
+statusbar.text.1=$(FileNameExt) | $(FileDate) $(FileTime) | line $(LineNumber) column $(ColumnNumber) | mode $(OverType) | eol $(EOLMode) | $(FileDate) $(FileTime)
+
+# Editor: searching
+
+find.files=
+find.what=
+
+find.replace.regexp.posix=1
+find.files=*.tex *.xml *.mp
+
+if PLAT_WIN
+ find.command=fgrep -n $(find.what) $(find.files)
+
+# todo:
+
+source.files=$(file.patterns.context);$(file.patterns.metafun);$(file.patterns.example);*.pl;*.rb;*.lua
+
+# Editor: printing
+
+if PLAT_WIN
+ print.colour.mode=1
+ print.margins=750,750,750,750
+ print.header.format=$(FileNameExt) Printed on $(CurrentDate), $(CurrentTime) Page $(CurrentPage)
+ print.footer.format=$(FilePath) File date: $(FileDate) File time: $(FileTime)
+ print.header.style=font:Dejavu Sans Mono,size:10
+ print.footer.style=font:Dejavu Sans Mono,size:10
+
+# Editor: processing
+
+clear.before.execute=1
+wrap.output=0
+
+if PLAT_WIN
+ eol.mode=CRLF
+
+ensure.final.line.end=1
+ensure.consistent.line.ends=1
+
+# Editor: file type
+
+default.file.ext=.tex
+
+# Editor: auto completion
+
+autocompleteword.automatic=1
+autocomplete.choose.single=0
+
+# api.*.tex=t:\sources\cont-en-scite.api
+
+# Logging
+
+style.errorlist.32=$(font.errorfont),back:$(colors.logpanel)
+
+# Default
+
+style.errorlist.0=fore:$(colors.black)
+style.errorlist.1=fore:$(colors.red)
+style.errorlist.2=fore:$(colors.red)
+style.errorlist.3=fore:$(colors.red)
+style.errorlist.4=fore:$(colors.green)
+style.errorlist.5=fore:$(colors.red)
+style.errorlist.6=fore:$(colors.red)
+style.errorlist.7=fore:$(colors.red)
+style.errorlist.8=fore:$(colors.red)
+style.errorlist.9=fore:$(colors.red)
+style.errorlist.10=fore:$(colors.green)
+style.errorlist.11=fore:$(colors.blue)
+style.errorlist.12=fore:$(colors.cyan)
+style.errorlist.13=fore:$(colors.red)
+style.errorlist.14=fore:$(colors.red)
+style.errorlist.15=fore:$(colors.red)
+style.errorlist.16=fore:$(colors.red)
+
+# Metapost: patterns
+
+file.patterns.metafun=*.mp;*.mpx;*.mpy;*.mpii;*.mpiv
+filter.metafun=MetaFun|$(file.patterns.metafun)|
+#~ lexer.$(file.patterns.metafun)=metapost
+
+command.compile.$(file.patterns.metafun)=
+command.build.$(file.patterns.metafun)=$(name.context.mtxrun) --script context $(name.flag.pdfopen) $(FileNameExt)
+command.go.$(file.patterns.metafun)=gv $(FileName).1
+
+command.0.$(file.patterns.metafun)=
+command.1.$(file.patterns.metafun)=
+command.2.$(file.patterns.metafun)=
+command.3.$(file.patterns.metafun)=
+command.4.$(file.patterns.metafun)=
+command.5.$(file.patterns.metafun)=
+command.6.$(file.patterns.metafun)=
+command.7.$(file.patterns.metafun)=
+command.8.$(file.patterns.metafun)=
+command.9.$(file.patterns.metafun)=
+
+# Shared highlighting
+
+styles.context.default=$(styles.nothing)
+styles.context.number=$(styles.number)
+styles.context.comment=$(styles.comment)
+styles.context.keyword=$(styles.keyword)
+styles.context.string=$(styles.string)
+
+styles.context.command=fore:$(colors.green),bold
+styles.context.preamble=$(styles.comment)
+styles.context.embedded=fore:$(colors.black),bold
+styles.context.grouping=fore:$(colors.red)
+styles.context.primitive=$(styles.keyword)
+styles.context.plain=fore:$(colors.dark),bold
+styles.context.user=fore:$(colors.green)
+styles.context.data=$(styles.constant)
+styles.context.special=fore:$(colors.blue)
+styles.context.extra=fore:$(colors.yellow)
+styles.context.quote=fore:$(colors.blue),bold
+
+# Metapost highlighting
+
+style.metapost.0=$(styles.context.default)
+style.metapost.1=$(styles.context.special)
+style.metapost.2=$(styles.context.grouping)
+style.metapost.3=$(styles.context.comment)
+style.metapost.4=$(styles.context.keyword)
+style.metapost.5=$(styles.context.default)
+style.metapost.6=$(styles.context.plain)
+style.metapost.34=$(styles.bracelight)
+style.metapost.35=$(styles.bracebad)
+
+# TeX highlighting
+
+style.tex.0=$(styles.context.default)
+style.tex.1=$(styles.context.special)
+style.tex.2=$(styles.context.grouping)
+style.tex.3=$(styles.context.comment)
+style.tex.4=$(styles.context.user)
+style.tex.34=$(styles.bracelight)
+style.tex.35=$(styles.bracebad)
+
+# style.tex.* : external styling happens elsewhere
+# style.mps.* : external styling happens elsewhere
+# style.cls.* : external styling happens elsewhere
+
+# Lua highlighting:
+#
+# might change as we change the cld lexer
+
+comment.block.lua=--
+comment.block.at.line.start.lua=1
+
+# braces.lua.style=10
+
+style.lua.32=$(styles.context.default)
+style.lua.0=$(styles.context.default)
+style.lua.1=$(styles.context.comment)
+style.lua.2=$(styles.context.comment)
+style.lua.3=$(styles.context.comment)
+style.lua.4=$(styles.context.number)
+style.lua.5=$(styles.context.keyword)
+style.lua.6=$(styles.context.string)
+style.lua.7=$(styles.context.string)
+style.lua.8=$(styles.context.comment)
+style.lua.9=$(styles.context.default)
+style.lua.10=$(styles.context.special)
+style.lua.11=$(styles.context.default)
+style.lua.12=$(styles.context.default)
+style.lua.13=$(styles.context.default)
+style.lua.14=$(styles.context.default)
+style.lua.15=$(styles.context.default)
+style.lua.16=$(styles.context.default)
+style.lua.17=$(styles.context.default)
+style.lua.18=$(styles.context.default)
+style.lua.19=$(styles.context.default)
+style.lua.20=$(styles.context.default)
+
+style.context.34=$(styles.bracelight)
+style.context.35=$(styles.bracebad)
+
+# folding
+
+fold=1
+fold.symbols=3
+fold.margin.colour=#CCCCCC
+
+# testing
+
+caret.width = 3
+selection.rectangular.switch.mouse = 1
+
+#~ cache.layout=
+
+find.command=mtxrun --script grep "$(find.what)" "$(find.files)"
diff --git a/context/data/scite/context/scite-ctx-context.properties b/context/data/scite/context/scite-ctx-context.properties
new file mode 100644
index 000000000..a1d5800e6
--- /dev/null
+++ b/context/data/scite/context/scite-ctx-context.properties
@@ -0,0 +1,49 @@
+command.name.25.$(file.patterns.context)=Whatever
+command.25.$(file.patterns.context)=insert_template $(ctx.template.list.context)
+
+ctx.template.list.context=\
+ itemize=structure.itemize.context|\
+ tabulate=structure.tabulate.context|\
+ natural TABLE=structure.TABLE.context|\
+ use MP graphic=graphics.usemp.context|\
+ reuse MP graphic=graphics.reusemp.context|\
+ typeface definition=fonts.typeface.context
+
+ctx.template.structure.itemize.context=\
+\startitemize\n\
+\item ?\n\
+\item ?\n\
+\item ?\n\
+\stopitemize\n
+
+ctx.template.structure.tabulate.context=\
+\starttabulate[|l|p|]\n\
+\NC ? \NC \NC \NR\n\
+\NC ? \NC \NC \NR\n\
+\NC ? \NC \NC \NR\n\
+\stoptabulate\n
+
+ctx.template.structure.TABLE.context=\
+\bTABLE\n\
+\bTR \bTD ? \eTD \bTD \eTD \eTR\n\
+\bTR \bTD ? \eTD \bTD \eTD \eTR\n\
+\bTR \bTD ? \eTD \bTD \eTD \eTR\n\
+\eTABLE\n
+
+ctx.template.graphics.usemp.context=\
+\defineoverlay[?][\useMPgraphic{}]\n\n\
+\startuseMPgraphic{}\n\n\
+\stopuseMPgraphic\n
+
+ctx.template.graphics.reusemp.context=\
+\defineoverlay[?][\reuseMPgraphic{}]\n\n\
+\startreusableMPgraphic{}\n\n\
+\stopreusableMPgraphic\n
+
+ctx.template.fonts.typeface.context=\
+\definetypeface[mainface][rm][serif][?][default][encoding=\defaultencoding]\n\
+\definetypeface[mainface][ss][sans] [?][default][encoding=\defaultencoding]\n\
+\definetypeface[mainface][tt][mono] [?][default][encoding=\defaultencoding]\n\
+\definetypeface[mainface][mm][math] [?][default][encoding=\defaultencoding]\n\
+\n\
+\setupbodyfont[mainface,10pt]\n
diff --git a/context/data/scite/context/scite-ctx-example.properties b/context/data/scite/context/scite-ctx-example.properties
new file mode 100644
index 000000000..78b2f2859
--- /dev/null
+++ b/context/data/scite/context/scite-ctx-example.properties
@@ -0,0 +1,23 @@
+command.25.$(file.patterns.example)=insert_template $(ctx.template.list.example)
+
+ctx.template.list.example=\
+ bold=font.bold.example|\
+ emphasized=font.emphasized.example|\
+ |\
+ inline math=math.inline.example|\
+ display math=math.display.example|\
+ |\
+ itemize=structure.itemize.example
+
+ctx.template.font.bold.example=<b>?</b>
+ctx.template.font.emphasized.example=<em>?</em>
+
+ctx.template.math.inline.example=<m>?</m>
+ctx.template.math.display.example=<math>?</math>
+
+ctx.template.structure.itemize.example=\
+<itemize>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+</itemize>\n
diff --git a/context/data/scite/context/scite-ctx.lua b/context/data/scite/context/scite-ctx.lua
new file mode 100644
index 000000000..a529b3ced
--- /dev/null
+++ b/context/data/scite/context/scite-ctx.lua
@@ -0,0 +1,1398 @@
+-- version : 1.0.0 - 07/2005 (2008: lua 5.1)
+-- author : Hans Hagen - PRAGMA ADE - www.pragma-ade.com
+-- copyright : public domain or whatever suits
+-- remark : part of the context distribution, my first lua code
+
+-- todo: name space for local functions
+-- todo: the spell checking code is for the built-in lexer, the lpeg one uses its own
+
+-- loading: scite-ctx.properties
+
+-- # environment variable
+-- #
+-- # CTXSPELLPATH=t:/spell
+-- #
+-- # auto language detection
+-- #
+-- # % version =1.0 language=uk
+-- # <?xml version='1.0' language='uk' ?>
+
+-- ext.lua.startup.script=$(SciteDefaultHome)/scite-ctx.lua
+--
+-- # extension.$(file.patterns.context)=scite-ctx.lua
+-- # extension.$(file.patterns.example)=scite-ctx.lua
+--
+-- # ext.lua.reset=1
+-- # ext.lua.auto.reload=1
+-- # ext.lua.startup.script=t:/lua/scite-ctx.lua
+--
+-- ctx.menulist.default=\
+-- wrap=wrap_text|\
+-- unwrap=unwrap_text|\
+-- sort=sort_text|\
+-- document=document_text|\
+-- quote=quote_text|\
+-- compound=compound_text|\
+-- check=check_text\|
+-- strip=toggle_strip
+--
+-- ctx.spellcheck.language=auto
+-- ctx.spellcheck.wordsize=4
+-- ctx.spellcheck.wordpath=ENV(CTXSPELLPATH)
+--
+-- ctx.spellcheck.wordfile.all=spell-uk.txt,spell-nl.txt
+--
+-- ctx.spellcheck.wordfile.uk=spell-uk.txt
+-- ctx.spellcheck.wordfile.nl=spell-nl.txt
+-- ctx.spellcheck.wordsize.uk=4
+-- ctx.spellcheck.wordsize.nl=4
+--
+-- command.name.21.*=CTX Action List
+-- command.subsystem.21.*=3
+-- command.21.*=show_menu $(ctx.menulist.default)
+-- command.groupundo.21.*=yes
+-- command.shortcut.21.*=Shift+F11
+--
+-- command.name.22.*=CTX Check Text
+-- command.subsystem.22.*=3
+-- command.22.*=check_text
+-- command.groupundo.22.*=yes
+-- command.shortcut.22.*=Ctrl+L
+--
+-- command.name.23.*=CTX Wrap Text
+-- command.subsystem.23.*=3
+-- command.23.*=wrap_text
+-- command.groupundo.23.*=yes
+-- command.shortcut.23.*=Ctrl+M
+--
+-- # command.21.*=check_text
+-- # command.21.*=dofile e:\context\lua\scite-ctx.lua
+
+-- generic functions
+
+props = props or { } -- setmetatable(props,{ __index = function(k,v) props[k] = "unknown" return "unknown" end } )
+
+local byte, lower, upper, gsub, sub, find, rep, match, gmatch, format = string.byte, string.lower, string.upper, string.gsub, string.sub, string.find, string.rep, string.match, string.gmatch, string.format
+local sort, concat = table.sort, table.concat
+
+local crlf = "\n"
+
+function traceln(str)
+ trace(str .. crlf)
+ io.flush()
+end
+
+local function grab(str,delimiter)
+ local list = { }
+ for snippet in gmatch(str,delimiter) do
+ list[#list+1] = snippet
+ end
+ return list
+end
+
+local function expand(str)
+ return (gsub(str,"ENV%((%w+)%)", os.envvar))
+end
+
+local function strip(str)
+ return (gsub(str,"^%s*(.-)%s*$", "%1"))
+end
+
+local function alphasort(list,i)
+ if i and i > 0 then
+ local function alphacmp(a,b)
+ return lower(gsub(sub(a,i),'0',' ')) < lower(gsub(sub(b,i),'0',' '))
+ end
+ sort(list,alphacmp)
+ else
+ local function alphacmp(a,b)
+ return lower(a) < lower(b)
+ end
+ sort(list,alphacmp)
+ end
+end
+
+function io.exists(filename)
+ local ok, result, message = pcall(io.open,filename)
+ if result then
+ io.close(result)
+ return true
+ else
+ return false
+ end
+end
+
+function os.envvar(str)
+ local s = os.getenv(str)
+ if s ~= '' then
+ return s
+ end
+ s = os.getenv(upper(str))
+ if s ~= '' then
+ return s
+ end
+ s = os.getenv(lower(str))
+ if s ~= '' then
+ return s
+ end
+end
+
+-- support functions, maybe editor namespace
+
+-- function column_of_position(position)
+-- local line = editor:LineFromPosition(position)
+-- local oldposition = editor.CurrentPos
+-- local column = 0
+-- editor:GotoPos(position)
+-- while editor.CurrentPos ~= 0 and line == editor:LineFromPosition(editor.CurrentPos) do
+-- editor:CharLeft()
+-- column = column + 1
+-- end
+-- editor:GotoPos(oldposition)
+-- if line > 0 then
+-- return column -1
+-- else
+-- return column
+-- end
+-- end
+
+-- function line_of_position(position)
+-- return editor:LineFromPosition(position)
+-- end
+
+function extend_to_start()
+ local selectionstart = editor.SelectionStart
+ local selectionend = editor.SelectionEnd
+ local line = editor:LineFromPosition(selectionstart)
+ if line > 0 then
+ while line == editor:LineFromPosition(selectionstart-1) do
+ selectionstart = selectionstart - 1
+ editor:SetSel(selectionstart,selectionend)
+ end
+ else
+ selectionstart = 0
+ end
+ editor:SetSel(selectionstart,selectionend)
+ return selectionstart
+end
+
+function extend_to_end() -- editor:LineEndExtend() does not work
+ local selectionstart = editor.SelectionStart
+ local selectionend = editor.SelectionEnd
+ local line = editor:LineFromPosition(selectionend)
+ while line == editor:LineFromPosition(selectionend+1) do
+ selectionend = selectionend + 1
+ editor:SetSel(selectionstart,selectionend)
+ if selectionend ~= editor.SelectionEnd then
+ break -- no progress
+ end
+ end
+ editor:SetSel(selectionstart,selectionend)
+ 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'
+ else
+ return 'unknown'
+ 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
+
+-- banner
+
+do
+
+ print("loading scite-ctx.lua definition file\n")
+ print("- see scite-ctx.properties for configuring info\n")
+ print("- ctx.spellcheck.wordpath set to " .. props['ctx.spellcheck.wordpath'])
+ if find(lower(props['ctx.spellcheck.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(props['ctx.spellcheck.wordpath']))
+ end
+ print("\n- ctx.wraptext.length is set to " .. props['ctx.wraptext.length'])
+ if props['ctx.helpinfo'] ~= '' then
+ print("\n- key bindings:\n")
+ print((gsub(strip(props['ctx.helpinfo']),"%s*|%s*","\n")))
+ end
+ print("\n- recognized first lines:\n")
+ print("xml <?xml version='1.0' language='nl'")
+ print("tex % language=nl")
+
+end
+
+-- text functions
+
+-- written while listening to Talk Talk
+
+local magicstring = rep("<ctx-crlf/>", 2)
+
+function wrap_text()
+
+ -- We always go to the end of a line, so in fact some of
+ -- the variables set next are not needed.
+
+ local length = props["ctx.wraptext.length"]
+
+ if length == '' then length = 80 else length = tonumber(length) end
+
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+
+ if startposition == endposition then return end
+
+ editor:LineEndExtend()
+
+ startposition = editor.SelectionStart
+ endposition = editor.SelectionEnd
+
+ -- local startline = line_of_position(startposition)
+ -- local endline = line_of_position(endposition)
+ -- local startcolumn = column_of_position(startposition)
+ -- local endcolumn = column_of_position(endposition)
+ --
+ -- editor:SetSel(startposition,endposition)
+
+ local startline = props['SelectionStartLine']
+ local endline = props['SelectionEndLine']
+ local startcolumn = props['SelectionStartColumn'] - 1
+ local endcolumn = props['SelectionEndColumn'] - 1
+
+ local replacement = { }
+ local templine = ''
+ local indentation = rep(' ',startcolumn)
+ local selection = editor:GetSelText()
+
+ 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 = ''
+ elseif #templine + #snippet > length then
+ replacement[#replacement+1] = templine
+ templine = indentation .. snippet
+ elseif #templine == 0 then
+ templine = indentation .. snippet
+ else
+ templine = templine .. ' ' .. snippet
+ end
+ end
+
+ replacement[#replacement+1] = templine
+ replacement[1] = gsub(replacement[1],"^%s+",'')
+
+ if endcolumn == 0 then
+ replacement[#replacement+1] = ""
+ end
+
+ editor:ReplaceSel(concat(replacement,"\n"))
+
+end
+
+function unwrap_text()
+
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+
+ if startposition == endposition then return end
+
+ editor:HomeExtend()
+ editor:LineEndExtend()
+
+ startposition = editor.SelectionStart
+ endposition = editor.SelectionEnd
+
+ local magicstring = rep("<multiplelines/>", 2)
+ local selection = gsub(editor:GetSelText(),"[\n\r][\n\r]+", ' ' .. magicstring .. ' ')
+ local replacement = ''
+
+ for snippet in gmatch(selection,"%S+") do
+ if snippet == magicstring then
+ replacement = replacement .. "\n"
+ else
+ replacement = replacement .. snippet .. "\n"
+ end
+ end
+
+ if endcolumn == 0 then replacement = replacement .. "\n" end
+
+ editor:ReplaceSel(replacement)
+
+end
+
+function sort_text()
+
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+
+ if startposition == endposition then return end
+
+ -- local startcolumn = column_of_position(startposition)
+ -- local endcolumn = column_of_position(endposition)
+ --
+ -- editor:SetSel(startposition,endposition)
+
+ local startline = props['SelectionStartLine']
+ local endline = props['SelectionEndLine']
+ local startcolumn = props['SelectionStartColumn'] - 1
+ local endcolumn = props['SelectionEndColumn'] - 1
+
+
+ startposition = extend_to_start()
+ endposition = extend_to_end()
+
+ local selection = gsub(editor:GetSelText(), "%s*$", '')
+ local list = grab(selection,"[^\n\r]+")
+ alphasort(list, startcolumn)
+ local replacement = concat(list, "\n")
+
+ editor:GotoPos(startposition)
+ editor:SetSel(startposition,endposition)
+
+ if endcolumn == 0 then replacement = replacement .. "\n" end
+
+ editor:ReplaceSel(replacement)
+
+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
+
+ local selection = gsub(editor:GetSelText(), "%<%!%-%-.-%-%-%>", '')
+
+ editor:GotoPos(startposition)
+ editor:SetSel(startposition,endposition)
+
+ editor:ReplaceSel(selection)
+ editor:GotoPos(startposition)
+
+end
+
+function document_text()
+
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+
+ if startposition == endposition then return end
+
+ startposition = extend_to_start()
+ endposition = extend_to_end()
+
+ editor:SetSel(startposition,endposition)
+
+ local filetype = getfiletype()
+
+ 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
+
+ editor:ReplaceSel(gsub(replacement,"[\n\r]$",''))
+
+end
+
+function quote_text()
+
+ local filetype, leftquotation, rightquotation = getfiletype(), '', ''
+
+ if filetype == 'xml' then
+ leftquotation, rightquotation = "<quotation>", "</quotation>"
+ leftquote, rightquote = "<quotation>", "</quote>"
+ else
+ leftquotation, rightquotation = "\\quotation {", "}"
+ leftquote, rightquote = "\\quote {", "}"
+ 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)
+
+end
+
+function compound_text()
+
+ local filetype = getfiletype()
+
+ 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 on my good old ATH-7
+
+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 kpsewhich_file(filename,filetype,progname)
+-- local progflag, typeflag = '', ''
+-- local tempname = os.tmpname()
+-- if progname then
+-- progflag = " --progname=" .. progname .. " "
+-- end
+-- if filetype then
+-- typeflag = " --format=" .. filetype .. " "
+-- end
+-- local command = "kpsewhich" .. progflag .. typeflag .. " " .. filename .. " > " .. tempname
+-- os.execute(command)
+-- for line in io.lines(tempname) do
+-- return gsub(line, "\s*$", '')
+-- end
+-- end
+
+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
+ traceln("auto document language " .. "'" .. 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
+ traceln("auto document language " .. "'" .. 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
+ traceln("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
+ traceln("unknown file '" .. filename .."'")
+ end
+ end
+ traceln(worddone .. " words loaded")
+ end
+
+ reset_text()
+
+ if worddone == 0 then
+ traceln("no (valid) language or wordfile specified")
+ else
+ traceln("start checking")
+ if wordskip ~= '' then
+ traceln("ignoring " .. 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
+ traceln(i .. " words checked, " .. (i-j) .. " errors")
+ end
+
+end
+
+function reset_text()
+ editor:StartStyling(0,INDICS_MASK)
+ editor:SetStyling(editor.TextLength,INDIC_PLAIN)
+end
+
+function add_text()
+
+ local startposition = editor.SelectionStart
+ local endposition = editor.SelectionEnd
+
+ if startposition == endposition then return end
+
+ 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
+ traceln(format("%4i : %s",n,m))
+ end
+ end
+ if n > 0 then
+ traceln("")
+ traceln(format("sum : %s",sum))
+ else
+ traceln("no numbers selected")
+ end
+
+end
+
+-- menu
+
+local menuactions = {}
+local menufunctions = {}
+
+function UserListShow(menutrigger, menulist)
+ local menuentries = {}
+ local list = grab(menulist,"[^%|]+")
+ menuactions = {}
+ for i=1, #list do
+ if list[i] ~= '' then
+ for key, val in gmatch(list[i],"%s*(.+)=(.+)%s*") do
+ menuentries[#menuentries+1] = key
+ menuactions[key] = val
+ end
+ end
+ end
+ local menustring = concat(menuentries,'|')
+ if menustring == "" then
+ traceln("There are no templates defined for this file type.")
+ else
+ editor.AutoCSeparator = byte('|')
+ editor:UserListShow(menutrigger,menustring)
+ editor.AutoCSeparator = byte(' ')
+ end
+end
+
+function OnUserListSelection(trigger,choice)
+ if menufunctions[trigger] and menuactions[choice] then
+ return menufunctions[trigger](menuactions[choice])
+ else
+ return false
+ end
+end
+
+-- main menu
+
+local menutrigger = 12
+
+function show_menu(menulist)
+ UserListShow(menutrigger, menulist)
+end
+
+function process_menu(action)
+ if not find(action,"%(%)$") then
+ assert(loadstring(action .. "()"))()
+ else
+ assert(loadstring(action))()
+ end
+end
+
+menufunctions[12] = process_menu
+
+-- templates
+
+local templatetrigger = 13
+
+local ctx_template_paths = { "./ctx-templates", "../ctx-templates", "../../ctx-templates" }
+local ctx_auto_templates = false
+local ctx_template_list = ""
+
+local ctx_path_list = {}
+local ctx_path_done = {}
+local ctx_path_name = {}
+
+function ctx_list_loaded(path)
+ return ctx_path_list[path] and #ctx_path_list[path] > 0
+end
+
+function insert_template(templatelist)
+ if props["ctx.template.scan"] == "yes" then
+ local path = props["FileDir"]
+ local rescan = props["ctx.template.rescan"] == "yes"
+ local suffix = props["ctx.template.suffix." .. props["FileExt"]] -- alas, no suffix expansion here
+ local current = path .. "+" .. props["FileExt"]
+ if rescan then
+ print("re-scanning enabled")
+ end
+ ctx_template_list = ""
+ if not ctx_path_done[path] or rescan then
+ local pattern = "*.*"
+ for i, pathname in ipairs(ctx_template_paths) do
+ print("scanning " .. gsub(path,"\\","/") .. "/" .. pathname)
+ ctx_path_name[path] = pathname
+ ctx_path_list[path] = get_dir_list(pathname .. "/" .. pattern)
+ if ctx_list_loaded(path) then
+ print("finished locating template files")
+ break
+ end
+ end
+ if ctx_list_loaded(path) then
+ print(#ctx_path_list[path] .. " template files found")
+ else
+ print("no template files found")
+ end
+ end
+ if ctx_list_loaded(path) then
+ ctx_template_list = ""
+ local pattern = "%." .. suffix .. "$"
+ local n = 0
+ for j, filename in ipairs(ctx_path_list[path]) do
+ if find(filename,pattern) then
+ n = n + 1
+ local menuname = gsub(filename,"%..-$","")
+ if ctx_template_list ~= "" then
+ ctx_template_list = ctx_template_list .. "|"
+ end
+ ctx_template_list = ctx_template_list .. menuname .. "=" .. ctx_path_name[path] .. "/" .. filename
+ end
+ end
+ if not ctx_path_done[path] then
+ print(n .. " suitable template files found")
+ end
+ end
+ ctx_path_done[path] = true
+ if ctx_template_list == "" then
+ ctx_auto_templates = false
+ else
+ ctx_auto_templates = true
+ templatelist = ctx_template_list
+ end
+ else
+ ctx_auto_templates = false
+ end
+ if templatelist ~= "" then
+ UserListShow(templatetrigger, templatelist)
+ end
+end
+
+
+-- ctx.template.[whatever].[filetype]
+-- ctx.template.[whatever].data.[filetype]
+-- ctx.template.[whatever].file.[filetype]
+-- ctx.template.[whatever].list.[filetype]
+
+function process_template_one(action)
+ local text = nil
+ if ctx_auto_templates then
+ local f = io.open(action,"r")
+ if f then
+ text = gsub(f:read("*all"),"\n$","")
+ f:close()
+ else
+ print("unable to auto load template file " .. text)
+ text = nil
+ end
+ end
+ if not text or text == "" then
+ text = props["ctx.template." .. action .. ".file"]
+ if not text or text == "" then
+ text = props["ctx.template." .. action .. ".data"]
+ if not text or text == "" then
+ text = props["ctx.template." .. action]
+ end
+ else
+ local f = io.open(text,"r")
+ if f then
+ text = gsub(f:read("*all"),"\n$","")
+ f:close()
+ else
+ print("unable to load template file " .. text)
+ text = nil
+ end
+ end
+ end
+ if text then
+ text = gsub(text,"\\n","\n")
+ local pos = find(text,"%?")
+ text = gsub(text,"%?","")
+ editor:insert(editor.CurrentPos,text)
+ if pos then
+ editor.CurrentPos = editor.CurrentPos + pos - 1
+ editor.SelectionStart = editor.CurrentPos
+ editor.SelectionEnd = editor.CurrentPos
+ editor:GotoPos(editor.CurrentPos)
+ end
+ end
+end
+
+menufunctions[13] = process_template_one
+menufunctions[14] = process_template_two
+
+-- 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
+
+function open_log()
+ scite.Open(props['FileName'] .. ".log")
+end
+
+if not lpeg then
+
+ local okay, root = pcall(function() return require "lpeg" end)
+
+ if okay then
+ lpeg = root
+ else
+ trace("\nwarning: lpeg not loaded\n")
+ end
+
+end
+
+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
+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
+
+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
+
+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 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
+
+-- this way we get proper lexing for lexers that do more extensive
+-- parsing
+
+function OnOpen(filename)
+ -- print("opening: " .. filename .. " (size: " .. editor.TextLength .. ")")
+ editor:Colourise(0,editor.TextLength)
+end
+
+-- output.LexerLanguage = ""
diff --git a/context/data/scite/context/scite-ctx.properties b/context/data/scite/context/scite-ctx.properties
new file mode 100644
index 000000000..874a381e3
--- /dev/null
+++ b/context/data/scite/context/scite-ctx.properties
@@ -0,0 +1,172 @@
+# author
+#
+# Hans Hagen - PRAGMA ADE - www.pragma-ade.com
+#
+# environment variable
+#
+# CTXSPELLPATH=t:/spell
+#
+# auto language detection
+#
+# % version =1.0 language=uk
+# <?xml version='1.0' language='uk' ?>
+
+ext.lua.auto.reload=1
+ext.lua.startup.script=$(SciteDefaultHome)/context/scite-ctx.lua
+
+#~ extension.$(file.patterns.context)=scite-ctx.lua
+#~ extension.$(file.patterns.example)=scite-ctx.lua
+
+#~ ext.lua.reset=1
+#~ ext.lua.auto.reload=1
+#~ ext.lua.startup.script=t:/lua/scite-ctx.lua
+
+ctx.menulist.default=\
+ wrap=wrap_text|\
+ unwrap=unwrap_text|\
+ sort=sort_text|\
+ add=add_text|\
+ check=check_text|\
+ reset=reset_text|\
+ strip=toggle_strip
+
+ctx.menulist.context=\
+ wrap=wrap_text|\
+ unwrap=unwrap_text|\
+ sort=sort_text|\
+ document=document_text|\
+ quote=quote_text|\
+ compound=compound_text|\
+ add=add_text|\
+ check=check_text|\
+ reset=reset_text|\
+ strip=toggle_strip
+
+ctx.menulist.example=\
+ wrap=wrap_text|\
+ unwrap=unwrap_text|\
+ sort=sort_text|\
+ uncomment=uncomment_xml|\
+ document=document_text|\
+ quote=quote_text|\
+ compound=compound_text|\
+ add=add_text|\
+ check=check_text|\
+ reset=reset_text|\
+ strip=toggle_strip
+
+ctx.wraptext.length=80
+
+ctx.spellcheck.language=auto
+ctx.spellcheck.wordsize=4
+ctx.spellcheck.wordpath=ENV(CTXSPELLPATH)
+
+ctx.spellcheck.wordfile.all=spell-uk.txt,spell-nl.txt
+
+ctx.spellcheck.wordfile.uk=spell-uk.txt
+ctx.spellcheck.wordfile.nl=spell-nl.txt
+ctx.spellcheck.wordsize.uk=4
+ctx.spellcheck.wordsize.nl=4
+
+ctx.helpinfo=\
+ Shift + F11 pop up menu with ctx options|\
+ |\
+ Ctrl + B check spelling|\
+ Ctrl + M wrap text (auto indent)|\
+ Ctrl + R reset spelling results|\
+ Ctrl + I insert template|\
+ Ctrl + E open log file|\
+ Ctrl + + toggle strip|\
+ |\
+ F7 / F12 check (or process)|\
+ Ctrl + F7 / F12 process|\
+ Alt + F7 / F12 process with jit|\
+ shift + F7 / F12 launch
+
+command.name.21.$(file.patterns.context)=CTX Action List
+command.subsystem.21.$(file.patterns.context)=3
+command.21.$(file.patterns.context)=show_menu $(ctx.menulist.context)
+command.groupundo.21.$(file.patterns.context)=yes
+command.save.before.21.$(file.patterns.context)=2
+command.shortcut.21.$(file.patterns.context)=Shift+F11
+
+command.name.21.$(file.patterns.example)=CTX Action List
+command.subsystem.21.$(file.patterns.example)=3
+command.21.$(file.patterns.example)=show_menu $(ctx.menulist.example)
+command.groupundo.21.$(file.patterns.example)=yes
+command.save.before.21.$(file.patterns.example)=2
+command.shortcut.21.$(file.patterns.example)=Shift+F11
+
+#~ command.name.21.*=CTX Action List
+#~ command.subsystem.21.*=3
+#~ command.21.*=show_menu $(ctx.menulist.default)
+#~ command.groupundo.21.*=yes
+#~ command.save.before.21.*=2
+#~ command.shortcut.21.*=Shift+F11
+
+command.name.22.*=CTX Check Text
+command.subsystem.22.*=3
+command.22.*=check_text
+command.groupundo.22.*=yes
+command.save.before.22.*=2
+command.shortcut.22.*=Ctrl+B
+
+command.name.23.*=CTX Wrap Text
+command.subsystem.23.*=3
+command.23.*=wrap_text
+command.groupundo.23.*=yes
+command.save.before.23.*=2
+command.shortcut.23.*=Ctrl+M
+
+command.name.24.*=CTX Reset Text
+command.subsystem.24.*=3
+command.24.*=reset_text
+command.groupundo.24.*=yes
+command.save.before.24.*=2
+command.shortcut.24.*=Ctrl+R
+
+command.name.25.*=CTX Template
+command.subsystem.25.*=3
+command.save.before.25.*=2
+command.groupundo.25.*=yes
+command.shortcut.25.*=Ctrl+I
+
+# command.25.$(file.patterns.context)=insert_template $(ctx.template.list.context)
+# command.25.$(file.patterns.example)=insert_template $(ctx.template.list.example)
+#
+# ctx.template.list.example=\
+# foo=mathadore.foo|\
+# bar=mathadore.bar
+#
+# ctx.template.mathadore.foo.file=./ctx-templates/foo.xml
+# ctx.template.mathadore.bar.data=bar bar bar
+#
+# paths: ./ctx-templates, ../ctx-templates, ../../ctx-templates
+
+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
+
+import context/scite-ctx-context
+import context/scite-ctx-example
+
+ctx.template.scan=yes
+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.28.*=Language Strip
+command.subsystem.28.*=3
+command.28.*=toggle_strip
+command.save.before.28.*=2
+command.shortcut.28.*=Ctrl++
diff --git a/context/data/scite/context/scite-metapost.properties b/context/data/scite/context/scite-metapost.properties
new file mode 100644
index 000000000..fc06dcaa2
--- /dev/null
+++ b/context/data/scite/context/scite-metapost.properties
@@ -0,0 +1,76 @@
+# file : metapost.properties
+# version : 18 august 2003++
+# author : Hans Hagen / PRAGMA ADE / www.pragma-ade.com
+
+# Metapost: patterns
+
+file.patterns.metapost=
+
+file.patterns.metapost=*.mp;*.mpx;
+
+filter.metapost=MetaPost|$(file.patterns.metapost)|
+
+lexer.$(file.patterns.metapost)=metapost
+
+# Metapost: commands (check process view)
+
+command.compile.$(file.patterns.metapost)=
+command.build.$(file.patterns.metapost)=mpost $(FileNameExt)
+command.go.$(file.patterns.metapost)=gv $(FileName).1
+
+command.0.$(file.patterns.metapost)=
+command.1.$(file.patterns.metapost)=
+command.2.$(file.patterns.metapost)=
+command.3.$(file.patterns.metapost)=
+command.4.$(file.patterns.metapost)=
+command.5.$(file.patterns.metapost)=
+command.6.$(file.patterns.metapost)=
+command.7.$(file.patterns.metapost)=
+command.8.$(file.patterns.metapost)=
+command.9.$(file.patterns.metapost)=
+
+# Metapost: highlighting
+
+style.metapost.0=fore:#7F7F00
+style.metapost.0=fore:#3F3F3F
+style.metapost.1=fore:#007F7F
+style.metapost.2=fore:#7F0000
+style.metapost.3=fore:#7F7F00
+style.metapost.4=fore:#007F00
+style.metapost.5=fore:#000000
+style.metapost.6=fore:#007F00,italics
+
+style.metapost.34=fore:#00007F
+style.metapost.35=fore:#7F007F
+
+# Metapost: comments
+
+comment.block.metapost=%
+comment.block.at.line.start.metapost=1
+
+# Metapost: lexer.metapost.interface.default
+#
+# 0 not used
+# 1 metapost primitives and commands
+# 2 metafun macros
+#
+# first lines of a metapost file are interpreted as follows:
+#
+# % interface=none|metapost|mp|metafun
+
+lexer.metapost.interface.default=1
+
+# Metapost: lexer.metapost.comment.process
+#
+# 0 don't interpret comment
+# 1 color comment like source code
+
+lexer.metapost.comment.process=0
+
+# Metapost: keywords
+
+import context/scite-context-data-metapost.properties
+
+keywords.$(file.patterns.metapost)=$(keywordclass.metapost.all)
+
+# Metapost: end of file
diff --git a/context/data/scite/context/scite-pragma.properties b/context/data/scite/context/scite-pragma.properties
new file mode 100644
index 000000000..2dea18bad
--- /dev/null
+++ b/context/data/scite/context/scite-pragma.properties
@@ -0,0 +1,41 @@
+# file : pragma.properties
+# version : 18 august 2003
+# author : Hans Hagen / PRAGMA ADE / www.pragma-ade.com
+
+# save.backup.first=1
+# save.backup.once=1
+# save.backup.suffix=.bak
+
+# Editor: screen
+
+position.left=0
+position.top=0
+position.width=1920
+position.height=1160
+
+output.horizontal.size=250
+output.vertical.size=100
+
+# Editor: filters
+
+open.filter=\
+All Files (*.*)|*.*|\
+$(filter.context)\
+$(filter.metafun)\
+$(filter.example)\
+$(filter.lua)\
+$(filter.text)\
+$(filter.pdf)\
+$(filter.cweb)\
+$(filter.txt)
+
+# Editor: menus
+
+menu.language=\
+TeX|tex||\
+Metapost|metapost||\
+XML|xml||\
+Lua|lua||\
+Text|txt||\
+PDF|pdf||\
+CWeb|cweb||
diff --git a/context/data/scite/context/scite-tex.properties b/context/data/scite/context/scite-tex.properties
new file mode 100644
index 000000000..7d271eaf1
--- /dev/null
+++ b/context/data/scite/context/scite-tex.properties
@@ -0,0 +1,116 @@
+# file : tex.properties
+# version : 18 august 2003
+# author : Hans Hagen / PRAGMA ADE / www.pragma-ade.com
+
+# TeX users may want to use the Latin Modern Typewriter font:
+#
+# use.monospaced=1
+# font.monospace=font:LMTypewriter10,size:16.5
+# font.errorfont=font:LMTypewriter10,size:11.5
+#
+# These and more presets are done in context.properties.
+
+# TeX: patterns
+
+file.patterns.tex=*.tex
+filter.tex=TeX|$(file.patterns.tex)|
+lexer.$(file.patterns.tex)=tex
+
+# TeX: commands (check process view)
+
+command.compile.$(file.patterns.tex)=
+command.build.$(file.patterns.tex)=tex $(FileNameExt)
+command.go.$(file.patterns.tex)=gv $(FileName).pdf
+
+command.0.$(file.patterns.tex)=
+command.1.$(file.patterns.tex)=
+command.2.$(file.patterns.tex)=
+command.3.$(file.patterns.tex)=
+command.4.$(file.patterns.tex)=
+command.5.$(file.patterns.tex)=
+command.6.$(file.patterns.tex)=
+command.7.$(file.patterns.tex)=
+command.8.$(file.patterns.tex)=
+command.9.$(file.patterns.tex)=
+
+# TeX: highlighting
+
+style.tex.0=fore:#3F3F3F
+style.tex.1=fore:#007F7F
+style.tex.2=fore:#7F0000
+style.tex.3=fore:#7F7F00
+style.tex.4=fore:#007F00
+style.tex.34=fore:#00007F
+style.tex.35=fore:#7F007F
+
+# TeX: comments
+
+comment.block.tex=%
+comment.block.at.line.start.tex=1
+
+# TeX: lexer.tex.interface.default
+#
+# 0 all \commands
+# 1 tex etex pdftex omega primitives
+# 2 context nl (when context.properties is loaded)
+# 3 context en (when context.properties is loaded)
+# 4 context de (when context.properties is loaded)
+# 5 context cz (when context.properties is loaded)
+# 6 context it (when context.properties is loaded)
+# 7 context ro (when context.properties is loaded)
+# 8 latex (no keywords yet; will move up)
+#
+# first lines of a tex file are interpreted as follows
+#
+# % interface=all|nl|en|de|cz|it|ro|latex
+
+lexer.tex.interface.default=0
+
+# TeX: lexer.tex.use.keywords
+#
+# 0 don't use keyword lists
+# 1 use keyword lists
+
+lexer.tex.use.keywords=1
+
+# TeX: lexer.tex.comment.process
+#
+# 0 don't interpret comment
+# 1 color comment like source code
+
+lexer.tex.comment.process=0
+
+# TeX: lexer.tex.auto.if
+#
+# 0 don't handle \if<unknown>
+# 1 treat \if<unknown> as command
+
+lexer.tex.auto.if=1
+
+# only the macros that make sense:
+
+import context/scite-context-data-tex.properties
+
+# collections
+
+keywordclass.tex.all=\
+ $(keywordclass.tex.tex) \
+ $(keywordclass.tex.etex) \
+ $(keywordclass.tex.pdftex) \
+ $(keywordclass.tex.aleph) \
+ $(keywordclass.tex.omega) \
+ $(keywordclass.tex.xetex) \
+ $(keywordclass.tex.plain)
+
+# keywords1 is not used since scintilla takes it from 'keywords' and
+# the other slots are used for context (interfaces) and slot 8 can
+# be used for latex but as scite ships with its own latex support
+# anyway so we don't bother about it here
+
+keywords.$(file.patterns.tex)=$(keywordclass.tex.all)
+
+# TeX: words
+
+word.characters.$(file.patterns.tex)=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@\\
+
+# TeX: end of file