KSyntaxHighlighting: Remove highlighting files with unclear license

Makefiles are less relevant nowadays with CMake and Ninja, and the
Python plugin does highlighting on its own.
And users will still be prompted for downloading the highlighting files
anyway.

Change-Id: If80f1e8215375ed3985d9327c031f0c69fc15654
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2023-12-20 10:05:52 +01:00
parent 8d0238db23
commit 4d3eb3d578
3 changed files with 0 additions and 1482 deletions

View File

@@ -184,25 +184,6 @@
"LicenseFile": "doc/qtcreator/src/overview/license-LGPLv2.1.txt",
"Copyright": "Author: Sebastian Pipping (sebastian@pipping.org)."
},
{
"Id": "ksyntaxhighlighting-makefile",
"Name": "KSyntaxHighlighting: makefile.xml",
"QDocModule": "qtcreator",
"QtParts": ["tools"],
"QtUsage": "Used for the generic highlighter for text files.",
"Path": "src/libs/3rdparty/syntax-highlighting/data/syntax",
"Description": "Syntax highlighting definition makefile.xml",
"Homepage": "https://invent.kde.org/frameworks/syntax-highlighting/-/tree/master/data/syntax",
"License": "MIT License",
"LicenseFile": "src/libs/3rdparty/syntax-highlighting/COPYING",
"Copyright": [
"Author: v0.9 by Per Wigren (wigren@home.se).",
"Changes: Joseph Wenninger (jowenn@kde.org),",
"Rui Santana (santana.rui@gmail.com),",
"v2.0 by Andreas Nordal (andreas.nordal@gmail.com),",
"v2.1 by Alex Turbov (i.zaufi@gmail.com),",
"v4 by Alex Richardson (arichardson.kde@gmail.com)."]
},
{
"Id": "ksyntaxhighlighting-markdown",
"Name": "KSyntaxHighlighting: markdown.xml",
@@ -274,25 +255,6 @@
"Authors: Motoki Kashihara (motoki8791@gmail.com),",
"Michael Lombardi (Michael.T.Lombardi@outlook.com)."]
},
{
"Id": "ksyntaxhighlighting-python",
"Name": "KSyntaxHighlighting: python.xml",
"QDocModule": "qtcreator",
"QtParts": ["tools"],
"QtUsage": "Used for the generic highlighter for text files.",
"Path": "src/libs/3rdparty/syntax-highlighting/data/syntax",
"Description": "Syntax highlighting definition python.xml",
"Homepage": "https://invent.kde.org/frameworks/syntax-highlighting/-/tree/master/data/syntax",
"License": "MIT License",
"LicenseFile": "src/libs/3rdparty/syntax-highlighting/COPYING",
"Copyright": [
"Author: Michael Bueker",
"Changes: v0.9 by Per Wigren,",
"v1.9 by Michael Bueker,",
"v1.97 by Paul Giannaros,",
"v1.99 by Primoz Anzur,",
"v2.01 by Paul Giannaros."]
},
{
"Id": "ksyntaxhighlighting-qdocconf",
"Name": "KSyntaxHighlighting: qdocconf.xml",

View File

@@ -1,515 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> -->
<!-- Modified by Joseph Wenninger <jowenn@kde.org> -->
<!-- Modified by Rui Santana <santana.rui@gmail.com> -->
<!-- v2.0 by Andreas Nordal <andreas.nordal@gmail.com> -->
<!-- small priority to allow for example Makefile.cpp to be detected as cpp file -->
<!-- v2.1 by Alex Turbov <i.zaufi@gmail.com>
improve comments handling -->
<!-- v4 by Alex Richardson <arichardson.kde@gmail.com>
added bmake support -->
<!-- v10 by Peter J. Mello <admin@petermello.net>
Add recognition of POSIX 2013 '::=' operator for variable assignment -->
<language name="Makefile" section="Other"
version="13" kateversion="5.0"
extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"
mimetype="text/x-makefile" priority="11"
author="Per Wigren (wigren@home.se)" license="">
<highlighting>
<list name = "keywords" >
<item>include</item>
<item>-include</item>
<item>define</item>
<item>endef</item>
</list>
<!-- https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html -->
<list name="gmake_if_keywords">
<item>if</item>
<item>ifeq</item>
<item>ifneq</item>
<item>ifdef</item>
<item>ifndef</item>
</list>
<list name="gmake_else_keywords"><item>else</item></list>
<list name="gmake_endif_keywords"><item>endif</item></list>
<!-- bmake statements: https://www.freebsd.org/cgi/man.cgi?make(1)#INCLUDE_STATEMENTS,_CONDITIONALS_AND_FOR_LOOPS -->
<list name="bmake_if_keywords">
<item>.if</item>
<item>.ifdef</item>
<item>.ifndef</item>
<item>.ifmake</item>
<item>.ifnmake</item>
</list>
<list name="bmake_else_keywords">
<item>.elif</item>
<item>.elifdef</item>
<item>.elifndef</item>
<item>.elifmake</item>
<item>.elifnmake</item>
<item>.else</item> <!-- TODO: anything following .else should be highlighted as an error -->
</list>
<list name="bmake_endif_keywords"><item>.endif</item></list>
<list name="bmake_expressions">
<item>defined</item>
<item>empty</item>
<item>exists</item>
<item>target</item>
<item>commands</item>
</list>
<list name="bmake_include_stmt">
<item>.include</item>
<item>.-include</item>
<item>.sinclude</item>
<!-- For compat bmake also handles include but this is already highlighted. <item>include</item> -->
</list>
<list name="bmake_message_stmt">
<item>.info</item>
<item>.warning</item>
<item>.error</item>
</list>
<!-- Use single element list here so that .for/.endfor also shows up in code completion -->
<list name="bmake_for_stmt"><item>.for</item></list>
<list name="bmake_endfor_stmt"><item>.endfor</item></list>
<!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_TARGETS -->
<list name="bmake_special_targets">
<item>.BEGIN</item>
<item>.DEFAULT</item>
<item>.END</item>
<item>.ERROR</item>
<item>.IGNORE</item>
<item>.INTERRUPT</item>
<item>.MAIN</item>
<item>.MAKEFLAGS</item>
<item>.NOPATH</item>
<item>.NOTPARALLEL</item>
<item>.NO_PARALLEL</item>
<item>.OBJDIR</item>
<item>.ORDER</item>
<item>.PATH</item>
<item>.PHONY</item>
<item>.PRECIOUS</item>
<item>.SHELL</item>
<item>.SILENT</item>
<item>.STALE</item>
<item>.SUFFIXES</item>
</list>
<!-- https://www.freebsd.org/cgi/man.cgi?make(1)#SPECIAL_SOURCES_(ATTRIBUTES) -->
<list name="bmake_special_sources">
<item>.EXEC</item>
<item>.IGNORE</item>
<item>.MADE</item>
<item>.MAKE</item>
<item>.META</item>
<item>.NOMETA</item>
<item>.NOMETA_CMP</item>
<item>.NOPATH</item>
<item>.NOTMAIN</item>
<item>.OPTIONAL</item>
<item>.PHONY</item>
<item>.PRECIOUS</item>
<item>.RECURSIVE</item>
<item>.SILENT</item>
<item>.USE</item>
<item>.USEBEFORE</item>
<item>.WAIT</item>
</list>
<list name="bmake_other_stmts">
<item>.unexport-env</item>
<item>.unexport</item>
<item>.undef</item>
<item>.export-env</item>
<item>.export</item>
</list>
<list name = "functions">
<item>call</item>
<item>subst</item>
<item>patsubst</item>
<item>strip</item>
<item>findstring</item>
<item>filter</item>
<item>filter-out</item>
<item>sort</item>
<item>word</item>
<item>wordlist</item>
<item>words</item>
<item>firstword</item>
<item>lastword</item>
<item>dir</item>
<item>notdir</item>
<item>suffix</item>
<item>basename</item>
<item>addsuffix</item>
<item>addprefix</item>
<item>join</item>
<item>wildcard</item>
<item>realpath</item>
<item>abspath</item>
<item>if</item>
<item>or</item>
<item>and</item>
<item>foreach</item>
<item>value</item>
<item>eval</item>
<item>origin</item>
<item>flavor</item>
<item>shell</item>
<item>error</item>
<item>warning</item>
<item>info</item>
</list>
<contexts>
<context name="normal" attribute="Normal" lineEndContext="#stay">
<DetectSpaces/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
<keyword attribute="ControlFlow" String="bmake_if_keywords" context="bmake_conditional" beginRegion="bmake_if" firstNonSpace="true"/>
<!--TODO: trailing non-space after .else should be highlighted as an error -->
<keyword attribute="ControlFlow" String="bmake_else_keywords" context="bmake_conditional" endRegion="bmake_if" beginRegion="bmake_if" firstNonSpace="true"/>
<keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if"/>
<keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay" beginRegion="gmake_if" firstNonSpace="true"/>
<!--TODO: trailing non-space after .else should be highlighted as an error -->
<keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true"/>
<keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Keyword" context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/>
<RegExpr attribute="Variable" context="assign" String="[^\s+:?+]*\s*(?=::=|:=|=|\+=|\?=)"/>
<keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/>
<RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/>
<keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/>
<keyword attribute="Keyword" context="bmake_message" String="bmake_message_stmt" firstNonSpace="true"/>
<keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/>
<keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/>
<RegExpr attribute="Section" context="prereq" String="^\.[^.][^:]*:" column="0"/>
<RegExpr attribute="Target" context="prereq" String="^[^:]*:" column="0"/>
<DetectIdentifier/>
<DetectChar attribute="String" context="string&quot;" char="&quot;"/>
<DetectChar attribute="String" context="string'" char="'"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
<AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
</context>
<context name="strings_and_vars" attribute="Normal" lineEndContext="#pop">
<DetectChar attribute="Operator" context="dollar" char="$"/>
<DetectChar attribute="String" context="string&quot;" char="&quot;"/>
<DetectChar attribute="String" context="string'" char="'"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
</context>
<context name="gmake_else" attribute="Normal" lineEndContext="#pop">
<DetectSpaces attribute="Normal"/>
<keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay"/>
<IncludeRules context="strings_and_vars"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
<!-- NOTE: Allow highlighting any variable name (see bug #417379), for example:
else ifdef foo
else ifeq (bar, foo)
-->
</context>
<context name="bmake_include" attribute="Normal" lineEndContext="#pop">
<DetectSpaces />
<RangeDetect char="&lt;" char1="&gt;" context="#stay" attribute="Include" />
<RangeDetect char="&quot;" char1="&quot;" context="#stay" attribute="Include" />
</context>
<context name="bmake_conditional" attribute="Normal" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="strings_and_vars"/>
<keyword attribute="Builtin" context="bmake_expression" String="bmake_expressions"/>
<Detect2Chars attribute="RealOperator" context="#stay" char="&amp;" char1="&amp;"/>
<Detect2Chars attribute="RealOperator" context="#stay" char="|" char1="|"/>
<Detect2Chars attribute="RealOperator" context="#stay" char="!" char1="="/>
<Detect2Chars attribute="RealOperator" context="#stay" char="=" char1="="/>
<DetectChar attribute="RealOperator" context="#stay" char="!"/>
<HlCHex attribute="Number" context="#stay"/>
<Int attribute="Number" context="#stay"/>
<DetectIdentifier attribute="Variable" context="#stay"/>
<LineContinue attribute="Operator" context="#stay"/>
</context>
<context name="bmake_for_loop" attribute="Variable" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="strings_and_vars"/>
<WordDetect attribute="RealOperator" context="#stay" String="in" />
</context>
<context name="bmake_other_stmts" attribute="Variable" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="strings_and_vars"/>
</context>
<context name="bmake_expression" attribute="Variable" lineEndContext="#pop">
<DetectSpaces/>
<IncludeRules context="strings_and_vars"/>
<DetectChar attribute="Normal" context="#stay" char="("/>
<DetectChar attribute="Normal" context="#pop" char=")"/>
<DetectIdentifier attribute="Variable"/>
</context>
<context name="bmake_special_target" attribute="Error" lineEndContext="rule">
<!-- anything but spaces before the : should be an error -->
<DetectSpaces attribute="Normal" />
<DetectChar attribute="SpecialTarget" context="#pop!prereq" char=":"/>
</context>
<context name="bmake_message" attribute="String" lineEndContext="#pop">
<DetectChar attribute="Operator" context="dollar" char="$"/>
</context>
<context name="prereq" attribute="Prereq" lineEndContext="rule">
<DetectSpaces/>
<keyword attribute="SpecialPrereq" context="#stay" String="bmake_special_sources"/>
<DetectIdentifier/>
<LineContinue attribute="Operator" context="#stay"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
</context>
<context name="rule" attribute="Normal" lineEndContext="#stay">
<LineContinue attribute="Operator" context="#stay"/>
<!-- pop if there is a leading non-tab,
and in particular, mark leading spaces as errors -->
<RegExpr attribute="Error" context="#pop#pop#pop" String="^ +" firstNonSpace="1"/>
<RegExpr context="#pop#pop#pop" String="^[^\t]" lookAhead="1" firstNonSpace="1"/>
<DetectSpaces/>
<DetectIdentifier/>
<DetectChar attribute="String" context="string&quot;" char="&quot;"/>
<DetectChar attribute="String" context="string'" char="'"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
<AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
</context>
<context name="silent" attribute="Silent" lineEndContext="#pop">
<LineContinue attribute="Operator" context="#stay"/>
<DetectSpaces/>
<DetectIdentifier/>
<DetectChar attribute="String" context="string&quot;" char="&quot;"/>
<DetectChar attribute="String" context="string'" char="'"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
<Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
<DetectChar attribute="Comment" context="Comment" char="#"/>
</context>
<context name="string&quot;" attribute="String" lineEndContext="#pop">
<LineContinue attribute="Operator" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="&quot;"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
</context>
<context name="string'" attribute="String" lineEndContext="#pop">
<LineContinue attribute="String" context="#stay"/>
<DetectChar attribute="String" context="#pop" char="'"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
</context>
<context name="assign" attribute="Operator" lineEndContext="#pop">
<DetectChar attribute="Operator" context="value" char="="/>
</context>
<context name="value" attribute="String" lineEndContext="#pop#pop">
<LineContinue attribute="Operator"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<RegExpr attribute="Special" context="#pop#pop" String="@[-_\d\w]*@"/>
<DetectChar attribute="Operator" char=";" context="#pop#pop"/>
</context>
<context name="dollar" attribute="Operator" lineEndContext="#pop">
<DetectChar attribute="Operator" context="call(" char="("/>
<DetectChar attribute="Operator" context="call{" char="{"/>
<RegExpr attribute="Operator" context="#pop" String="."/>
</context>
<context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(" fallthrough="1">
<keyword attribute="Keyword" context="callFunc(" String="functions"/>
</context>
<context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{" fallthrough="1">
<keyword attribute="Keyword" context="callFunc{" String="functions"/>
</context>
<context name="callVar(" attribute="Variable" lineEndContext="#stay">
<DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<DetectSpaces attribute="Error" context="#stay"/>
<DetectChar attribute="RealOperator" context="SubstitutionRefs" char=":"/>
<AnyChar attribute="Error" context="#stay" String="=#"/>
</context>
<context name="callVar{" attribute="Variable" lineEndContext="#stay">
<DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<DetectSpaces attribute="Error" context="#stay"/>
<!-- Handle bmake Variable modifiers: ${variable[:modifier[:...]]} -->
<Detect2Chars context="#stay" char="\" char1=":"/>
<!-- other modifiers -->
<DetectChar attribute="RealOperator" context="bmake_var_modifier" char=":"/>
<AnyChar attribute="Error" context="#stay" String="=#"/>
</context>
<context name="bmake_var_modifier_arg" attribute="VarModifier" lineEndContext="#pop">
<DetectChar attribute="Operator" context="dollar" char="$"/>
<Detect2Chars context="#stay" char="\" char1="}"/>
<DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/>
<Detect2Chars context="#stay" char="\" char1=":"/>
<DetectChar attribute="RealOperator" context="#pop!bmake_var_modifier" char=":"/>
</context>
<!-- TODO: once all modifiers are properly handled change fallthroughContext to "expect}" -->
<context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg" fallthrough="true">
<DetectChar attribute="Operator" context="dollar" char="$"/>
<!--
TODO :?true_string:false_string
TODO :old_string=new_string This is the AT&T System V UNIX style variable substitution.
TODO :@temp@string@ This is the loop expansion mechanism from the OSF Development Environment (ODE) make.
TODO :!cmd! The output of running cmd is the value.
TODO :[range]
-->
<!-- Modifiers without arguments:-->
<!-- :Ox Randomize words in variable. -->
<Detect2Chars attribute="Builtin" context="#pop!expect}" char="O" char1="x"/>
<!--
:E Replaces each word in the variable with its suffix.
:H Replaces each word in the variable with everything but the last component.
:O Order every word in variable alphabetically.
:Q Quotes every shell meta-character in the variable
:R Replaces each word in the variable with everything but its suffix.
:T Replaces each word in the variable with its last component.
:u Remove adjacent duplicate words (like uniq(1)).
:L The name of the variable is the value.
:P The path of the node which has the same name as the variable is the value.
-->
<AnyChar attribute="Builtin" context="#pop!expect}" String="EHOQRTuLP"/>
<!-- :sh If the variable is non-empty it is run as a command and the output becomes the new value. -->
<Detect2Chars attribute="Builtin" context="#pop!expect}" char="s" char1="h"/>
<!-- :tA Attempt to convert variable to an absolute path using realpath(3),-->
<Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="A"/>
<!-- :tl Converts variable to lower-case letters.-->
<Detect2Chars attribute="Builtin" context="#pop!expect}" char="t" char1="L"/>
<!-- :gmtime The value is a format string for strftime(3), using the current gmtime(3). -->
<StringDetect attribute="Builtin" String="gmtime" context="#pop!expect}" />
<!-- :hash Compute a 32bit hash of the value and encode it as hex digits. -->
<StringDetect attribute="Builtin" String="hash" context="#pop!expect}" />
<!-- :localtime The value is a format string for strftime(3), using the current localtime(3). -->
<StringDetect attribute="Builtin" String="localtime" context="#pop!expect}" />
<!--Now the modifiers with arguments:-->
<!--
:Mpattern Select only those words that match pattern.
:Npattern This is identical to `:M', but selects all words which do not match pattern.
:Dnewval If the variable is defined newval is the value.
:Unewval If the variable is undefined newval is the value.
-->
<!-- TODO: add new context to highligh old_string and new_string differently
:S/old_string/new_string/[1gW]
:C/pattern/replacement/[1gW]
-->
<AnyChar attribute="Builtin" context="#pop!bmake_var_modifier_arg" String="MNDUSC"/>
<!-- ::=str The variable is assigned the value str after substitution. -->
<Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char=":" char1="="/>
<!-- ::?=str As for ::= but only if the variable does not already have a value. -->
<StringDetect attribute="Builtin" String=":?=" context="#pop!bmake_var_modifier_arg" />
<!-- ::+=str Append str to the variable. -->
<StringDetect attribute="Builtin" String=":+=" context="#pop!bmake_var_modifier_arg" />
<!-- ::!=cmd Assign the output of cmd to the variable. -->
<StringDetect attribute="Builtin" String=":!=" context="#pop!bmake_var_modifier_arg" />
<!-- :tu Converts variable to upper-case letters. -->
<Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="u"/>
<!-- :tW Causes the value to be treated as a single word. See also `:[*]'. -->
<Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="W"/>
<!-- :tw Causes the value to be treated as a sequence of words delimited by white space. See also `:[@]'.-->
<Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="w"/>
<!-- :tsc Words in the variable are normally separated by a space on
expansion. This modifier sets the separator to the character c. If
c is omitted, then no separator is used. The common escapes
(including octal numeric codes), work as expected. -->
<Detect2Chars attribute="Builtin" context="#pop!bmake_var_modifier_arg" char="t" char1="s"/>
<IncludeRules context="bmake_var_modifier_arg"/>
</context>
<context name="expect}" attribute="Error" lineEndContext="#pop#pop#pop#pop">
<Detect2Chars context="#stay" char="\" char1="}"/>
<DetectChar attribute="Operator" char="}" context="#pop#pop#pop#pop"/>
</context>
<context name="callFunc(" attribute="FuncParam" lineEndContext="#stay">
<DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<DetectChar attribute="Keyword" context="#stay" char=","/>
<DetectChar attribute="String" context="string'" char="'"/>
</context>
<context name="callFunc{" attribute="FuncParam" lineEndContext="#stay">
<DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
<DetectChar attribute="Keyword" context="#stay" char=","/>
<DetectChar attribute="String" context="string'" char="'"/>
</context>
<!-- $(var:pattern=replacement) -->
<context name="SubstitutionRefs" attribute="VarModifier" lineEndContext="#stay">
<DetectChar attribute="RealOperator" context="#pop!SubstitutionRefsReplacement" char="="/>
<IncludeRules context="SubstitutionRefsReplacement"/>
</context>
<context name="SubstitutionRefsReplacement" attribute="VarModifier" lineEndContext="#stay">
<DetectChar attribute="Operator" char=")" context="#pop#pop#pop#pop"/>
<DetectChar attribute="Operator" context="dollar" char="$"/>
</context>
<context attribute="Comment" lineEndContext="#pop" name="Comment">
<LineContinue attribute="Comment" context="#stay" />
<IncludeRules context="##Comments" />
</context>
</contexts>
<itemDatas>
<itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/>
<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="String" defStyleNum="dsString" spellChecking="0"/>
<itemData name="Variable" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="Target" defStyleNum="dsDecVal" spellChecking="0"/>
<itemData name="Section" defStyleNum="dsOthers" spellChecking="0"/>
<itemData name="Prereq" defStyleNum="dsDataType" spellChecking="0"/>
<itemData name="FuncParam" defStyleNum="dsString" spellChecking="0"/>
<itemData name="Operator" defStyleNum="dsChar" spellChecking="0"/>
<itemData name="Silent" defStyleNum="dsFunction" spellChecking="0"/>
<itemData name="Special" defStyleNum="dsFloat" spellChecking="0"/>
<itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
<itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="0"/>
<itemData name="Number" defStyleNum="dsDecVal" spellChecking="0"/>
<itemData name="Include" defStyleNum="dsImport" spellChecking="0"/>
<itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="0"/>
<itemData name="VarModifier" defStyleNum="dsSpecialString" spellChecking="0"/>
<itemData name="RealOperator" defStyleNum="dsKeyword" spellChecking="0"/>
<itemData name="SpecialTarget" defStyleNum="dsOthers" spellChecking="0" bold="1"/>
<itemData name="SpecialPrereq" defStyleNum="dsDataType" spellChecking="0" bold="1"/>
</itemDatas>
</highlighting>
<general>
<comments>
<comment name = "singleLine" start = "#"/>
</comments>
<!-- '-' is not a deliminator in function filter-out -->
<keywords casesensitive="1" weakDeliminator = ".-"/>
</general>
</language>
<!-- kate: syntax XML; space-indent on; indent-width 2; replace-tabs on; -->

View File

@@ -1,929 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"
[
<!ENTITY digitPart "[0-9](?:_?[0-9])*">
<!ENTITY beforeDigit "(?&lt;![\.\w[:^ascii:]])">
<!ENTITY beforePointFloat "(?&lt;![\w[:^ascii:]])">
<!-- Python 2 style. Syntax:
1. start character '%'
2. [optional] Mapping key, e.g. '(foo)'
3. [optional] Conversion flags, one of '#0- +'
4. [optional] Minimum width, integer or '*'
5. [optional] Precision, '.' followed by integer or '*'
6. [optional] Length modifier, one of 'hlL'
7. conversion type, one of 'crsdiouxXeEfFgG%'
[Special cases: %prog and %default - see http://docs.python.org/library/optparse.html]
-->
<!ENTITY strsubstitution_py2 "&#37;(?:(?:\([a-zA-Z0-9_]+\))?[#0\- +]?(?:[1-9][0-9]*|\*)?(?:\.(?:[1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG&#37;]|prog|default)">
<!-- http://docs.python.org/2/library/string.html#format-string-syntax:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name ::= arg_name ("." attribute_name | "[" element_index "]")*
arg_name ::= [identifier | integer]
attribute_name ::= identifier
element_index ::= integer | index_string
index_string ::= <any source character except "]"> +
conversion ::= "r" | "s"
format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type]
fill ::= <any character>
align ::= "<" | ">" | "=" | "^"
sign ::= "+" | "-" | " "
width ::= integer
precision ::= integer
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
-->
<!ENTITY strsubstitution_py3 "\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?(?:![rs])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX&#37;]?)?\}">
<!ENTITY rawString "(?:ru|u?r|)(?:'(?:[^']++|\\')*+'|&quot;(?:[^&quot;]++|\\&quot;)*+&quot;)">
<!ENTITY formatString "(?:r?f|fr?)(?:'(?:[^'{]++|\\'|\{\{|\{[^}]++\})*+'|&quot;(?:[^&quot;]++|\\&quot;|\{\{|\{[^}]*+\})*+&quot;)">
<!ENTITY string "&rawString;|&formatString;">
]>
<!-- Python syntax highlightning v0.9 by Per Wigren -->
<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
<!-- Python syntax highlighting v1.97 by Paul Giannaros -->
<!-- Python syntax highlighting v1.99 by Primoz Anzur -->
<!-- Python syntax highlighting v2.01 by Paul Giannaros:
* full format character support
* unicode string modifier supported -->
<!-- v2.02 remove RegExpr for nums and make indent consistent -->
<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators -->
<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space -->
<!-- v2.06 decorator names can (and often do) contain periods -->
<!-- v2.07 add support for %prog and co, see bug 142832 -->
<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
<!-- v2.29 recognize escape sequenzes correctly -->
<language name="Python" version="26" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
<highlighting>
<list name="import">
<item>import</item>
<item>from</item>
<item>as</item>
</list>
<list name="defs">
<item>class</item>
<item>def</item>
<item>del</item>
<item>global</item>
<item>lambda</item>
<item>nonlocal</item>
</list>
<list name="operators">
<item>and</item>
<item>in</item>
<item>is</item>
<item>not</item>
<item>or</item>
</list>
<list name="flow">
<item>assert</item>
<item>break</item>
<item>continue</item>
<item>elif</item>
<item>else</item>
<item>except</item>
<item>finally</item>
<item>for</item>
<item>if</item>
<item>pass</item>
<item>raise</item>
<item>return</item>
<item>try</item>
<item>while</item>
<item>with</item>
<item>async</item>
<item>await</item>
</list>
<list name="flow_yield">
<item>yield</item>
<!--
"yield from" added here as a keyword for autocompletion. The actual handling
is in context="yield" so that we won't need to add space as a weakDeliminator.
-->
<item>yield from</item>
</list>
<list name="patternmatching">
<item>match</item>
<item>case</item>
</list>
<list name="builtinfuncs">
<!-- https://docs.python.org/3.11/library/functions.html#built-in-funcs -->
<item>__import__</item>
<item>abs</item>
<item>aiter</item>
<item>all</item>
<item>anext</item>
<item>any</item>
<item>apply</item>
<item>ascii</item>
<item>basestring</item>
<item>bin</item>
<item>breakpoint</item>
<item>bool</item>
<item>buffer</item>
<item>bytearray</item>
<item>bytes</item>
<item>callable</item>
<item>chr</item>
<item>classmethod</item>
<item>cmp</item>
<item>coerce</item>
<item>compile</item>
<item>complex</item>
<item>delattr</item>
<item>dict</item>
<item>dir</item>
<item>divmod</item>
<item>enumerate</item>
<item>eval</item>
<item>exec</item>
<item>execfile</item>
<item>file</item>
<item>filter</item>
<item>float</item>
<item>format</item>
<item>frozenset</item>
<item>getattr</item>
<item>globals</item>
<item>hasattr</item>
<item>hash</item>
<item>help</item>
<item>hex</item>
<item>id</item>
<item>input</item>
<item>int</item>
<item>intern</item>
<item>isinstance</item>
<item>issubclass</item>
<item>iter</item>
<item>len</item>
<item>list</item>
<item>locals</item>
<item>long</item>
<item>map</item>
<item>max</item>
<item>memoryview</item>
<item>min</item>
<item>next</item>
<item>object</item>
<item>oct</item>
<item>open</item>
<item>ord</item>
<item>pow</item>
<item>print</item>
<item>property</item>
<item>range</item>
<item>raw_input</item>
<item>reduce</item>
<item>reload</item>
<item>repr</item>
<item>reversed</item>
<item>round</item>
<item>set</item>
<item>setattr</item>
<item>slice</item>
<item>sorted</item>
<item>staticmethod</item>
<item>str</item>
<item>sum</item>
<item>super</item>
<item>tuple</item>
<item>type</item>
<item>unichr</item>
<item>unicode</item>
<item>vars</item>
<item>xrange</item>
<item>zip</item>
</list>
<list name="specialvars">
<item>None</item>
<item>self</item>
<item>True</item>
<item>False</item>
<item>NotImplemented</item>
<item>Ellipsis</item>
<item>__debug__</item>
<item>__file__</item>
<item>__name__</item>
<item>__qualname__</item>
</list>
<list name="bindings">
<item>SIGNAL</item>
<item>SLOT</item>
<item>connect</item>
</list>
<list name="overloaders">
<!-- https://docs.python.org/3.10/reference/datamodel.html#special-method-names -->
<item>__new__</item>
<item>__init__</item>
<item>__del__</item>
<item>__repr__</item>
<item>__str__</item>
<item>__lt__</item>
<item>__le__</item>
<item>__eq__</item>
<item>__ne__</item>
<item>__gt__</item>
<item>__ge__</item>
<item>__cmp__</item>
<item>__rcmp__</item>
<item>__hash__</item>
<item>__bool__</item>
<item>__nonzero__</item>
<item>__unicode__</item>
<item>__getattr__</item>
<item>__setattr__</item>
<item>__delattr__</item>
<item>__getattribute__</item>
<item>__get__</item>
<item>__set__</item>
<item>__delete__</item>
<item>__call__</item>
<item>__len__</item>
<item>__length_hint__</item>
<item>__getitem__</item>
<item>__setitem__</item>
<item>__delitem__</item>
<item>__missing__</item>
<item>__iter__</item>
<item>__reversed__</item>
<item>__contains__</item>
<item>__getslice__</item>
<item>__setslice__</item>
<item>__delslice__</item>
<item>__add__</item>
<item>__sub__</item>
<item>__mul__</item>
<item>__matmul__</item>
<item>__floordiv__</item>
<item>__mod__</item>
<item>__divmod__</item>
<item>__pow__</item>
<item>__lshift__</item>
<item>__rshift__</item>
<item>__and__</item>
<item>__xor__</item>
<item>__or__</item>
<item>__div__</item>
<item>__truediv__</item>
<item>__radd__</item>
<item>__rsub__</item>
<item>__rmul__</item>
<item>__rmatmul__</item>
<item>__rdiv__</item>
<item>__rtruediv__</item>
<item>__rfloordiv__</item>
<item>__rmod__</item>
<item>__rdivmod__</item>
<item>__rpow__</item>
<item>__rlshift__</item>
<item>__rrshift__</item>
<item>__rand__</item>
<item>__rxor__</item>
<item>__ror__</item>
<item>__iadd__</item>
<item>__isub__</item>
<item>__imul__</item>
<item>__imatmul__</item>
<item>__idiv__</item>
<item>__itruediv__</item>
<item>__ifloordiv__</item>
<item>__imod__</item>
<item>__ipow__</item>
<item>__ilshift__</item>
<item>__irshift__</item>
<item>__iand__</item>
<item>__ixor__</item>
<item>__ior__</item>
<item>__neg__</item>
<item>__pos__</item>
<item>__abs__</item>
<item>__invert__</item>
<item>__complex__</item>
<item>__int__</item>
<item>__long__</item>
<item>__float__</item>
<item>__oct__</item>
<item>__hex__</item>
<item>__index__</item>
<item>__round__</item>
<item>__trunc__</item>
<item>__floor__</item>
<item>__ceil__</item>
<item>__coerce__</item>
<item>__enter__</item>
<item>__exit__</item>
<item>__match_args__</item>
<item>__bytes__</item>
<item>__format__</item>
<item>__next__</item>
<item>__dir__</item>
<item>__await__</item>
<item>__aiter__</item>
<item>__anext__</item>
<item>__aenter__</item>
<item>__aexit__</item>
<item>__slots__</item>
<item>__init_subclass__</item>
<item>__set_name__</item>
<item>__prepare__</item>
<item>__instancecheck__</item>
<item>__subclasscheck__</item>
<item>__class_getitem__</item>
</list>
<list name="exceptions">
<!--
Exceptions list resources used:
- http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy
- http://docs.python.org/3.10/library/exceptions.html#exception-hierarchy
-->
<item>ArithmeticError</item>
<item>AssertionError</item>
<item>AttributeError</item>
<item>BaseException</item>
<item>BlockingIOError</item>
<item>BrokenPipeError</item>
<item>BufferError</item>
<item>BytesWarning</item>
<item>ChildProcessError</item>
<item>ConnectionAbortedError</item>
<item>ConnectionError</item>
<item>ConnectionRefusedError</item>
<item>ConnectionResetError</item>
<item>DeprecationWarning</item>
<item>EnvironmentError</item>
<item>EOFError</item>
<item>EncodingWarning</item>
<item>Exception</item>
<item>FileExistsError</item>
<item>FileNotFoundError</item>
<item>FloatingPointError</item>
<item>FutureWarning</item>
<item>GeneratorExit</item>
<item>ImportError</item>
<item>ImportWarning</item>
<item>IndentationError</item>
<item>IndexError</item>
<item>InterruptedError</item>
<item>IOError</item>
<item>IsADirectoryError</item>
<item>KeyboardInterrupt</item>
<item>KeyError</item>
<item>LookupError</item>
<item>MemoryError</item>
<item>ModuleNotFoundError</item>
<item>NameError</item>
<item>NotADirectoryError</item>
<item>NotImplementedError</item>
<item>OSError</item>
<item>OverflowError</item>
<item>PendingDeprecationWarning</item>
<item>PermissionError</item>
<item>ProcessLookupError</item>
<item>RecursionError</item>
<item>ReferenceError</item>
<item>ResourceWarning</item>
<item>RuntimeError</item>
<item>RuntimeWarning</item>
<item>StandardError</item>
<item>StopAsyncIteration</item>
<item>StopIteration</item>
<item>SyntaxError</item>
<item>SyntaxWarning</item>
<item>SystemError</item>
<item>SystemExit</item>
<item>TabError</item>
<item>TimeoutError</item>
<item>TypeError</item>
<item>UnboundLocalError</item>
<item>UnicodeDecodeError</item>
<item>UnicodeEncodeError</item>
<item>UnicodeError</item>
<item>UnicodeTranslateError</item>
<item>UnicodeWarning</item>
<item>UserWarning</item>
<item>ValueError</item>
<item>Warning</item>
<item>WindowsError</item>
<item>ZeroDivisionError</item>
</list>
<contexts>
<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
<DetectSpaces attribute="Normal Text"/>
<keyword attribute="Import" String="import" context="#stay"/>
<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
<keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>
<keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>
<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
<keyword attribute="Extensions" String="bindings" context="#stay"/>
<keyword attribute="Exceptions" String="exceptions" context="#stay"/>
<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
<DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>
<DetectChar attribute="Comment" char="#" context="Hash comment"/>
<IncludeRules context="Number" />
<IncludeRules context="CommentVariants" />
<IncludeRules context="StringVariants" />
<DetectIdentifier attribute="Normal Text"/>
<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
<Detect2Chars attribute="Operator" char=":" char1="=" context="#stay"/>
<AnyChar attribute="Operator" String="+*/%|=;&lt;&gt;!^&amp;~-@" context="#stay"/>
<LineContinue attribute="Operator" context="MultiLineExpr"/>
<Int attribute="Error"/>
</context>
<context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
<DetectSpaces attribute="Normal Text"/>
<IncludeRules context="StringVariants" />
</context>
<!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->
<!-- https://docs.python.org/3/reference/lexical_analysis.html#integer-literals -->
<context name="Number" attribute="Normal Text" lineEndContext="#pop">
<!-- fast path -->
<RegExpr String="&beforeDigit;[0-9]|&beforePointFloat;\.[0-9]" context="AssumeNumber" lookAhead="1"/>
</context>
<context name="AssumeNumber" attribute="Normal Text" lineEndContext="#pop">
<!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->
<RegExpr attribute="Complex" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]" context="CheckSuffixError"/>
<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
<RegExpr attribute="Hex" String="0[xX](?:_?[0-9a-fA-F])+" context="CheckSuffixError"/>
<RegExpr attribute="Binary" String="0[bB](?:_?[01])+" context="CheckSuffixError"/>
<RegExpr attribute="Octal" String="0[oO](?:_?[0-7])+" context="CheckSuffixError"/>
<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
<RegExpr attribute="Float" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|\.&digitPart;)[eE][\+\-]?&digitPart;|&digitPart;\.(?:&digitPart;)?|\.&digitPart;" context="CheckSuffixError"/>
<!-- Decimal: 123 ; 000 -->
<!-- l and L are python2 suffixes -->
<RegExpr attribute="Int" String="(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?" context="CheckSuffixError"/>
</context>
<context name="CheckSuffixError" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
<RegExpr attribute="Error" String="[\w\d]+" context="#pop#pop"/>
</context>
<context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
<DetectSpaces attribute="Normal Text" context="#stay"/>
<WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>
</context>
<context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">
<!--
Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement
( 'match' | 'case' ) expression ':'
exclude:
( 'match' | 'case' ) ( 'if' | 'for' | '.' | ':' | '=' | ',' | ']' | ')' ) ...
-->
<RegExpr attribute="Flow Control Keyword" String="\w++(?=\s+(?!(?:if|for)\b)[\w'&quot;~]|\s*+(?![.:=\]),]|(?:if|for)\b)((?:&string;|[^#;(){}]|\(\)|\((?1)\)|\{\}|\{(\s*+(?:(?:&string;|[a-zA-Z0-9.]++)\s*+:\s*+(?:&string;|[^#;(){},]|\(\)|\((?1)\)|\{\}|\{(?2)\})++,?)*+)\})+?):)|" context="#pop"/>
<DetectIdentifier attribute="Normal Text" context="#pop"/>
</context>
<context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
<DetectSpaces/>
<LineContinue attribute="Normal Text" context="#pop!CheckForStringNext"/>
</context>
<context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
<DetectSpaces/>
<LineContinue attribute="Normal Text" context="#stay"/>
<IncludeRules context="StringVariants"/>
</context>
<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
<context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">
<!-- fast path -->
<RegExpr String="(?:u|r|b|f|ur|fr|rf|br|rb)?['&quot;]" insensitive="true" context="AssumeStringVariants" lookAhead="1"/>
</context>
<context name="AssumeStringVariants" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="String" String="u?'''" insensitive="true" context="#pop!Triple A-string" beginRegion="Triple A-region"/>
<RegExpr attribute="String" String="u?&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>
<RegExpr attribute="String" String="u?'" insensitive="true" context="#pop!Single A-string"/>
<RegExpr attribute="String" String="u?&quot;" insensitive="true" context="#pop!Single Q-string"/>
<RegExpr attribute="Raw String" String="u?r'''" insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
<RegExpr attribute="Raw String" String="u?r&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
<RegExpr attribute="Raw String" String="u?r'" insensitive="true" context="#pop!Raw A-string"/>
<RegExpr attribute="Raw String" String="u?r&quot;" insensitive="true" context="#pop!Raw Q-string"/>
<StringDetect attribute="F-String" String="f'''" insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>
<StringDetect attribute="F-String" String="f&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>
<StringDetect attribute="F-String" String="f'" insensitive="true" context="#pop!Single A-F-String"/>
<StringDetect attribute="F-String" String="f&quot;" insensitive="true" context="#pop!Single Q-F-String"/>
<RegExpr attribute="Raw F-String" String="(?:fr|rf)'''" insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>
<RegExpr attribute="Raw F-String" String="(?:fr|rf)&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>
<RegExpr attribute="Raw F-String" String="(?:fr|rf)'" insensitive="true" context="#pop!Raw A-F-String"/>
<RegExpr attribute="Raw F-String" String="(?:fr|rf)&quot;" insensitive="true" context="#pop!Raw Q-F-String"/>
<StringDetect attribute="B-String" String="b'''" insensitive="true" context="#pop!Triple A-B-String" beginRegion="Triple A-region"/>
<StringDetect attribute="B-String" String="b&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-B-String" beginRegion="Triple Q-region"/>
<StringDetect attribute="B-String" String="b'" insensitive="true" context="#pop!Single A-B-String"/>
<StringDetect attribute="B-String" String="b&quot;" insensitive="true" context="#pop!Single Q-B-String"/>
<RegExpr attribute="Raw B-String" String="(?:br|rb)'''" insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>
<RegExpr attribute="Raw B-String" String="(?:br|rb)&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>
<RegExpr attribute="Raw B-String" String="(?:br|rb)'" insensitive="true" context="#pop!Raw A-B-String"/>
<RegExpr attribute="Raw B-String" String="(?:br|rb)&quot;" insensitive="true" context="#pop!Raw Q-B-String"/>
</context>
<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
<context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay">
<!-- fast path -->
<RegExpr String="(?:u|r|ur)?['&quot;]" insensitive="true" firstNonSpace="true" context="AssumeCommentVariants" lookAhead="1"/>
</context>
<context name="AssumeCommentVariants" attribute="Normal Text" lineEndContext="#stay">
<RegExpr attribute="Comment" String="(?:u?r?)'''" insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
<RegExpr attribute="Comment" String="(?:u?r?)&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
<RegExpr attribute="Comment" String="(?:u?r?)'" insensitive="true" context="#pop!Single A-comment"/>
<RegExpr attribute="Comment" String="(?:u?r?)&quot;" insensitive="true" context="#pop!Single Q-comment"/>
</context>
<context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces/>
<DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>
<IncludeRules context="StringVariants" />
<IncludeRules context="Normal" />
</context>
<context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces/>
<DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>
<IncludeRules context="StringVariants" />
<IncludeRules context="Normal" />
</context>
<context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces/>
<DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/>
<IncludeRules context="StringVariants" />
<IncludeRules context="Normal" />
</context>
<context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">
<!-- A single string/comment reached the end of the line without a \ line escape -->
<!-- We set the following line (or part of it) to the "Error" attribute so that this error is easier to spot -->
<RegExpr attribute="Error" String="^(\s{4,}|[^[\]()&quot;']{4,}([&quot;'].*)?)" context="#pop" column="0"/>
</context>
<!-- Comments -->
<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
<DetectSpaces />
<IncludeRules context="##Comments" />
<DetectIdentifier/>
</context>
<context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces/>
<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>
<IncludeRules context="##Comments" />
<DetectIdentifier/>
<IncludeRules context="stringescape"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces/>
<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
<IncludeRules context="##Comments" />
<DetectIdentifier/>
<IncludeRules context="stringescape"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces/>
<DetectChar attribute="Comment" char="'" context="#pop"/>
<IncludeRules context="##Comments" />
<DetectIdentifier/>
<IncludeRules context="stringescape"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces/>
<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
<IncludeRules context="##Comments" />
<DetectIdentifier/>
<IncludeRules context="stringescape"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<!-- Strings -->
<!-- format characters -->
<context name="stringformat" attribute="String Substitution" lineEndContext="#stay">
<RegExpr attribute="String Substitution" String="&strsubstitution_py2;|&strsubstitution_py3;" context="#stay"/>
<Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" />
<Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" />
</context>
<!-- escape characters -->
<context name="stringescape" attribute="String Char" lineEndContext="#stay">
<!-- As this highlighting style is for both, Python 2 and 3,
we do not know if a normal string is “unicode” or not. So we
-->
<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/>
</context>
<!-- escape characters -->
<context name="bytesescape" attribute="String Char" lineEndContext="#stay">
<!-- As this highlighting style is for both, Python 2 and 3,
we do not know if a normal string is “unicode” or not. So we
-->
<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}" context="#stay"/>
</context>
<!-- f-literals -->
<context name="stringinterpolation" attribute="F-String" lineEndContext="#stay">
<Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/>
<DetectChar attribute="String Substitution" char="{" context="String Interpolation"/>
<Detect2Chars attribute="String Char" char="}" char1="}" context="#stay"/>
<DetectChar attribute="Error" char="}" context="#stay"/>
</context>
<context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">
<DetectChar attribute="Error" char="\" context="#pop"/>
<!-- format specifiers: [[fill]align][sign][#][0][minimumwidth][.precision][type] -->
<RegExpr attribute="String Substitution" String="(?:![rsa])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#pop"/>
<IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->
</context>
<!--
It follows a Binary tree of string kinds (not even touching byte literals).
The levels are:
1. triple- vs. single-quoted
2. apostrophe vs. quotation mark
3. static vs. interpolated (f-literal)
4. escaped vs. raw
Adding byte literals wouldnt make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals
-->
<!-- Triple-quoted A-strings -->
<context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringformat"/>
<StringDetect attribute="String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="Raw String"/>
<DetectIdentifier attribute="Raw String"/>
<Detect2Chars attribute="Raw String" char="\" char1="'"/>
<Detect2Chars attribute="Raw String" char="\" char1="\"/>
<IncludeRules context="stringformat"/>
<StringDetect attribute="Raw String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
</context>
<context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="F-String"/>
<DetectIdentifier attribute="F-String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringinterpolation"/>
<StringDetect attribute="F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="Raw F-String"/>
<DetectIdentifier attribute="Raw F-String"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
<IncludeRules context="stringinterpolation"/>
<StringDetect attribute="Raw F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
</context>
<context name="Triple A-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|'(?!''))++"/>
<IncludeRules context="bytesescape"/>
<StringDetect attribute="B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
<LineContinue attribute="String Char" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
<context name="Raw Triple A-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?|'(?!''))++"/>
<StringDetect attribute="Raw B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
<RegExpr attribute="Error" String="."/>
</context>
<!-- Triple-quoted Q-strings -->
<context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringformat"/>
<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="Raw String"/>
<DetectIdentifier attribute="Raw String"/>
<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
<Detect2Chars attribute="Raw String" char="\" char1="\"/>
<IncludeRules context="stringformat"/>
<StringDetect attribute="Raw String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
</context>
<context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="F-String"/>
<DetectIdentifier attribute="F-String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringinterpolation"/>
<StringDetect attribute="F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<DetectSpaces attribute="Raw F-String"/>
<DetectIdentifier attribute="Raw F-String"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
<IncludeRules context="stringinterpolation"/>
<StringDetect attribute="Raw F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
</context>
<context name="Triple Q-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|&quot;(?!&quot;&quot;))++"/>
<IncludeRules context="bytesescape"/>
<StringDetect attribute="B-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
<LineContinue attribute="String Char" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
<context name="Raw Triple Q-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.?|&quot;(?!&quot;&quot;))++"/>
<StringDetect attribute="Raw B-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
<RegExpr attribute="Error" String="."/>
</context>
<!-- Single-quoted A-strings -->
<context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringformat"/>
<DetectChar attribute="String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="Raw String"/>
<DetectIdentifier attribute="Raw String"/>
<Detect2Chars attribute="Raw String" char="\" char1="'"/>
<Detect2Chars attribute="Raw String" char="\" char1="\"/>
<IncludeRules context="stringformat"/>
<DetectChar attribute="Raw String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="Raw String" context="#stay"/>
</context>
<context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="F-String"/>
<DetectIdentifier attribute="F-String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringinterpolation"/>
<DetectChar attribute="F-String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="Raw F-String"/>
<DetectIdentifier attribute="Raw F-String"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
<IncludeRules context="stringinterpolation"/>
<DetectChar attribute="Raw F-String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="Raw F-String" context="#stay"/>
</context>
<context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>
<IncludeRules context="bytesescape"/>
<DetectChar attribute="B-String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
<context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/>
<DetectChar attribute="Raw B-String" char="'" context="#pop!#CheckForString"/>
<LineContinue attribute="Raw B-String" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
<!-- Single-quoted Q-strings -->
<context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="String"/>
<DetectIdentifier attribute="String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringformat"/>
<DetectChar attribute="String" char="&quot;" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="Raw String"/>
<DetectIdentifier attribute="Raw String"/>
<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
<Detect2Chars attribute="Raw String" char="\" char1="\"/>
<IncludeRules context="stringformat"/>
<DetectChar attribute="Raw String" char="&quot;" context="#pop!#CheckForString"/>
<LineContinue attribute="Raw String" context="#stay"/>
</context>
<context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="F-String"/>
<DetectIdentifier attribute="F-String"/>
<IncludeRules context="stringescape"/>
<IncludeRules context="stringinterpolation"/>
<DetectChar attribute="F-String" char="&quot;" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
</context>
<context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
<DetectSpaces attribute="Raw F-String"/>
<DetectIdentifier attribute="Raw F-String"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
<IncludeRules context="stringinterpolation"/>
<DetectChar attribute="Raw F-String" char="&quot;" context="#pop!#CheckForString"/>
<LineContinue attribute="Raw F-String" context="#stay"/>
</context>
<context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>
<IncludeRules context="bytesescape"/>
<DetectChar attribute="B-String" char="&quot;" context="#pop!#CheckForString"/>
<LineContinue attribute="String Char" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
<context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/>
<DetectChar attribute="Raw B-String" char="&quot;" context="#pop!#CheckForString"/>
<Detect2Chars attribute="Raw B-String" char="\" char1="\"/>
<LineContinue attribute="Raw B-String" context="#stay"/>
<RegExpr attribute="Error" String="."/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
<itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
<itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
<itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>
<itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>
<itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>
<itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/>
<itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/>
<itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/>
<itemData name="Import" defStyleNum="dsImport" spellChecking="false"/>
<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
<itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>
<itemData name="Comment" defStyleNum="dsComment"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Raw String" defStyleNum="dsVerbatimString"/>
<itemData name="F-String" defStyleNum="dsSpecialString"/>
<itemData name="Raw F-String" defStyleNum="dsVerbatimString"/>
<itemData name="B-String" defStyleNum="dsString" spellChecking="false"/>
<itemData name="Raw B-String" defStyleNum="dsVerbatimString" spellChecking="false"/>
<itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
<itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
<itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/>
<itemData name="Error" defStyleNum="dsError"/>
</itemDatas>
</highlighting>
<general>
<folding indentationsensitive="1" />
<emptyLines>
<emptyLine regexpr="(?:\s+|\s*#.*)"/>
</emptyLines>
<comments>
<comment name="singleLine" start="#" position="afterwhitespace"/>
</comments>
<keywords casesensitive="1" additionalDeliminator="#'"/>
</general>
</language>
<!-- kate: space-indent off; indent-width 2; -->