# TeXworks: Patterns for syntax coloring

# Each entry consists of three whitespace-separated fields:
# <style> <spell?> <regex>

# <style> is a combination of color and style flags
# Valid syntax:
# <fgcolor>
# <fgcolor>/<bgcolor>
# ;<fontflags>
# <fgcolor>;<fontflags>
# <fgcolor>/<bgcolor>;<fontflags>
#
# The color fields <fgcolor> and <bgcolor> are either:
# *) a color name from the list defined in the SVG standard;
#    see https://www.w3.org/TR/SVG11/types.html#ColorKeywords
# *) a hexadecimal color value of the form #rrggbb; note that if this is used at
#    the beginning of a line, a space " " must be added in front of it so the
#    line is not interpreted as a comment (e.g., " #aabbcc" instead of "#aabbcc")
#
# The <fontflags> field is a combination of the letters
# B (bold)
# I (italic)
# U (underlined)

# <spell> is a flag controlling whether this style is subject to spell-checking;
# "Y" or "y" for yes, "N" (or anything else, actually) for no.

# <regex> is the regular expression to match.

# Note that order of rules may be important if several rules could match at the same position;
# this is why the generic "control sequence" rule comes AFTER the specific \begin/\end one.

[LaTeX]
# special characters
red		N	[$#^_{}&]

# LaTeX environments
olive	N	\\(?:begin|end)\s*\{[^\}]*\}

# LaTeX packages
mediumorchid	N	\\usepackage\s*(?:\[[^\]]*\]\s*)?\{[^\}]*\}

# control sequences
royalblue	N	\\(?:[\p{L}@]+|.)

# comments
gray		Y	%.*

[ConTeXt]
# special characters
red		N	[$#{}&]

# 'other' special characters
sienna	N	[=\[\]]

# mathematical operations
orange		N	[\-+/^_]

# start/stop
olive;B	N	\\(?:start|stop)[A-Za-z]+

# control sequences
royalblue;B		N	\\(?:[\p{L}@]+|.)

# comments
gray		Y	%.*

[BibTeX]

# entries
olive	N	@[^{]+

# comments
gray		Y	%.*

# keys
royalblue	N	[a-zA-Z]+(?=\s*=)

[LaTeX DTX]

# comments
red		Y	\^\^A.*

# Guards
darkviolet		N	^%<@@=[^>]*>
limegreen		N	^%<\*[^>]*>
crimson		N	^%</[^>]*>
brown		N	^%<<
orange		N	^%<[^>]*>

# special characters
darkred		N	\^\^\^\^\^[0-9a-z]{5}
darkred		N	\^\^\^\^[0-9a-z]{4}
darkred		N	\^\^\^[0-9a-z]{3}
darkred		N	\^\^[0-9a-z]{2}
darkred		N	[$#^_{}&]
gray		N	^%%.*
gray		N	^%

# Macrocode
green		N	\\(?:begin|end)\{macrocode\}

# LaTeX environments
olive	N	\\(?:begin|end)\s*\{[^}]*\}

# control sequences
royalblue		N	\\(?:[\p{L}@:_]+|.)

[Lua]

# Comments (single line only)
gray		Y	--.*

# Strings
olive		N	(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))
olive		N	\[(=*)\[[\s\S]*(?:\]\1\]|$)

# Keywords
royalblue;B		N	\b(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b

# Numbers
mediumorchid	N	[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))

# other possibilities to be added....
# [Metapost]
# etc
