diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,23 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.10.5
+
+  * Fix regression from 0.10.3 with Haskell highlighting of Char (#120).
+
+  * Update xml syntax definitions from upstream.  Updated
+    syntaxes: abc apache asp bash bibtex boo c changelog clojure
+    cmake commonlisp cs curry d diff djangotemplate doxygen
+    elixir elm email erlang fortran-fixed fortran-free fsharp
+    hamlet haskell haxe html idris ini javascript-react
+    javascript json julia kotlin latex lex lilypond
+    literate-curry literate-haskell makefile markdown
+    mathematica maxima mediawiki metafont modula-2 mustache nasm
+    nim noweb ocaml octave opencl perl powershell prolog pure
+    python r roff ruby rust sed spdx-comments sql-mysql
+    sql-postgresql tcl tcsh toml typescript verilog xml xslt xul
+    yacc yaml.  Not updated: rhtml (causes an error on our test
+    suite), zsh (has a regex we can't parse).
+
 ## 0.10.4.1
 
   * Fixed logic for checking line-end-context (#119).
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.10.4.1
+version:             0.10.5
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
@@ -193,7 +193,6 @@
                        skylighting-core,
                        filepath,
                        text,
-                       safe,
                        binary,
                        directory
   if flag(executable)
diff --git a/xml/abc.xml b/xml/abc.xml
--- a/xml/abc.xml
+++ b/xml/abc.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Andrea Primiani - primiani at dag dot it
  	version1.10 - 12 december 2005 -->
-<language name="ABC" version="7" kateversion="5.0" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
+<language name="ABC" version="8" kateversion="5.0" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
     <highlighting>
         <contexts>
            <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
@@ -23,9 +23,8 @@
 <!-- detects ] if used to close chords -->	    
 	    <DetectChar attribute="Bar" context="#stay" char="]" />
 <!-- detects () for slurs -->
-	    <AnyChar attribute="Slur" context="#stay" String="()" />
 <!-- detects {} for gracings -->
-	    <AnyChar attribute="Slur" context="#stay" String="{}" />
+	    <AnyChar attribute="Slur" context="#stay" String="(){}" />
 <!-- detects W: and w: lyric lines -->	    
 	    <Detect2Chars attribute="Lyrics" context="Lyrics" char="W" char1=":" />
 	    <Detect2Chars attribute="Lyrics" context="Lyrics" char="w" char1=":" />
@@ -58,7 +57,7 @@
 <!-- returns to Normal context at the end of header -->
 	   <context name="Header" attribute="Header" lineEndContext="#stay">
 <!-- the header ends after K: line -->
-		<RegExpr attribute="Header" context="#pop" String="K:.+" endRegion="header" column="0"/>
+		<RegExpr attribute="Header" context="#pop" String="^K:.+" endRegion="header" column="0"/>
 <!-- the single header command ends at the ] char -->
 		<DetectChar attribute="Header" context="#pop" char="]" />
 	   </context>
diff --git a/xml/apache.xml b/xml/apache.xml
--- a/xml/apache.xml
+++ b/xml/apache.xml
@@ -13,7 +13,7 @@
 -->
 
 <language name="Apache Configuration" section="Configuration"
-          version="5" kateversion="5.0"
+          version="6" kateversion="5.0"
           extensions="httpd.conf;httpd2.conf;apache.conf;apache2.conf;.htaccess*;.htpasswd*"
           mimetype=""
           author="Jan Janssen (medhefgo@googlemail.com)" license="LGPL">
@@ -576,8 +576,7 @@
 
  <context name="Alternative Directives" attribute="Other" lineEndContext="#pop">
   <keyword attribute="Alternates" context="#stay" String="Alternates" />
-  <DetectChar attribute="Alternates" context="#stay" char="-" />
-  <DetectChar attribute="Alternates" context="#stay" char="+" />
+  <AnyChar attribute="Alternates" context="#stay" String="-+" />
   <IncludeRules context="Comment Alert" />
  </context>
 
diff --git a/xml/asp.xml b/xml/asp.xml
--- a/xml/asp.xml
+++ b/xml/asp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE  language SYSTEM "language.dtd">
-<language name="ASP" version="8" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
+<language name="ASP" version="9" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
     <highlighting>
         <list name="control structures">
             <item>select</item>
@@ -297,8 +297,7 @@
             <context name="doublequotestring" attribute="String" lineEndContext="#stay">
                 <DetectSpaces />
                 <Detect2Chars attribute="Escape Code" context="#stay" char="&quot;" char1="&quot;" />
-                <RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}" />
-                <RegExpr attribute="Escape Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
+                <RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}|\\x[0-9A-Fa-f]{1,2}" />
                 <DetectChar attribute="String" context="#pop" char="&quot;" />
             </context>
             <context name="singlequotestring" attribute="String" lineEndContext="#stay">
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -30,7 +30,7 @@
         <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
 ]>
 
-<language name="Bash" version="24" kateversion="5.62" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="Bash" version="27" kateversion="5.79" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.nix;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
 
 <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
     Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
@@ -83,13 +83,11 @@
       <item>exit</item>
       <item>fc</item>
       <item>fg</item>
-      <item>getopts</item>
       <item>hash</item>
       <item>help</item>
       <item>history</item>
       <item>jobs</item>
       <item>kill</item>
-      <item>let</item>
       <item>logout</item>
       <item>popd</item>
       <item>printf</item>
@@ -112,12 +110,14 @@
 
     <list name="builtins_var">
       <item>export</item>
-      <item>unset</item>
       <item>declare</item>
-      <item>typeset</item>
+      <item>getopts</item>
+      <item>let</item>
       <item>local</item>
       <item>read</item>
       <item>readonly</item>
+      <item>typeset</item>
+      <item>unset</item>
     </list>
 
     <list name="unixcommands">
@@ -485,7 +485,7 @@
         <!-- handle keywords -->
         <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/>
         <!-- handle commands that have variable names as argument -->
-        <keyword attribute="Builtin" context="VarName" String="builtins_var"/>
+        <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>
         <!-- mark function definitions without function keyword -->
         <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/>
         <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>
@@ -909,18 +909,71 @@
       </context>
 
       <!-- VarName consumes spare variable names and assignments -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthroughContext="NormalOption">
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarName">
+        <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/>
+        <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/>
+        <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/>
+        <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="VarNameArg"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2">
+        <!-- In command arguments, do not allow comments after escaped characters.
+             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+        <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption">
         <DetectChar attribute="Variable" context="Subscript" char="["/>
-        <DetectChar attribute="Variable" context="Assign" char="="/>
+        <DetectChar attribute="Operator" context="Assign" char="="/>
         <DetectChar attribute="Variable" context="AssignArray" char="("/>
+        <DetectIdentifier attribute="Variable" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2">
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption">
+        <DetectChar attribute="Operator" context="#stay" char=":"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay" />
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/>
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs">
+        <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg">
+        <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/>
         <IncludeRules context="CommandArgs"/>
-        <!-- handle command line options -->
-        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+"/>
-        <IncludeRules context="FindRegVarName"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindRegVarName">
-        <RegExpr attribute="Variable" context="#stay" String="&varname;"/>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg">
+        <IncludeRules context="FindRedirection"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr">
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption">
+        <DetectIdentifier attribute="Variable" context="#stay" />
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <AnyChar attribute="Operator" context="#stay" String="+-/%=^:"/>
+        <AnyChar context="Number" String="0123456789" lookAhead="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar attribute="Error" context="#stay" char="#"/>
+        <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
 
       <!-- ProcessSubst handles <(command) and >(command) -->
       <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">
@@ -997,7 +1050,7 @@
 
       <!-- VarBracePrefix called as soon as ${! is encoutered -->
       <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">
-        <RegExpr attribute="Variable" context="#pop!VarBracePrefixSuffix" String="&varname;"/>
+        <DetectIdentifier attribute="Variable" context="#pop!VarBracePrefixSuffix"/>
       </context>
       <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
@@ -1009,7 +1062,9 @@
       <!-- VarBrace is called as soon as ${ or ${# are encoutered -->
       <context attribute="Variable" lineEndContext="#stay" name="VarBrace" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Variable" context="#pop" char="}"/>
-        <RegExpr attribute="Variable" context="#pop!CheckVarAlt" String="&varname;|[*@?$!-]|[0-9]+"/>
+        <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>
+        <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$!-"/>
+        <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator=":#%^,/@{}"/>
       </context>
       <context attribute="Error" lineEndContext="#stay" name="VarError">
         <DetectChar attribute="Variable" context="#pop" char="}"/>
@@ -1028,11 +1083,9 @@
         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^" char1="^"/>
         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="," char1=","/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSub" char=":"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarSubst" char="/"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="^"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char=","/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="%#"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="^,"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarTransformation" char="@"/>
       </context>
 
@@ -1123,14 +1176,12 @@
         <AnyChar attribute="Operator" context="#stay" String="+-!~*/%&lt;>=&amp;^|?:"/>
         <DetectChar attribute="Control" context="#stay" char=","/>
         <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/>
-        <DetectChar context="RegularVariable" char="$" lookAhead="1"/>
-        <IncludeRules context="FindStrings"/>
         <AnyChar context="Number" String="0123456789" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-        <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>
-        <DetectChar attribute="Error" context="#stay" char="#"/>
         <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <IncludeRules context="FindRegVarName"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar attribute="Error" context="#stay" char="#"/>
+        <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>
+        <DetectIdentifier attribute="Variable" context="#stay"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">
         <DetectChar attribute="Normal Text" context="#pop" char=")"/>
diff --git a/xml/bibtex.xml b/xml/bibtex.xml
--- a/xml/bibtex.xml
+++ b/xml/bibtex.xml
@@ -6,7 +6,7 @@
 	  <!ENTITY latexCmd	  	"\\([a-zA-Z@]+|[^ ])">
 	  <!ENTITY refKeyFormat  	"[a-zA-Z0-9_@\\-\\:]+"> <!--taken from kile 2.0.3-->
 	  ]>
-<language name="BibTeX" version="3" kateversion="5.0" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL">
+<language name="BibTeX" version="4" kateversion="5.0" extensions="*.bib" section="Markup" mimetype="text/x-bib" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL">
   <highlighting>
     <list name="kw_entry">
       <item>@article</item> 
@@ -67,8 +67,7 @@
 	      <DetectChar char="{" context="CurlyBracket"/>
 	      <DetectChar char="}" context="#pop" lookAhead="true"/>
 	      <DetectChar char="&quot;"  attribute="Normal Text" context="QuotedText"/>
-	      <DetectChar char="," context="#stay"/>
-	      <DetectChar char="#" context="#stay"/> <!-- the bibtex string concatenate character -->
+	      <AnyChar String=",#" context="#stay"/> <!-- # is the bibtex string concatenate character -->
           <RegExpr String="[0-9]+" context="#stay"/>
           <RegExpr String="&stringVariable;" attribute="String" /> <!-- assume this is a variable created with @String -->
 	      <RegExpr String="." attribute="Error" context="#stay"/> <!--this rule catches all errors-->
diff --git a/xml/boo.xml b/xml/boo.xml
--- a/xml/boo.xml
+++ b/xml/boo.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language>
 <!-- Based on Python syntax highlighting v1.99 by Primoz Anzur, Paul Giannaros, Michael Bueker, Per Wigren -->
 <!-- Also based on boo.lang from gtksourceview -->
-<language name="Boo" version="9" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
+<language name="Boo" version="10" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
 	<highlighting>
 		<list name="namespace">
 			<item>import</item>
@@ -211,29 +211,25 @@
 
 			<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCStringChar attribute="String Char" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
 			</context>
 
 			<context name="Raw Tripple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCStringChar attribute="Raw String" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<StringDetect attribute="String" String="'''" context="#pop" endRegion="Tripple A-region"/>
 			</context>
 
 			<context name="Tripple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCStringChar attribute="String Char" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
 			</context>
 
 			<context name="Raw Tripple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCStringChar attribute="Raw String" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
 			</context>
 
@@ -244,29 +240,25 @@
 
 			<context name="Single A-string" attribute="String" lineEndContext="#stay">
 				<HlCStringChar attribute="String Char" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<DetectChar attribute="String" char="'" context="#pop"/>
 			</context>
 
 			<context name="Single Q-string" attribute="String" lineEndContext="#stay">
 				<HlCStringChar attribute="String Char" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<DetectChar attribute="String" char="&quot;" context="#pop"/>
 			</context>
 
 			<context name="Raw A-string" attribute="Raw String" lineEndContext="#stay">
 				<HlCStringChar attribute="Raw String" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<DetectChar attribute="Raw String" char="'" context="#pop"/>
 			</context>
 
 			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay">
 				<HlCStringChar attribute="Raw String" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%\([a-zA-Z0-9_]+\)[a-zA-Z]" context="#stay"/>
-				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
+				<RegExpr attribute="String Substitution" String="%(\([a-zA-Z0-9_]+\))?[a-zA-Z]" context="#stay"/>
 				<DetectChar attribute="Raw String" char="&quot;" context="#pop"/>
 			</context>
 
diff --git a/xml/c.xml b/xml/c.xml
--- a/xml/c.xml
+++ b/xml/c.xml
@@ -10,7 +10,7 @@
     <!ENTITY pphash "&ispphash;\s*">
 ]>
 <language name="C" section="Sources"
-          version="13" kateversion="5.0"
+          version="14" kateversion="5.0"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -183,8 +183,7 @@
         <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
         <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
 
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;(?:el(?:se|if)|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&ispphash;\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;(?:el(?:se|if)|define|undef|line|error|warning|pragma)|&ispphash;\s+[0-9]+" insensitive="true" firstNonSpace="true" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Include">
diff --git a/xml/changelog.xml b/xml/changelog.xml
--- a/xml/changelog.xml
+++ b/xml/changelog.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="ChangeLog" version="3" kateversion="2.4" section="Other" extensions="ChangeLog" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
+<language name="ChangeLog" version="4" kateversion="2.4" section="Other" extensions="ChangeLog" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
   <highlighting>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectChar attribute="Entry" context="entry" char="*" firstNonSpace="true" />
-        <RegExpr attribute="Date" context="line" String="\d\d\d\d\s*-\s*\d\d\s*-\s*\d\d\s*" column="0"/>
+        <RegExpr attribute="Date" context="line" String="^\d\d\d\d\s*-\s*\d\d\s*-\s*\d\d\s*" column="0"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="line">
         <RegExpr attribute="Name" context="#stay" String="(\w\s*)+"/>
diff --git a/xml/clojure.xml b/xml/clojure.xml
--- a/xml/clojure.xml
+++ b/xml/clojure.xml
@@ -22,7 +22,7 @@
  * Boston, MA  02110-1301, USA.                                       *
  **********************************************************************
  -->
-<language version="14" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
+<language version="15" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
   <highlighting>
     <list name="definitions">
       <item>def</item>
@@ -715,17 +715,14 @@
         <DetectChar attribute="Comment" context="Comment" char=";"/>
         <Detect2Chars attribute="Comment" context="#stay" char="#" char1="_"/>
         <RegExpr attribute="Readermacro" context="#stay" String="#\?@?"/>
-        <RegExpr attribute="Modifier" context="#stay" String="[@~'`][^\s\(\)\{\}\[\]]+"/>
-        <RegExpr attribute="Modifier" context="#stay" String="[^\s&quot;\(\)\{\}\[\]]+#"/>
+        <RegExpr attribute="Modifier" context="#stay" String="[@~'`][^\s\(\)\{\}\[\]]+|[^\s&quot;\(\)\{\}\[\]]+#"/>
         <RegExpr attribute="Modifier2" context="#stay" String="::?[a-zA-Z0-9\-\./]+"/>
         <Detect2Chars attribute="BracketsSet" context="BracketsSet" char="#" char1="{"/>
         <Detect2Chars attribute="BracketsMeta" context="BracketsMeta" char="^" char1="{"/>
         <DetectChar attribute="BracketsMap" context="BracketsMap" char="{"/>
-        <DetectChar attribute="BracketsSquare" context="#stay" char="["/>
-        <DetectChar attribute="BracketsSquare" context="#stay" char="]"/>
-        <RegExpr attribute="Variable" context="#stay" String="#'[^\s\(\)\{\}\[\]]+"/>
+        <AnyChar attribute="BracketsSquare" context="#stay" String="[]"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <RegExpr attribute="Variable" context="#stay" String="%[0-9]*"/>
+        <RegExpr attribute="Variable" context="#stay" String="#'[^\s\(\)\{\}\[\]]+|%[0-9]*"/>
         <keyword attribute="Variable" context="#stay" String="variables"/>
         <keyword attribute="Definition" context="function_decl_documentable" String="documentable_definitions"/>
         <keyword attribute="Definition" context="function_decl" String="definitions"/>
@@ -733,8 +730,7 @@
         <Detect2Chars attribute="Regexpr" context="Regexpr" char="#" char1="&quot;"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <RegExpr attribute="Float" context="#stay" String="[0-9]+/[0-9]+"/>
-        <RegExpr attribute="BaseN" context="#stay" String="0[xX][0-9A-Fa-f]+"/>
-        <RegExpr attribute="BaseN" context="#stay" String="([12]?[0-9]|3[0-6])[rR][0-9a-zA-Z]+"/>
+        <RegExpr attribute="BaseN" context="#stay" String="0[xX][0-9A-Fa-f]+|([12]?[0-9]|3[0-6])[rR][0-9a-zA-Z]+"/>
         <RegExpr attribute="Error" context="#stay" String="(3[7-9]|[0-9]*[4-9][0-9]+)[rR][0-9a-zA-Z]+"/>
         <Float attribute="Float" context="Float Suffixes"/>
         <Int attribute="Decimal" context="Int Suffixes"/>
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -14,9 +14,15 @@
     SPDX-License-Identifier: LGPL-2.0-or-later
  -->
 
+<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
+  cd data/generators
+  # increase version of cmake.xml.tpl then
+  ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
+-->
+
 <language
     name="CMake"
-    version="29"
+    version="31"
     kateversion="5.0"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -3846,64 +3852,19 @@
         <IncludeRules context="User Function Args" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More global-properties">
-        <RegExpr attribute="Property" context="#stay" String="\bFeatureSummary_&id_re;_DESCRIPTION\b" />
+        <RegExpr attribute="Property" context="#stay" String="\b(?:FeatureSummary_&id_re;_DESCRIPTION)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More directory-properties">
-        <RegExpr attribute="Property" context="#stay" String="\bINTERPROCEDURAL_OPTIMIZATION_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_SECTION_POST_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_SECTION_PRE_&id_re;\b" />
+        <RegExpr attribute="Property" context="#stay" String="\b(?:VS_GLOBAL_SECTION_PRE_&id_re;|VS_GLOBAL_SECTION_POST_&id_re;|INTERPROCEDURAL_OPTIMIZATION_&id_re;)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties">
-        <RegExpr attribute="Property" context="#stay" String="\bARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bARCHIVE_OUTPUT_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bCOMPILE_PDB_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bCOMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_OUTPUT_NAME\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_POSTFIX\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bEXCLUDE_FROM_DEFAULT_BUILD_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bFRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_IMPLIB_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LIBNAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_DEPENDENT_LIBRARIES_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_LANGUAGES_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_LIBRARIES_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LINK_INTERFACE_MULTIPLICITY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_LOCATION_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_NO_SONAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_OBJECTS_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bIMPORTED_SONAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bINTERPROCEDURAL_OPTIMIZATION_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CLANG_TIDY\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_COMPILER_LAUNCHER\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CPPCHECK\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_CPPLINT\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_INCLUDE_WHAT_YOU_USE\b" />
-        <RegExpr attribute="Property" context="#stay" String="\b&id_re;_VISIBILITY_PRESET\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLIBRARY_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLIBRARY_OUTPUT_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLINK_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLINK_INTERFACE_LIBRARIES_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLINK_INTERFACE_MULTIPLICITY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bLOCATION_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bMAP_IMPORTED_CONFIG_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bOSX_ARCHITECTURES_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bOUTPUT_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bPDB_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bPDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bRUNTIME_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bRUNTIME_OUTPUT_NAME_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bSTATIC_LIBRARY_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCE_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_DOTNET_REFERENCEPROP_&id_re;_TAG_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_GLOBAL_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bVS_SOURCE_SETTINGS_&id_re;\b" />
-        <RegExpr attribute="Property" context="#stay" String="\bXCODE_ATTRIBUTE_&id_re;\b" />
+        <RegExpr attribute="Property" context="#stay" String="\b(?:XCODE_ATTRIBUTE_&id_re;|VS_SOURCE_SETTINGS_&id_re;|VS_GLOBAL_&id_re;|VS_DOTNET_REFERENCE_&id_re;|VS_DOTNET_REFERENCEPROP_&id_re;_TAG_&id_re;|STATIC_LIBRARY_FLAGS_&id_re;|RUNTIME_OUTPUT_NAME_&id_re;|RUNTIME_OUTPUT_DIRECTORY_&id_re;|PDB_OUTPUT_DIRECTORY_&id_re;|PDB_NAME_&id_re;|OUTPUT_NAME_&id_re;|OSX_ARCHITECTURES_&id_re;|MAP_IMPORTED_CONFIG_&id_re;|LOCATION_&id_re;|LINK_INTERFACE_MULTIPLICITY_&id_re;|LINK_INTERFACE_LIBRARIES_&id_re;|LINK_FLAGS_&id_re;|LIBRARY_OUTPUT_NAME_&id_re;|LIBRARY_OUTPUT_DIRECTORY_&id_re;|INTERPROCEDURAL_OPTIMIZATION_&id_re;|IMPORTED_SONAME_&id_re;|IMPORTED_OBJECTS_&id_re;|IMPORTED_NO_SONAME_&id_re;|IMPORTED_LOCATION_&id_re;|IMPORTED_LINK_INTERFACE_MULTIPLICITY_&id_re;|IMPORTED_LINK_INTERFACE_LIBRARIES_&id_re;|IMPORTED_LINK_INTERFACE_LANGUAGES_&id_re;|IMPORTED_LINK_DEPENDENT_LIBRARIES_&id_re;|IMPORTED_LIBNAME_&id_re;|IMPORTED_IMPLIB_&id_re;|FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|EXCLUDE_FROM_DEFAULT_BUILD_&id_re;|COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|COMPILE_PDB_NAME_&id_re;|ARCHIVE_OUTPUT_NAME_&id_re;|ARCHIVE_OUTPUT_DIRECTORY_&id_re;|&id_re;_VISIBILITY_PRESET|&id_re;_POSTFIX|&id_re;_OUTPUT_NAME|&id_re;_INCLUDE_WHAT_YOU_USE|&id_re;_CPPLINT|&id_re;_CPPCHECK|&id_re;_COMPILER_LAUNCHER|&id_re;_CLANG_TIDY)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties">
-        <RegExpr attribute="Property" context="#stay" String="\bVS_CSHARP_&id_re;\b" />
+        <RegExpr attribute="Property" context="#stay" String="\b(?:VS_CSHARP_&id_re;)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="EndCmdPop">
@@ -3932,212 +3893,8 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">
-        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ABI\b" />
-        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ARCHITECTURE_ID\b" />
-        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_VERSION_INTERNAL\b" />
-        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\bCMAKE_&id_re;_PLATFORM_ID\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_BINARY_DIR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_DESCRIPTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_HOMEPAGE_URL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_SOURCE_DIR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_MAJOR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_MINOR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_PATCH\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_TWEAK\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_ROOT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;__TRYRUN_OUTPUT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_CONSIDERED_CONFIGS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_CONSIDERED_VERSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_COMPONENTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_QUIETLY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_REQUIRED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_REQUIRED_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_COUNT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_EXACT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_MAJOR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_MINOR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_PATCH\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FIND_VERSION_TWEAK\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_FOUND\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_INCLUDE_DIRS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARY_DIRS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_COUNT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_STRING\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_KEYWORDS_MISSING_VALUES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_UNPARSED_ARGUMENTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_MODULE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bARGV[0-9]+\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_POSTFIX\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_APPEND\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_CREATE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ARCHIVE_FINISH\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CLANG_TIDY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_AR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_ID\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LAUNCHER\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LOADED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_RANLIB\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_TARGET\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILE_OBJECT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CPPCHECK\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CPPLINT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_SHARED_LIBRARY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_SHARED_MODULE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_CREATE_STATIC_LIBRARY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_DEBUG\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_DEBUG_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_MINSIZEREL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_MINSIZEREL_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELEASE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELEASE_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELWITHDEBINFO\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IGNORE_EXTENSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_INCLUDE_WHAT_YOU_USE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LIBRARY_ARCHITECTURE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_PREFERENCE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_WRAPPER_FLAG\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_LINK_EXECUTABLE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_OUTPUT_EXTENSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_ID\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIMULATE_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SIZEOF_DATA_PTR\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_SOURCE_FILE_EXTENSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_LIBRARIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_VISIBILITY_PRESET\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARGV[0-9]+\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_DISABLE_FIND_PACKAGE_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MAP_IMPORTED_CONFIG_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MATCH_[0-9]+\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_DEFAULT_CMP[0-9]{4}\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_POLICY_WARNING_CMP[0-9]{4}\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_PROJECT_&id_re;_INCLUDE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_STATIC_LINKER_FLAGS_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_XCODE_ATTRIBUTE_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_&id_re;_COMPONENT_INSTALL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_ARCHIVE_&id_re;_FILE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_BINARY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DEPENDS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DESCRIPTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DISABLED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DISPLAY_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_GROUP\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_HIDDEN\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_REQUIRED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DESCRIPTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_FILE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_BREAKS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_REPLACES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SECTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SOURCE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DMG_&id_re;_FILE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NSIS_&id_re;_INSTALL_DIRECTORY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_AUTHORS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_ICONURL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_LICENSEURL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_OWNERS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_TAGS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_TITLE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_&id_re;_PACKAGE_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_POSTFLIGHT_&id_re;_SCRIPT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_PREFLIGHT_&id_re;_SCRIPT\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_GROUP\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEFAULT_USER\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_DEBUGINFO_PACKAGE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_FILE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOPROV\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOREQ\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_CONFLICTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_DESCRIPTION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_GROUP\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_NAME\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_OBSOLETES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_PREFIX\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_PROVIDES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_SUGGESTS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_SUMMARY\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_PACKAGE_URL\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_USER_FILELIST\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_&id_re;_USER_BINARY_SPECFILE\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_&id_re;_EXTENSIONS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_&id_re;_EXTRA_FLAGS\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_WIX_PROPERTY_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bDOXYGEN_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bExternalData_CUSTOM_SCRIPT_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bExternalData_URL_ALGO_&id_re;_&id_re;\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bSWIG_MODULE_&id_re;_EXTRA_DEPS\b" />
+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&id_re;_PLATFORM_ID|CMAKE_&id_re;_COMPILER_VERSION_INTERNAL|CMAKE_&id_re;_COMPILER_ARCHITECTURE_ID|CMAKE_&id_re;_COMPILER_ABI)\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&id_re;_EXTRA_DEPS|ExternalData_URL_ALGO_&id_re;_&id_re;|ExternalData_CUSTOM_SCRIPT_&id_re;|DOXYGEN_&id_re;|CPACK_WIX_PROPERTY_&id_re;|CPACK_WIX_&id_re;_EXTRA_FLAGS|CPACK_WIX_&id_re;_EXTENSIONS|CPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&id_re;_USER_FILELIST|CPACK_RPM_&id_re;_USER_BINARY_SPECFILE|CPACK_RPM_&id_re;_PACKAGE_URL|CPACK_RPM_&id_re;_PACKAGE_SUMMARY|CPACK_RPM_&id_re;_PACKAGE_SUGGESTS|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&id_re;_PACKAGE_REQUIRES|CPACK_RPM_&id_re;_PACKAGE_PROVIDES|CPACK_RPM_&id_re;_PACKAGE_PREFIX|CPACK_RPM_&id_re;_PACKAGE_OBSOLETES|CPACK_RPM_&id_re;_PACKAGE_NAME|CPACK_RPM_&id_re;_PACKAGE_GROUP|CPACK_RPM_&id_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&id_re;_PACKAGE_CONFLICTS|CPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&id_re;_PACKAGE_AUTOREQ|CPACK_RPM_&id_re;_PACKAGE_AUTOPROV|CPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&id_re;_FILE_NAME|CPACK_RPM_&id_re;_DEFAULT_USER|CPACK_RPM_&id_re;_DEFAULT_GROUP|CPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&id_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&id_re;_SCRIPT|CPACK_POSTFLIGHT_&id_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_VERSION|CPACK_NUGET_&id_re;_PACKAGE_TITLE|CPACK_NUGET_&id_re;_PACKAGE_TAGS|CPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&id_re;_PACKAGE_OWNERS|CPACK_NUGET_&id_re;_PACKAGE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&id_re;_PACKAGE_ICONURL|CPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&id_re;_PACKAGE_AUTHORS|CPACK_NSIS_&id_re;_INSTALL_DIRECTORY|CPACK_DMG_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&id_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&id_re;_PACKAGE_SECTION|CPACK_DEBIAN_&id_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&id_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_DESCRIPTION|CPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&id_re;_REQUIRED|CPACK_COMPONENT_&id_re;_HIDDEN|CPACK_COMPONENT_&id_re;_GROUP|CPACK_COMPONENT_&id_re;_DISPLAY_NAME|CPACK_COMPONENT_&id_re;_DISABLED|CPACK_COMPONENT_&id_re;_DESCRIPTION|CPACK_COMPONENT_&id_re;_DEPENDS|CPACK_BINARY_&id_re;|CPACK_ARCHIVE_&id_re;_FILE_NAME|CPACK_&id_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&id_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;|CMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&id_re;|CMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&id_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;|CMAKE_PROJECT_&id_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&id_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&id_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|CMAKE_EXE_LINKER_FLAGS_&id_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&id_re;|CMAKE_DISABLE_FIND_PACKAGE_&id_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;|CMAKE_&id_re;_VISIBILITY_PRESET|CMAKE_&id_re;_STANDARD_LIBRARIES|CMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&id_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&id_re;_SIZEOF_DATA_PTR|CMAKE_&id_re;_SIMULATE_VERSION|CMAKE_&id_re;_SIMULATE_ID|CMAKE_&id_re;_POSTFIX|CMAKE_&id_re;_OUTPUT_EXTENSION|CMAKE_&id_re;_LINK_EXECUTABLE|CMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&id_re;_LINKER_WRAPPER_FLAG|CMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&id_re;_LINKER_PREFERENCE|CMAKE_&id_re;_LIBRARY_ARCHITECTURE|CMAKE_&id_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&id_re;_IGNORE_EXTENSIONS|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_FLAGS_RELEASE_INIT|CMAKE_&id_re;_FLAGS_RELEASE|CMAKE_&id_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&id_re;_FLAGS_MINSIZEREL|CMAKE_&id_re;_FLAGS_INIT|CMAKE_&id_re;_FLAGS_DEBUG_INIT|CMAKE_&id_re;_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS|CMAKE_&id_re;_CREATE_STATIC_LIBRARY|CMAKE_&id_re;_CREATE_SHARED_MODULE|CMAKE_&id_re;_CREATE_SHARED_LIBRARY|CMAKE_&id_re;_CPPLINT|CMAKE_&id_re;_CPPCHECK|CMAKE_&id_re;_COMPILE_OBJECT|CMAKE_&id_re;_COMPILER_VERSION|CMAKE_&id_re;_COMPILER_TARGET|CMAKE_&id_re;_COMPILER_RANLIB|CMAKE_&id_re;_COMPILER_LOADED|CMAKE_&id_re;_COMPILER_LAUNCHER|CMAKE_&id_re;_COMPILER_ID|CMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&id_re;_COMPILER_AR|CMAKE_&id_re;_COMPILER|CMAKE_&id_re;_CLANG_TIDY|CMAKE_&id_re;_ARCHIVE_FINISH|CMAKE_&id_re;_ARCHIVE_CREATE|CMAKE_&id_re;_ARCHIVE_APPEND|CMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE|ARGV[0-9]+|&id_re;__TRYRUN_OUTPUT|&id_re;_VERSION_TWEAK|&id_re;_VERSION_STRING|&id_re;_VERSION_PATCH|&id_re;_VERSION_MINOR|&id_re;_VERSION_MAJOR|&id_re;_VERSION_COUNT|&id_re;_VERSION|&id_re;_UNPARSED_ARGUMENTS|&id_re;_SOURCE_DIR|&id_re;_ROOT|&id_re;_MODULE_NAME|&id_re;_LIBRARY_DIRS|&id_re;_LIBRARIES|&id_re;_KEYWORDS_MISSING_VALUES|&id_re;_INCLUDE_DIRS|&id_re;_HOMEPAGE_URL|&id_re;_FOUND|&id_re;_FIND_VERSION_TWEAK|&id_re;_FIND_VERSION_PATCH|&id_re;_FIND_VERSION_MINOR|&id_re;_FIND_VERSION_MAJOR|&id_re;_FIND_VERSION_EXACT|&id_re;_FIND_VERSION_COUNT|&id_re;_FIND_VERSION|&id_re;_FIND_REQUIRED_&id_re;|&id_re;_FIND_REQUIRED|&id_re;_FIND_QUIETLY|&id_re;_FIND_COMPONENTS|&id_re;_DESCRIPTION|&id_re;_CONSIDERED_VERSIONS|&id_re;_CONSIDERED_CONFIGS|&id_re;_BINARY_DIR)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
@@ -4149,11 +3906,7 @@
 
       <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
         <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_DIR\b" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_ROOT\b" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;\b" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;FLAGS\b" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bCMAKE_&id_re;_COMPILER_LAUNCHER\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b(?:CMAKE_&id_re;_COMPILER_LAUNCHER|ASM&id_re;FLAGS|ASM&id_re;|&id_re;_ROOT|&id_re;_DIR)\b" />
         <DetectIdentifier />
         <IncludeRules context="Detect Variable Substitutions" />
         <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />
diff --git a/xml/commonlisp.xml b/xml/commonlisp.xml
--- a/xml/commonlisp.xml
+++ b/xml/commonlisp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="9" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
+<language version="10" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
   <highlighting>
     <list name="symbols">
       <item>&lt;</item>
@@ -1116,8 +1116,7 @@
         <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
         <DetectChar attribute="Comment" context="Comment" char=";"/>
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="BlockComment"/>
-        <DetectChar attribute="Brackets" context="#stay" char="("/>
-        <DetectChar attribute="Brackets" context="#stay" char=")"/>
+        <AnyChar attribute="Brackets" context="#stay" String="()"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Operator" context="#stay" String="symbols"/>
         <keyword attribute="Modifier" context="#stay" String="modifiers"/>
diff --git a/xml/cs.xml b/xml/cs.xml
--- a/xml/cs.xml
+++ b/xml/cs.xml
@@ -1,5 +1,5 @@
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="C#" version="10" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
+<language name="C#" version="11" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
   <highlighting>
     <list name="keywords">
       <item>abstract</item>
@@ -104,11 +104,8 @@
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bpartial(?=\s+(?:class|struct|interface|void))"/>
         <RegExpr attribute="Data Type" context="#stay" String="\bvar(?=\s+\w+)"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\byield(?=\s+(?:return|break))"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b(?:set|get)(?=\s*[;{])"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bglobal(?=\s*::\s*\w+)"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(partial(?=\s+(?:class|struct|interface|void))|yield(?=\s+(?:return|break))|(?:set|get)(?=\s*[;{])|global(?=\s*::\s*\w+))"/>
         <StringDetect attribute="Decimal" context="Decimal" String="#region" beginRegion="Region1"/>
         <StringDetect attribute="Decimal" context="Decimal" String="#endregion" endRegion="Region1"/>
         <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
diff --git a/xml/curry.xml b/xml/curry.xml
--- a/xml/curry.xml
+++ b/xml/curry.xml
@@ -30,7 +30,7 @@
   <!-- dashes introducing a currydoc comment -->
   <!ENTITY currydoc    "---" >
 ]>
-<language name="Curry" version="3" kateversion="5.0"
+<language name="Curry" version="4" kateversion="5.0"
           section="Sources" extensions="*.curry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
           indenter="haskell">
@@ -266,11 +266,7 @@
     <!-- Character escape sequence -->
     <context name="CharEscape" attribute="Char" lineEndContext="#pop!CharSyntaxError" >
       <AnyChar attribute="Char"         context="#pop!CharEnd" String="&escSeqChar;"   />
-      <RegExpr attribute="Char"         context="#pop!CharEnd" String="o&octal;"       />
-      <RegExpr attribute="Char"         context="#pop!CharEnd" String="&decimal;"      />
-      <RegExpr attribute="Char"         context="#pop!CharEnd" String="x&hexadecimal;" />
-      <RegExpr attribute="Char"         context="#pop!CharEnd" String="&escSeqCntrl;"  />
-      <RegExpr attribute="Char"         context="#pop!CharEnd" String="&escSeqAscii;"  />
+      <RegExpr attribute="Char"         context="#pop!CharEnd" String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
       <RegExpr attribute="Syntax Error" context="#pop!CharEnd" String="."              />
     </context>
 
@@ -295,11 +291,7 @@
     <!-- String escape sequence -->
     <context name="StringEscape" attribute="String" lineEndContext="StringGap" >
       <AnyChar      attribute="String Escape"  context="#pop"      String="&escSeqChar;&amp;" />
-      <RegExpr      attribute="String Escape"  context="#pop"      String="o&octal;"          />
-      <RegExpr      attribute="String Escape"  context="#pop"      String="&decimal;"         />
-      <RegExpr      attribute="String Escape"  context="#pop"      String="x&hexadecimal;"    />
-      <RegExpr      attribute="String Escape"  context="#pop"      String="&escSeqCntrl;"     />
-      <RegExpr      attribute="String Escape"  context="#pop"      String="&escSeqAscii;"     />
+      <RegExpr      attribute="String Escape"  context="#pop"      String="o&octal;|&decimal;|x&hexadecimal;|&escSeqCntrl;|&escSeqAscii;" />
       <DetectSpaces attribute="String Escape"  context="StringGap"                            />
       <RegExpr      attribute="Syntax Error"   context="#pop"      String="."                 />
     </context>
diff --git a/xml/d.xml b/xml/d.xml
--- a/xml/d.xml
+++ b/xml/d.xml
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language SYSTEM "language.dtd" [
+  <!ENTITY hexfloat "0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?">
+  <!-- Float starting with a dot is matched in main context -->
+  <!-- All floats except integers -->
+  <!-- RegExpr is branched rather than using look aheads for efficiency at the expense of extra length -->
+  <!ENTITY float "\d[_\d]*(?:\.(?!\.)[_\d]*(?:[eE][-+]?\d[_\d]*)?[fFL]?i?|[eE][-+]?\d[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)">
+]>
 <!--
   ========================================================================
 
@@ -99,7 +105,7 @@
    ========================================================================
 -->
 
-<language name="D" version="10" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
+<language name="D" version="11" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
   <highlighting>
     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->
     <list name="userkeywords">
@@ -431,12 +437,10 @@
           
           <!-- detect whether scope, in, out, etc. are used as attributes or statements (etc.) -->
           <!-- rules cannot match across newlines unfortunately -->
-          <RegExpr String="in\s*(?=\{)"    attribute="Statement"       context="#stay"     />
-          <RegExpr String="out\s*(?=(\(([a-zA-Z_][\w_]*)?\)\s*)?\{)" attribute="Statement" context="#stay" />
+          <RegExpr String="in\s*(?=\{)|out\s*(?=(\(([a-zA-Z_][\w_]*)?\)\s*)?\{)" attribute="Statement" context="#stay" />
           <RegExpr String="scope\s*(?=\()" attribute="Statement"       context="Scope"     />
           <RegExpr String="import\s*(?=\()" attribute="Expression"     context="#stay"     />
-          <RegExpr String="function\s*(?=\()" attribute="Declarator"   context="#stay"     />
-          <RegExpr String="delegate\s*(?=\()" attribute="Declarator"   context="#stay"     />
+          <RegExpr String="(function|delegate)\s*(?=\()" attribute="Declarator"   context="#stay"     />
           
           <keyword String="statements"      attribute="Statement"      context="#stay"     />
           <keyword String="attributes"      attribute="Attribute"      context="#stay"     />
@@ -476,11 +480,7 @@
       <context name="NumberLiteral" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
         <!-- Float literals -->
         <!-- Floats must be matched before Binary|Octal|Hex|DecInteger -->
-        <RegExpr attribute="Float" context="#pop" String="0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?"/>
-        <!-- Float starting with a dot is matched in main context -->
-        <!-- All floats except integers -->
-        <!-- RegExpr is branched rather than using look aheads for efficiency at the expense of extra length -->
-        <RegExpr attribute="Float" context="#pop" String="\d[_\d]*(?:\.(?!\.)[_\d]*(?:[eE][-+]?\d[_\d]*)?[fFL]?i?|[eE][-+]?\d[_\d]*[fFL]?i?|[fF]i?|[fFL]?i)"/>
+        <RegExpr attribute="Float" context="#pop" String="&hexfloat;|&float;"/>
         
         <!-- Binary|Octal|Hex|DecInteger -->
         <!-- Common, optional suffix: (L[uU]?|[uU]L?)? -->
diff --git a/xml/diff.xml b/xml/diff.xml
--- a/xml/diff.xml
+++ b/xml/diff.xml
@@ -12,7 +12,7 @@
     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
      Fixed folding.
 -->
-<language name="Diff" version="6" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
+<language name="Diff" version="7" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
 
   <highlighting>
 
@@ -21,8 +21,8 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal" fallthroughContext="AttrNormal">
         <Detect2Chars attribute="Header" context="AttrHeader_Chunk" char="@" char1="@" beginRegion="chunk" column="0"/>
         <AnyChar attribute="Header" context="AttrHeader_Chunk" String="0123456789" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="Header" context="RChunk" String="\*+$" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="File" context="#stay" String="Only in .*:.*$" column="0"/>
+        <RegExpr attribute="Header" context="RChunk" String="^\*+$" beginRegion="chunk" column="0"/>
+        <RegExpr attribute="File" context="#stay" String="^Only in .*:.*$" column="0"/>
         <StringDetect attribute="File" context="AttrFile_RFile" String="diff" beginRegion="chunk" column="0"/>
         <StringDetect attribute="File" context="AttrFile" String="====" column="0"/>
         <StringDetect attribute="File" context="AttrFile_File" String="***" beginRegion="chunk" column="0"/>
@@ -43,8 +43,8 @@
         <IncludeRules context="FindDiff"/>
         <Detect2Chars attribute="Header" context="AttrHeader_ChunkInFile" char="@" char1="@" beginRegion="chunk" column="0"/>
         <AnyChar attribute="Header" context="AttrHeader_ChunkInFile" String="0123456789" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" column="0"/>
+        <RegExpr attribute="Header" context="RChunkInFile" String="^\*+$" beginRegion="chunk" column="0"/>
+        <RegExpr attribute="File" context="#pop" String="^&file;" endRegion="chunk" column="0"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
@@ -60,27 +60,27 @@
         <Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>
         <AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>
         <StringDetect attribute="Normal Text" context="#pop!AttrNormal" String="Index:" endRegion="chunk" column="0"/>
-        <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>
+        <RegExpr attribute="File" context="#pop" String="^&file;" endRegion="chunk" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
       <!-- block contexts (diff -r) -->
       <context attribute="Normal Text" lineEndContext="#stay" name="RFile" fallthroughContext="AttrNormal">
-        <RegExpr attribute="File" context="#pop" String="(diff|Only in .*:).*$" endRegion="chunk" lookAhead="true" column="0"/>
-        <RegExpr attribute="Header" context="#stay" String="&file;" column="0"/>
-        <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>
+        <RegExpr attribute="File" context="#pop" String="^(diff|Only in .*:).*$" endRegion="chunk" lookAhead="true" column="0"/>
+        <RegExpr attribute="Header" context="#stay" String="^&file;" column="0"/>
+        <RegExpr attribute="Header" context="RChunkInFile" String="^\*+$" beginRegion="chunk" column="0"/>
         <IncludeRules context="File"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="RChunk" fallthroughContext="AttrNormal">
-        <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>
-        <RegExpr attribute="Header" context="RChunkNew" String="\-\-\- .* \-\-\-\-$" column="0"/>
+        <RegExpr attribute="Header" context="#stay" String="^\*\*\* .* \*\*\*\*$" column="0"/>
+        <RegExpr attribute="Header" context="RChunkNew" String="^\-\-\- .* \-\-\-\-$" column="0"/>
         <IncludeRules context="Chunk"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile" fallthroughContext="AttrNormal">
-        <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>
-        <RegExpr attribute="Header" context="RChunkInFileNew" String="\-\-\- .* \-\-\-\-$" column="0"/>
+        <RegExpr attribute="Header" context="#stay" String="^\*\*\* .* \*\*\*\*$" column="0"/>
+        <RegExpr attribute="Header" context="RChunkInFileNew" String="^\-\-\- .* \-\-\-\-$" column="0"/>
         <IncludeRules context="ChunkInFile"/>
       </context>
 
@@ -94,7 +94,7 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew" fallthroughContext="AttrNormal">
         <Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>
         <AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>
-        <RegExpr attribute="File" context="#pop#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>
+        <RegExpr attribute="File" context="#pop#pop" String="^&file;" endRegion="chunk" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>
         <IncludeRules context="FindDiff"/>
       </context>
diff --git a/xml/djangotemplate.xml b/xml/djangotemplate.xml
--- a/xml/djangotemplate.xml
+++ b/xml/djangotemplate.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="Django HTML Template" version="6" kateversion="5.53" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="7" kateversion="5.53" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
 
 <!--
     Based off of the katepart html syntax highlighting by Wilbert Berendsen.
@@ -159,8 +159,7 @@
   </context>
 
   <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Attribute" context="#stay" String="&name;" column="0"/>
-    <RegExpr attribute="Attribute" context="#stay" String="\s+&name;" />
+    <RegExpr attribute="Attribute" context="#stay" String="^&name;|\s+&name;" />
     <DetectChar attribute="Attribute" context="Value" char="=" />
   </context>
 
@@ -285,8 +284,7 @@
   <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
     <IncludeRules context="FindEntityRefs" />
     <IncludeRules context="FindTemplate" />
-    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
-    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
   </context>
 
   <context name="Value DQ" attribute="Value" lineEndContext="#stay">
diff --git a/xml/doxygen.xml b/xml/doxygen.xml
--- a/xml/doxygen.xml
+++ b/xml/doxygen.xml
@@ -6,7 +6,7 @@
     <!ENTITY ml_word ".*?(?=&wordsep;|\*/)">
 ]>
 <language name="Doxygen"
-          version="11"
+          version="13"
           kateversion="5.0"
           section="Markup"
           extensions="*.dox;*.doxygen"
@@ -232,8 +232,7 @@
         <DetectSpaces />
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
-        <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />
-        <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />
+        <AnyChar attribute="Comment" context="SL_StartTag" String="\@" lookAhead="true" />
         <DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />
         <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
       </context>
@@ -241,8 +240,7 @@
         <DetectSpaces />
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
-        <DetectChar attribute="Comment" context="ML_StartTag" char="\" lookAhead="true" />
-        <DetectChar attribute="Comment" context="ML_StartTag" char="@" lookAhead="true" />
+        <AnyChar attribute="Comment" context="ML_StartTag" String="\@" lookAhead="true" />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
         <DetectChar attribute="Comment" context="ML_StartHTMLTag" char="&lt;" lookAhead="true" />
         <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
@@ -354,7 +352,7 @@
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
-      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop!ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
         <Detect2Chars attribute="Comment" context="ML_VerbatimPrefix" char="*" char1="*" lookAhead="true" />
@@ -590,8 +588,7 @@
         <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
         <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />
         <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
-        <DetectChar attribute="Comment" context="#pop" char="\" />
-        <DetectChar attribute="Comment" context="#pop" char="@" />
+        <AnyChar attribute="Comment" context="#pop" String="\@" />
       </context>
 
       <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
diff --git a/xml/elixir.xml b/xml/elixir.xml
--- a/xml/elixir.xml
+++ b/xml/elixir.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language
-  SYSTEM 'language.dtd'>
+  SYSTEM 'language.dtd' [
+
+  <!ENTITY symbols "(?:@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?">
+]>
 <!--
   Elixir syntax highlighting definition for Kate.
 
@@ -24,13 +27,13 @@
 <language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com)"
           extensions="*.ex;*.exs;*.eex;*.xml.eex;*.js.eex"
           indenter="elixir"
-          kateversion="5.62"
+          kateversion="5.79"
           license="LGPLv2+"
           mimetype="text/x-elixir"
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="9">
+          version="11">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
@@ -96,7 +99,7 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <!-- "shebang" line -->
-        <RegExpr String="#!\/.*" attribute="Keyword" column="0" context="#stay"/>
+        <RegExpr String="^#!\/.*" attribute="Keyword" column="0" context="#stay"/>
 
         <!-- Defined words -->
         <keyword String="keywords" attribute="Keyword" context="#stay"/>
@@ -122,23 +125,17 @@
         <DetectChar attribute="Operator" char="." context="#stay"/>
         <Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
         <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
-        <RegExpr String="\s[\?\:\%]\s" attribute="Operator" context="#stay"/>
-        <RegExpr String="[|&amp;&lt;&gt;\^\+*~\-=/]+" attribute="Operator" context="#stay"/>
-        <!-- regexp hack -->
-        <RegExpr String="\s!" attribute="Operator" context="#stay"/>
-        <RegExpr String="/=\s" attribute="Operator" context="#stay" insensitive="0"/>
+        <!-- \s!|/=\s is regexp hack -->
+        <RegExpr String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=/]+|\s!|/=\s" attribute="Operator" context="#stay"/>
         <Detect2Chars char="%" char1="=" attribute="Operator" context="#stay"/>
-        <RegExpr String=":(?:@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?" attribute="Symbol" context="#stay"/>
-        <RegExpr String="\b(?:@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?:" attribute="Symbol" context="#stay"/>
-        <RegExpr String=":\[\]=?" attribute="Symbol" context="#stay"/>
+        <RegExpr String=":&symbols;|\b&symbols;:|:\[\]=?" attribute="Symbol" context="#stay"/>
         <RegExpr String="@(?:module)?doc\s+&quot;&quot;&quot;" attribute="Attribute" context="Documentation"/>
         <StringDetect String="&quot;&quot;&quot;" attribute="String" context="Triple Quoted String"/>
         <DetectChar attribute="String" char="&quot;" context="Quoted String"/>
         <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
         <Detect2Chars char="?" char1="#" attribute="Normal Text" context="#stay"/>
         <DetectChar attribute="Comment" char="#" context="General Comment"/>
-        <DetectChar attribute="Delimiter" char="[" context="#stay"/>
-        <DetectChar attribute="Delimiter" char="]" context="#stay"/>
+        <AnyChar attribute="Delimiter" String="[]" context="#stay"/>
         <RegExpr String="@[a-zA-Z_0-9]+" attribute="Attribute" context="#stay"/>
         <!-- handle the different regular expression formats -->
         <DetectChar attribute="Normal Text" char=")" context="#stay"/>
diff --git a/xml/elm.xml b/xml/elm.xml
--- a/xml/elm.xml
+++ b/xml/elm.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Elm" version="7" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
+<language name="Elm" version="8" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
   <highlighting>
     <list name="declarations">
       <item>type</item>
@@ -53,9 +53,7 @@
         <WordDetect attribute="Import" context="import" String="import" />
 
         <RegExpr attribute="Name"         context="#stay" String="(\b[a-z]\w*|\b_\b)" />
-        <RegExpr attribute="Operator"         context="#stay" String="(-&gt;|::|\/\/|\.\.|&amp;&amp;|\|\||\+\+|\|&gt;|&lt;\||&gt;&gt;|&lt;&lt;|==|\/=|&lt;=|&gt;=)" />
-        <RegExpr attribute="Operator"         context="#stay" String="[+-\/*%=&gt;&lt;^\|!]" />
-        <AnyChar attribute="Operator"         context="#stay" String="@#$&amp;~?" />
+        <RegExpr attribute="Operator"         context="#stay" String="-&gt;|::|\/\/|\.\.|&amp;&amp;|\|\||\+\+|\|&gt;|&lt;\||&gt;&gt;|&lt;&lt;|==|\/=|&lt;=|&gt;=|[+-\/*%=&gt;&lt;^\|!@#$&amp;~?]" />
 
         <RegExpr attribute="Type"             context="#stay" String="\b[A-Z][\w]*" />
 
diff --git a/xml/email.xml b/xml/email.xml
--- a/xml/email.xml
+++ b/xml/email.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Email" version="6" kateversion="5.0" extensions="*.eml;*.email;*.emlx;*.mbox;*.mbx" section="Other" mimetype="message/rfc822" casesensitive="0" author="Volker Krause (vkrause@kde.org)" license="MIT">
+<language name="Email" version="7" kateversion="5.0" extensions="*.eml;*.email;*.emlx;*.mbox;*.mbx" section="Other" mimetype="message/rfc822" casesensitive="0" author="Volker Krause (vkrause@kde.org)" license="MIT">
     <highlighting>
         <list name="header-names">
             <item>Authentication-Results:</item>
@@ -53,23 +53,23 @@
             <context name="header" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#pop!body-context">
                 <WordDetect attribute="Common Header" context="header-subject" String="Subject:" column="0"/>
                 <keyword attribute="Common Header" context="header-structured-content" String="header-names" column="0"/>
-                <RegExpr attribute="Other Header" context="header-content" String="[0-9a-zA-Z-]+:\s" column="0"/>
+                <RegExpr attribute="Other Header" context="header-content" String="^[0-9a-zA-Z-]+:\s" column="0"/>
             </context>
 
             <context name="header-subject" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#pop#pop!body-context">
-                <RegExpr context="#pop" String="\S" column="0" lookAhead="true"/>
+                <RegExpr context="#pop" String="^\S" column="0" lookAhead="true"/>
                 <DetectChar attribute="String" context="string-context" char="&quot;"/>
             </context>
 
             <context name="header-structured-content" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#pop#pop!body-context">
-                <RegExpr context="#pop" String="\S" column="0" lookAhead="true"/>
+                <RegExpr context="#pop" String="^\S" column="0" lookAhead="true"/>
                 <DetectChar attribute="String" context="string-context" char="&quot;"/>
                 <DetectChar attribute="Comment" context="comment-context" char="("/>
                 <RegExpr attribute="Address" context="#stay" String="&lt;?[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+&gt;?"/>
             </context>
 
             <context name="header-content" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#pop#pop!body-context">
-                <RegExpr context="#pop" String="\S" column="0" lookAhead="true"/>
+                <RegExpr context="#pop" String="^\S" column="0" lookAhead="true"/>
             </context>
 
             <context name="string-context" attribute="String" lineEndContext="#stay">
@@ -88,7 +88,7 @@
             </context>
 
             <context name="body-context" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Content Boundary" context="#pop!header" String="--[0-9a-zA-Z._=-]{10,}(--)?$" column="0"/>
+                <RegExpr attribute="Content Boundary" context="#pop!header" String="^--[0-9a-zA-Z._=-]{10,}(--)?$" column="0"/>
             </context>
         </contexts>
         <itemDatas>
diff --git a/xml/erlang.xml b/xml/erlang.xml
--- a/xml/erlang.xml
+++ b/xml/erlang.xml
@@ -36,7 +36,7 @@
                                    - fixed highlighting problem when '@' at end of atom/variable
 -->
 
-<language name="Erlang" version="5" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
+<language name="Erlang" version="6" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <!-- ====== s3.8 p 24 of erlang spec ===== -->
@@ -194,8 +194,7 @@
         <!-- float must have a number after the decimal point, or it doesn't count -->
         <RegExpr attribute="Float" context="#stay" String="[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?" />
         <RegExpr attribute="Number" context="#stay" String="\d+#[a-zA-Z0-9]+" />
-        <RegExpr attribute="Integer" context="#stay" String="\$\S" />
-        <RegExpr attribute="Integer" context="#stay" String="[0-9]+" />
+        <RegExpr attribute="Integer" context="#stay" String="\$\S|[0-9]+" />
 
       </context>
 
diff --git a/xml/fortran-fixed.xml b/xml/fortran-fixed.xml
--- a/xml/fortran-fixed.xml
+++ b/xml/fortran-fixed.xml
@@ -1,6 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Fortran (Fixed Format)" version="8" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
+<!DOCTYPE language SYSTEM "language.dtd" [
+  <!-- Integers with optional kind specifier -->
+  <!ENTITY integer "\b[0-9]++(?:[_](?:[0-9]++|[a-zA-Z][\w_]*))?">
+  <!-- Integers in binary, octal and hexadecimal notations -->
+  <!ENTITY baseinteger "\b[bozx](?:[&apos;][0-9a-fA-F]++[&apos;]|[&quot;][0-9a-fA-F]++[&quot;])">
+  <!-- Floating-point numbers with optional kind -->
+  <!ENTITY float1 "[0-9]*+\.[0-9]++(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]++|[a-z][\w_]*))?">
+  <!ENTITY float2 "\b[0-9]++\.[0-9]*+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]++|[a-z][\w_]*))?(?![a-z])">
+  <!ENTITY float3 "\b[0-9]++[de][+-]?[0-9]++(?:[_](?:[0-9]++|[a-z][\w_]*))?">
+]>
+<language name="Fortran (Fixed Format)" version="10" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
 <!-- by Franchin Matteo, fnch@libero.it -->
 <!-- NOTE: Keep in sync with the "Fortran (Free Format)" highlighter! (fortran-free.xml) -->
   <highlighting>
@@ -346,6 +355,7 @@
     <!-- Matrix transpose -->
       <item>transpose</item>
     <!-- Transformational functions for geometric location -->
+      <item>findloc</item>
       <item>maxloc</item>
       <item>minloc</item>
     </list>
@@ -491,8 +501,7 @@
 
 <!-- The following two contexts match declarations -->
       <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
-        <RegExpr attribute="Data Type" context="#stay" String="\b(?:integer|real|complex)[\*]\d{1,2}" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\b(?:integer|real|complex)[\*]\d{1,2}|\bend\s*type\b" insensitive="true"/>
         <keyword attribute="Data Type" context="#stay" String="types"/>
         <WordDetect attribute="Data Type" context="#stay" String="data" firstNonSpace="true" insensitive="true"/>
         <!--<RegExpr attribute="Data Type" context="find_paren" String="real\s*[(]" firstNonSpace="true" insensitive="true"/>
@@ -520,14 +529,8 @@
 
 <!-- The following context matches integer and real numbers -->
       <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
-        <!-- Floating-point numbers with optional kind -->
-        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>
-        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="true"/>
-        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>
-        <!-- Integers with optional kind specifier -->
-        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+(?:[_](?:[0-9]+|[a-zA-Z][\w_]*))?"/>
-        <!-- Integers in binary, octal and hexadecimal notations -->
-        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx](?:[&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="true"/>
+        <RegExpr attribute="Float" context="#stay" String="&float1;|&float2;|&float3;" insensitive="true"/>
+        <RegExpr attribute="Decimal" context="#stay" String="&integer;|&baseinteger;"/>
       </context>
 
 <!-- The following four contexts implement the complex string multi-line declarations -->
diff --git a/xml/fortran-free.xml b/xml/fortran-free.xml
--- a/xml/fortran-free.xml
+++ b/xml/fortran-free.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Fortran (Free Format)" version="4" kateversion="5.53" section="Sources" extensions="*.f90;*.F90;*.f95;*.F95;*.f03;*.F03;*.f08;*.F08;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it), Janus Weil" license="MIT" priority="10">
+<language name="Fortran (Free Format)" version="5" kateversion="5.53" section="Sources" extensions="*.f90;*.F90;*.f95;*.F95;*.f03;*.F03;*.f08;*.F08;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it), Janus Weil" license="MIT" priority="10">
 <!-- Original author: Franchin Matteo (fnch@libero.it).
      Adaptation to free & fixed format: Janus Weil.
 -->
@@ -163,9 +163,8 @@
 
 <!-- The following two contexts match input/output statements -->
       <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
-        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:flush|wait)\s*[(]" insensitive="true"/>
       <!-- find_io_stmnts##Fortran (Fixed Format) -->
-        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:flush|wait|read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>
         <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>
         <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>
         <keyword attribute="IO Function" context="#stay" String="io_functions"/>
@@ -239,10 +238,8 @@
 <!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
       <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
       <!-- find_paren##Fortran (Fixed Format) -->
-        <DetectChar attribute="Data Type" context="find_paren" char="("/>
-        <DetectChar attribute="Data Type" context="find_paren" char="["/>
-        <DetectChar attribute="Data Type" context="#pop" char=")"/>
-        <DetectChar attribute="Data Type" context="#pop" char="]"/>
+        <AnyChar attribute="Data Type" context="find_paren" String="(["/>
+        <AnyChar attribute="Data Type" context="#pop" String=")]"/>
       </context>
 
 <!-- The following context matches intrinsic procedures -->
diff --git a/xml/fsharp.xml b/xml/fsharp.xml
--- a/xml/fsharp.xml
+++ b/xml/fsharp.xml
@@ -9,7 +9,7 @@
 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
 ]>
-<language name="FSharp" version="9" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
+<language name="FSharp" version="10" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
 
   <highlighting>
     <list name="keywords">
@@ -204,10 +204,9 @@
 
       <context attribute="String" lineEndContext="#stay" name="String Constant">
         <DetectChar attribute="String" context="#pop" char="&quot;" />
-        <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;" />
         <!-- An underscore at the end of a line in a string indicates  -->
         <!-- that the string will continue on the next line.           -->
-        <RegExpr attribute="Escaped characters" context="#stay" String="\\$" />
+        <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;|\\$" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Block">
@@ -248,8 +247,7 @@
         <Detect2Chars attribute="Camlp4 Quotation" context="#pop" char="&gt;" char1="&gt;" />
         <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
         <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
-        <RegExpr attribute="Escaped characters" context="#stay" String="\\(\\|&gt;&gt;|&lt;&lt;)" />
-        <RegExpr attribute="Escaped characters" context="#stay" String="\\&lt;:&IDENT;&lt;" />
+        <RegExpr attribute="Escaped characters" context="#stay" String="\\(\\|&gt;&gt;|&lt;&lt;|&lt;:&IDENT;&lt;)" />
       </context>
     </contexts>
 
diff --git a/xml/hamlet.xml b/xml/hamlet.xml
--- a/xml/hamlet.xml
+++ b/xml/hamlet.xml
@@ -5,7 +5,7 @@
   word character *or* a number, hence the lookahead -->
   <!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
 ]>
-<language name="Hamlet" version="5" kateversion="5.53" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">
+<language name="Hamlet" version="6" kateversion="5.53" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">
 <highlighting>
 <contexts>
   <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
@@ -24,8 +24,7 @@
   <context attribute="Element" lineEndContext="#stay" name="element" >
     <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
     <DetectChar attribute="Element" context="#pop" char="&gt;" />
-    <RegExpr attribute="Attribute" context="Attribute" String="&name;" column="0"/>
-    <RegExpr attribute="Attribute" context="Attribute" String="\s+&name;" />
+    <RegExpr attribute="Attribute" context="Attribute" String="^&name;|\s+&name;" />
     <RegExpr attribute="Class" context="#stay" String="\.&name;"/>
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
diff --git a/xml/haskell.xml b/xml/haskell.xml
--- a/xml/haskell.xml
+++ b/xml/haskell.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Haskell" version="17" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
+<!DOCTYPE language SYSTEM "language.dtd" [
+  <!ENTITY symbolops "\-!#\$&#37;&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:">
+]>
+<language name="Haskell" version="19" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
   <highlighting>
   <list name="keywords">
     <item>case</item>
@@ -471,20 +473,17 @@
       <keyword attribute="Data Prelude"     context="#stay" String="prelude data" />
       <keyword attribute="Class Prelude"    context="#stay" String="prelude class" />
 
-      <RegExpr attribute="Special"          context="#stay" String="(::|=&gt;|\-&gt;|&lt;\-|=)(?![\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:])" />
-      <AnyChar attribute="Special"          context="#stay" String="∷⇒→←∀∃" />
-      <RegExpr attribute="Signature"        context="#stay" String="\s*[a-z_][a-zA-Z0-9_']*\s*(?=::([^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$))" />
-      <RegExpr attribute="Signature"        context="#stay" String="\s*(\([\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]*\))*\s*(?=::[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:])" />
+      <RegExpr attribute="Special"          context="#stay" String="(::|=&gt;|\-&gt;|&lt;\-|=)(?![&symbolops;])|∷⇒→←∀∃" />
+      <RegExpr attribute="Signature"        context="#stay" String="\s*[a-z_][a-zA-Z0-9_']*\s*(?=::([^&symbolops;]|$))|\s*(\([&symbolops;]*\))*\s*(?=::[^&symbolops;])" />
       <RegExpr attribute="Function"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[a-z_][a-zA-Z0-9_']*" />
-      <RegExpr attribute="Operator"         context="#stay" String="([A-Z][a-zA-Z0-0_']*\.)*[\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]+" />
-      <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
-      <RegExpr attribute="Type"             context="#stay" String="'(?![A-Z]')([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
+      <RegExpr attribute="Operator"         context="#stay" String="([A-Z][a-zA-Z0-0_']*\.)*[&symbolops;]+" />
+      <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*|'(?![A-Z]')([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
 
       <RegExpr    attribute="Float"   context="#stay" String ="\d+\.\d+([Ee][+-]?\d+)?|\d+[Ee][+-]?\d+"/>
       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>
       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
       <Int        attribute="Decimal" context="#stay" />
-      <DetectChar attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->
+      <RegExpr attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->
       <DetectChar attribute="String"  context="string" char="&quot;" />
 
       <DetectChar attribute="Function Infix" context="infix" char="`"/>
@@ -538,15 +537,15 @@
 
       <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}"/>
       <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment" />
-      <RegExpr attribute="Comment" context="comment"  String="--(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
+      <RegExpr attribute="Comment" context="comment"  String="--(?=[^&symbolops;]|$)" />
     </context>
 
     <!-- Haddock -->
     <context attribute="Comment" lineEndContext="#stay" name="Haddock">
       <RegExpr attribute="Haddock Hyperlink" context="#stay" String="'([A-Z][a-zA-Z0-9_']*\.)*[a-z_][a-zA-Z0-9_']*'" />
       <RegExpr attribute="Haddock Module" context="#stay" String="&quot;([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*&quot;" />
-      <RegExpr attribute="Haddock Emphasis" context="Start Haddock Emphasis" lookAhead="true" String="/.*/" />
-      <RegExpr attribute="Haddock Bold" context="Start Haddock Bold" lookAhead="true" String="__.*__" />
+      <RangeDetect context="Start Haddock Emphasis" lookAhead="true" char="/" char1="/" />
+      <RegExpr attribute="Haddock Bold" context="Start Haddock Bold" lookAhead="true" String="__.*?__" />
     </context>
     <context attribute="Haddock Emphasis" lineEndContext="#pop" name="Start Haddock Emphasis">
       <DetectChar attribute="Haddock Emphasis" context="Haddock Emphasis" char="/" />
diff --git a/xml/haskell.xml.patch b/xml/haskell.xml.patch
--- a/xml/haskell.xml.patch
+++ b/xml/haskell.xml.patch
@@ -7,7 +7,7 @@
        <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
        <Int        attribute="Decimal" context="#stay" />
 -      <DetectChar attribute="Char"    context="char" char="'" />
-+      <DetectChar attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->
++      <RegExpr attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" /> <!-- see https://github.com/jgm/skylighting/pull/40 -->
        <DetectChar attribute="String"  context="string" char="&quot;" />
  
        <DetectChar attribute="Function Infix" context="infix" char="`"/>
diff --git a/xml/haxe.xml b/xml/haxe.xml
--- a/xml/haxe.xml
+++ b/xml/haxe.xml
@@ -12,7 +12,7 @@
   ========================================================================
 -->
 
-<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="4" kateversion="5.0" casesensitive="true" author="Chad Joan" license="MIT">
+<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="5" kateversion="5.0" casesensitive="true" author="Chad Joan" license="MIT">
   <highlighting>
     <list name="keywords">
     
@@ -91,8 +91,7 @@
 
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="normal">
-        <RegExpr attribute="Preprocessor" context="#pop" String="#if(\s+\w+)?" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="#(else|elseif|end|error)" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="#if(\s+\w+)?|#(else|elseif|end|error)" />
 
         <keyword attribute="Keyword"        context="#stay"      String="keywords"/>
         <keyword attribute="Module"         context="ModuleName" String="modules"/>
@@ -118,8 +117,7 @@
         <!-- Float -->
         <!-- Floats must be matched before Binary|Octal|Hex|Integer -->
         <!-- All floats except integers -->
-        <RegExpr attribute="Float" context="#pop" String="[\d][\d]*(\.(?!\.)[\d]*([eE][-+]?[\d]+)?)"/>
-        <RegExpr attribute="Float" context="#pop" String="\.[\d][\d]*([eE][-+]?[\d]+)?"/>
+        <RegExpr attribute="Float" context="#pop" String="[\d][\d]*(\.(?!\.)[\d]*([eE][-+]?[\d]+)?)|\.[\d][\d]*([eE][-+]?[\d]+)?"/>
 
         <!-- Hex|Integer -->
         <RegExpr attribute="Hex"     context="#pop" String="0[xX][\da-fA-F]+"/>
diff --git a/xml/html.xml b/xml/html.xml
--- a/xml/html.xml
+++ b/xml/html.xml
@@ -5,7 +5,7 @@
 	<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
 	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="HTML" version="13" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="14" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
@@ -79,8 +79,7 @@
   </context>
 
   <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Attribute" context="#stay" String="&attributeName;" column="0"/>
-    <RegExpr attribute="Attribute" context="#stay" String="\s+&attributeName;" />
+    <RegExpr attribute="Attribute" context="#stay" String="^&attributeName;|\s+&attributeName;" />
     <DetectChar attribute="Attribute" context="Value" char="=" />
   </context>
 
@@ -205,8 +204,7 @@
 
   <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
     <IncludeRules context="FindEntityRefs" />
-    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
-    <RegExpr attribute="Value" context="#stay" String="[^/&gt;&lt;&quot;&apos;\s]" />
+    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
   </context>
 
   <context name="Value DQ" attribute="Value" lineEndContext="#stay">
diff --git a/xml/idris.xml b/xml/idris.xml
--- a/xml/idris.xml
+++ b/xml/idris.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->
-<language name="Idris" version="6" kateversion="5.0" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
+<language name="Idris" version="7" kateversion="5.0" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
   <highlighting>
   <list name="keywords">
     <item>abstract</item>
@@ -96,9 +96,7 @@
   <contexts>
      <context attribute="Normal" lineEndContext="#stay" name="code">
         <RegExpr attribute="Comment" context="line comment"
-           String="---*(?=[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
-        <RegExpr attribute="Comment" context="line comment"
-           String="\|\|\|(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
+           String="---*(?=[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)|\|\|\|(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
         <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />
         <RegExpr attribute="Normal" context="declaration" lookAhead="true"
            String="^\s*(?:[a-z]+\s+)*(?:[A-Za-z][A-Za-z0-9_]*'*|\([\-!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|~:]+\))\s*:" column="0" />
@@ -115,8 +113,7 @@
         <RegExpr attribute="MetaVar" context="#stay" String="\?[a-z][A-Za-z0-9_]+'*" />
         <RegExpr attribute="Special" context="#stay" String="(:|=&gt;|\-&gt;|&lt;\-)" />
         <RegExpr attribute="Operator" context="#stay"
-           String="([\-!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|~:]+|\b_\b)" />
-        <RegExpr attribute="Operator" context="#stay" String="`[A-Za-z][A-Za-z0-9_]*'*`" />
+           String="([\-!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|~:]+|\b_\b)|`[A-Za-z][A-Za-z0-9_]*'*`" />
      </context>
      <context attribute="Normal" lineEndContext="#pop" name="declaration">
         <keyword attribute="Keyword" context="#stay" String="keywords" />
diff --git a/xml/ini.xml b/xml/ini.xml
--- a/xml/ini.xml
+++ b/xml/ini.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="7" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="8" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <list name="keywords">
@@ -36,8 +36,7 @@
  <context name="ini" attribute="Normal Text" lineEndContext="#stay">
   <RangeDetect attribute="Section" context="#stay" char="["  char1="]" beginRegion="Section" endRegion="Section" />
   <DetectChar attribute="Assignment" context="Value" char="=" />
-  <DetectChar char=";" attribute="Comment" context="Comment" firstNonSpace="true" />
-  <DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true" />
+  <AnyChar String=";#" attribute="Comment" context="Comment" firstNonSpace="true" />
  </context>
 
  <context name="Value" attribute="Value" lineEndContext="#pop" >
diff --git a/xml/javascript-react.xml b/xml/javascript-react.xml
--- a/xml/javascript-react.xml
+++ b/xml/javascript-react.xml
@@ -53,7 +53,7 @@
      * v1 [2018-06-20]: Initial version
 -->
 
-<language name="JavaScript React (JSX)" version="9" kateversion="5.53" section="Scripts" indenter="cstyle"
+<language name="JavaScript React (JSX)" version="10" kateversion="5.53" section="Scripts" indenter="cstyle"
           priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
           author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
 
@@ -126,8 +126,7 @@
 			<DetectChar context="#pop" attribute="Symbol" char="&lt;" />
 			<RegExpr context="#stay" attribute="Normal Text" String="\(\s*(?=&lt;)" />
 			<RegExpr context="#stay" attribute="Normal Text" String="\[\s*(?=&lt;)" beginRegion="List" />
-			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;\s*/(?![\*/])" beginRegion="Brace" />
-			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;" beginRegion="Brace" />
+			<RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;(\s*/(?![\*/]))?" beginRegion="Brace" />
 		</context>
 		<!-- Do not highlight tags in interface declarations -->
 		<context name="InterfaceDeclaration" attribute="Normal Text" lineEndContext="#stay">
@@ -302,15 +301,14 @@
 			<RegExpr context="Attribute" attribute="Attribute" String="&nameWithBound;" />
 			<IncludeRules context="FindEvaluatedCode" />
 			<IncludeRules context="AllComments" />
-			<RegExpr context="#stay" attribute="Error" String="\S+&name;" />
-			<RegExpr context="#stay" attribute="Error" String="\S" />
+			<RegExpr context="#stay" attribute="Error" String="\S+&name;|\S" />
 		</context>
 
 		<!-- Tag content: <Tag> content </Tag> -->
 		<context name="ElementTagContent" attribute="Tag Content Text" lineEndContext="#stay">
 			<RegExpr context="#pop" attribute="Element Tag" String="&lt;/\s*&gt;" endRegion="Element" />
-			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*&simpleName;" />
-			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*(?=[A-Z_\$])" /> <!-- Component tag (error) -->
+			<!-- With component tag (error) -->
+			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*(&simpleName;|(?=[A-Z_\$]))" />
 			<IncludeRules context="DefaultTagContent" />
 		</context>
 		<context name="ComponentTagContent" attribute="Tag Content Text" lineEndContext="#stay">
@@ -342,8 +340,7 @@
 			<DetectChar context="#pop" char="{" lookAhead="true" /> <!-- EvaluatedCode -->
 			<IncludeRules context="AllComments" />
 			<RegExpr context="#stay" attribute="Attribute" String="&nameWithBound;" />
-			<RegExpr context="#stay" attribute="Error" String="\S+&name;" />
-			<RegExpr context="#stay" attribute="Error" String="\S" />
+			<RegExpr context="#stay" attribute="Error" String="\S+&name;|\S" />
 		</context>
 
 		<context name="Value" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -17,7 +17,7 @@
    * QML
    * CoffeeScript (embedded)
 -->
-<language name="JavaScript" version="18" kateversion="5.53" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+<language name="JavaScript" version="19" kateversion="5.53" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
           mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
           author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
 
@@ -1876,13 +1876,9 @@
       <!-- Regular Expressions -->
       <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
         <RegExpr attribute="Regular Expression" context="#pop#pop" String="/\w*" />
-        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\[bB]" />
         <RegExpr attribute="Pattern Character Class" String="\\[nrtvfDdSsWw]" />
         <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
-        <RegExpr attribute="Pattern Internal Operator" String="\\." />
-        <RegExpr attribute="Pattern Internal Operator" String="\$(?=/)" />
-        <AnyChar attribute="Pattern Internal Operator" String="?+*()|" />
+        <RegExpr attribute="Pattern Internal Operator" String="\{[\d, ]+\}|\\[bB]|\\.|\$(?=/)|[?+*()|]" />
       </context>
       <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
         <RegExpr String="\\[\[\]]" />
diff --git a/xml/json.xml b/xml/json.xml
--- a/xml/json.xml
+++ b/xml/json.xml
@@ -12,7 +12,7 @@
  ** http://tools.ietf.org/html/rfc4627
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="5" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="6" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
@@ -46,8 +46,7 @@
         <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
         <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
         <DetectChar char="["       context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" />
-        <DetectChar char="}"       context="#pop" lookAhead="true" />
-        <DetectChar char=","       context="#pop" lookAhead="true" />
+        <AnyChar String="},"       context="#pop" lookAhead="true" />
 
         <DetectSpaces context="#stay" attribute="Style_Normal" />
 
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -33,7 +33,7 @@
   <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
 ]>
 
-<language name="Julia" section="Sources" version="10" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" section="Sources" version="11" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="block_begin">
@@ -467,8 +467,7 @@
         <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
 
         <!-- Keywords, types, and comments -->
-        <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b" />
-        <RegExpr context="#stay" attribute="Keyword" String="\bmutable\s+struct\b" />
+        <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b|\bmutable\s+struct\b" />
         <keyword context="#stay" attribute="Keyword" String="keywords" />
         <keyword context="#stay" attribute="Data Type" String="types" />
         <keyword context="#stay" attribute="Boolean" String="booleans" />
@@ -596,8 +595,7 @@
       <context attribute="String" lineEndContext="#pop" name="Raw-String">
         <DetectSpaces />
         <LineContinue attribute="String" context="#stay"/>
-        <RegExpr attribute="String Char" context="#stay" String="(\\\\)*\\&quot;"/>
-        <RegExpr attribute="String Char" context="#stay" String="(\\\\)+(?=&quot;)"/>
+        <RegExpr attribute="String Char" context="#stay" String="(\\\\)*\\&quot;|(\\\\)+(?=&quot;)"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="String" lineEndContext="#stay" name="Raw-Block-String">
diff --git a/xml/kotlin.xml b/xml/kotlin.xml
--- a/xml/kotlin.xml
+++ b/xml/kotlin.xml
@@ -8,7 +8,7 @@
     <!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fF]?\b">
 ]>
 <!-- kotlin language syntax http://kotlinlang.org -->
-<language name="Kotlin" version="9" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
+<language name="Kotlin" version="10" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
     <highlighting>
         <list name="keywords">
             <item>package</item>
@@ -216,7 +216,6 @@
             </context>
 
             <context attribute="Normal Text" lineEndContext="#pop" name="Imports">
-                <DetectChar attribute="Symbol" context="#stay" char="."/>
                 <AnyChar attribute="Symbol" context="#stay" String=".*"/>
                 <WordDetect attribute="Keyword" context="TypeName" String="as" />
                 <DetectIdentifier attribute="Imports" context="#stay"/>
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -4,7 +4,7 @@
     <!ENTITY bullet "&#xd7;">
     <!ENTITY envname "[a-zA-Z]+\*?">
 ]>
-<language name="LaTeX" version="17" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="18" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
   <highlighting>
     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
          Using a DetectChar rule with lookAhead to detect "\" at the beginning
@@ -282,7 +282,7 @@
         <DetectIdentifier/>
         <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>
         <DetectChar char="$" attribute="Math" context="MathModeTex"/>
-        <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
+        <RegExpr String="^&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
         <IncludeRules context="FindComments"/>
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
@@ -307,7 +307,7 @@
 
       <!-- NoWeb -->
       <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="@\s*$" attribute="Normal Text" context="#pop" column="0"/>
+        <RegExpr String="^@\s*$" attribute="Normal Text" context="#pop" column="0"/>
       </context>
 
       <!-- LaTeX sectioning commands -->
@@ -394,8 +394,7 @@
       <!-- \mint command with parameter-->
       <context name="MintParam" attribute="Normal Text" lineEndContext="#stay">
         <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="Verb"/>
-        <DetectChar char="]" attribute="Normal Text" context="Verb"/>
+        <AnyChar String="}]" attribute="Normal Text" context="Verb"/>
       </context>
 
       <!-- verb command -->
@@ -683,8 +682,7 @@
       <context name="HighlightingSelector" attribute="Normal Text" lineEndContext="#stay">
         <WordDetect String="C++" insensitive="true" context="HighlightingBeginC++"/>
         <WordDetect String="Python" insensitive="true" context="HighlightingBeginPython"/>
-        <DetectChar char="}" context="#pop!UnknownHighlighting"/>
-        <DetectChar char="]" context="#pop!UnknownHighlighting"/>
+        <AnyChar String="}]" context="#pop!UnknownHighlighting"/>
         <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
@@ -693,8 +691,7 @@
       </context>
 
       <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="}" context="HighlightingC++"/>
-        <DetectChar char="]" context="HighlightingC++"/>
+        <AnyChar String="}]" context="HighlightingC++"/>
         <!-- Eat the trailing characters including } or ] after the language specification -->
         <RegExpr String="[^]}]*" context="#stay"/>
       </context>
@@ -705,8 +702,7 @@
       </context>
 
       <context name="HighlightingBeginPython" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="}" context="HighlightingPython"/>
-        <DetectChar char="]" context="HighlightingPython"/>
+        <AnyChar String="}]" context="HighlightingPython"/>
         <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
diff --git a/xml/lex.xml b/xml/lex.xml
--- a/xml/lex.xml
+++ b/xml/lex.xml
@@ -20,7 +20,7 @@
   
   ========================================================================
 -->
-<language name="Lex/Flex" version="5" kateversion="5.0" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Lex/Flex" version="6" kateversion="5.0" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -32,7 +32,7 @@
     <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="definitions" />
     <DetectChar attribute="Directive" context="Percent Command" char="%" />
     <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0" beginRegion="BlockComment"/>
-    <RegExpr attribute="Definition" context="Definition RegExpr" String="[A-Za-z_]\w*\s+" column="0"/>
+    <RegExpr attribute="Definition" context="Definition RegExpr" String="^[A-Za-z_]\w*\s+" column="0"/>
   </context>
   <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
     <IncludeRules context="Detect C" />
diff --git a/xml/lilypond.xml b/xml/lilypond.xml
--- a/xml/lilypond.xml
+++ b/xml/lilypond.xml
@@ -56,7 +56,7 @@
 ]>
 <language name="LilyPond" section="Other"
           style="lilypond" indenter="lilypond"
-          version="9" kateversion="5.0"
+          version="10" kateversion="5.0"
           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"
           mimetype="text/x-lilypond"
           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">
@@ -737,8 +737,7 @@
 
       <context name="musiccommand" attribute="Normal Text" lineEndContext="#pop"
                fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\\(&dynamics;)&b;" attribute="Dynamic"/>
-        <RegExpr String="\\[&lt;!&gt;]" attribute="Dynamic"/>
+        <RegExpr String="\\((&dynamics;)&b;|[&lt;!&gt;])" attribute="Dynamic"/>
         <RegExpr String="\\(&scripts;)&b;" attribute="Articulation"/>
         <RegExpr String="\\[()]" attribute="Slur"/>
         <RegExpr String="\\[][]" attribute="Beam"/>
@@ -762,14 +761,7 @@
         <RegExpr String="\\skip&b;" attribute="Command" context="duration"/>
         <RegExpr String="\\tempo&b;" attribute="Command" context="tempo"/>
         <RegExpr String="\\(&keywords;)&b;" attribute="Keyword"/>
-        <RegExpr String="\\(&commands-heads;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other1;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other2;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other3;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other4;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other5;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other6;)&b;" attribute="Command"/>
-        <RegExpr String="\\(&commands-other7;)&b;" attribute="Command"/>
+        <RegExpr String="\\(&commands-heads;|&commands-other1;|&commands-other2;|&commands-other3;|&commands-other4;|&commands-other5;|&commands-other6;|&commands-other7;)&b;" attribute="Command"/>
         <RegExpr String="\\(&toplevelvars;)&b;" attribute="Variable"/>
         <RegExpr String="\\(&deprecatedkeywords;)&b;" attribute="Deprecated Keyword"/>
         <RegExpr String="\\(&deprecatedcommands;)&b;" attribute="Deprecated Command"/>
@@ -809,8 +801,9 @@
                fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces attribute="Normal Text"/>
         <RegExpr String="=\s*('+|,+)?" attribute="Check"/>
-        <RegExpr String="&duration;" attribute="Invalid" context="#pop"/><!-- no duration in chord allowed -->
-        <RegExpr String="\d+" attribute="Invalid" context="#pop"/><!-- catch other (wrong) durations as well -->
+        <!-- no duration in chord allowed -->
+        <!-- catch other (wrong) durations as well -->
+        <RegExpr String="&duration;|\d+" attribute="Invalid" context="#pop"/>
       </context>
 
       <context name="chordend" attribute="Chord" lineEndContext="#stay"
@@ -870,21 +863,14 @@
         <keyword String="musicexpressions" attribute="Scheme Keyword"/>
         <keyword String="contexts" attribute="Scheme Keyword"/>
         <keyword String="layoutobjects" attribute="Scheme Keyword"/>
-        <RegExpr String="[-+]?(\d+(\.\d+)?|\.\d+)" attribute="Scheme Value"/>
-        <RegExpr String="#(t|f|b[-+]?[01.]+|o[-+]?[0-7.]+|d[-+]?[0-9.]+|x[-+]?[0-9a-f.]+)"
-                 insensitive="true" attribute="Scheme Value"/>
-        <RegExpr String="[+-](inf|nan)\.0" attribute="Scheme Value"/>
-        <RegExpr String="&schemefunc0;" attribute="Scheme Keyword"/>
-        <RegExpr String="&schemefunc1;" attribute="Scheme Keyword"/>
-        <RegExpr String="&schemefunc2;" attribute="Scheme Keyword"/>
+        <RegExpr String="[-+]?(\d+(\.\d+)?|\.\d+)|#([tfTF]|[bB][-+]?[01.]+|[oO][-+]?[0-7.]+|[dD][-+]?[0-9.]+|[xX][-+]?[0-9a-fA-F.]+)|[+-](inf|nan)\.0" attribute="Scheme Value"/>
+        <RegExpr String="&schemefunc0;|&schemefunc1;|&schemefunc2;" attribute="Scheme Keyword"/>
         <RegExpr String="&schemename;"/>
       </context>
 
       <context name="schemequote" attribute="Scheme" lineEndContext="#pop"
                fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="&schemefunc0;"/>
-        <RegExpr String="&schemefunc1;"/>
-        <RegExpr String="&schemefunc2;"/>
+        <RegExpr String="&schemefunc0;|&schemefunc1;|&schemefunc2;"/>
       </context>
 
       <context name="schemelily" attribute="Normal Text" lineEndContext="#stay">
@@ -1087,11 +1073,7 @@
         <DetectChar char="{" attribute="Keyword" context="sectionrules" beginRegion="section"/>
         <keyword String="contexts" attribute="Context"/>
         <keyword String="deprecatedcontexts" attribute="Deprecated Context"/>
-        <RegExpr String="(&quot;?)\b(?:&engravers00;)\b\1" attribute="Engraver"/>
-        <RegExpr String="(&quot;?)\b(?:&engravers01;)\b\1" attribute="Engraver"/>
-        <RegExpr String="(&quot;?)\b(?:&engravers02;)\b\1" attribute="Engraver"/>
-        <RegExpr String="(&quot;?)\b(?:&engravers1;)\b\1" attribute="Engraver"/>
-        <RegExpr String="(&quot;?)\b(?:&engravers2;)\b\1" attribute="Engraver"/>
+        <RegExpr String="(&quot;?)\b(?:&engravers00;|&engravers01;|&engravers02;|&engravers1;|&engravers2;)\b\1" attribute="Engraver"/>
         <keyword String="layoutobjects" attribute="Layout Object"/>
         <keyword String="properties" attribute="Property"/>
         <RegExpr String="\b(&headervars;|&papervars;|&layoutvars;)\b" attribute="Variable"/>
diff --git a/xml/literate-curry.xml b/xml/literate-curry.xml
--- a/xml/literate-curry.xml
+++ b/xml/literate-curry.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Curry" version="5" kateversion="5.0"
+<language name="Literate Curry" version="6" kateversion="5.0"
           section="Sources" extensions="*.lcurry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
           indenter="haskell">
@@ -9,8 +9,7 @@
 
     <context attribute="Text" lineEndContext="#stay" name="Text">
       <!-- Bird Tracks -->
-      <DetectChar attribute="BirdTrack" context="Code" char="&gt;" column="0"/>
-      <DetectChar attribute="BirdTrack" context="Code" char="&lt;" column="0"/>
+      <AnyChar attribute="BirdTrack" context="Code" String="&gt;&lt;" column="0"/>
       <!-- \begin{code} and \begin{spec} -->
       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;code&#125;"/>
       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;spec&#125;"/>
@@ -35,8 +34,7 @@
     </context>
 
     <context attribute="Text" lineEndContext="#stay" name="lineend">
-      <DetectChar attribute="BirdTrack" context="restart" char="&gt;" column="0"/>
-      <DetectChar attribute="BirdTrack" context="restart" char="&lt;" column="0"/>
+      <AnyChar attribute="BirdTrack" context="restart" String="&gt;&lt;" column="0"/>
     </context>
 
     <context attribute="Comment" lineEndContext="#pop" name="restart">
diff --git a/xml/literate-haskell.xml b/xml/literate-haskell.xml
--- a/xml/literate-haskell.xml
+++ b/xml/literate-haskell.xml
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Haskell" version="8" kateversion="5.53" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
+<language name="Literate Haskell" version="9" kateversion="5.53" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
   <highlighting>
   <contexts>
     <context attribute="Text" lineEndContext="#stay" name="text">
-      <DetectChar attribute="BirdTrack" context="normal" char="&gt;" column="0"/>
-      <DetectChar attribute="BirdTrack" context="normal" char="&lt;" column="0"/>
+      <AnyChar attribute="BirdTrack" context="normal" String="&gt;&lt;" column="0"/>
       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;code&#125;"/>
       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;spec&#125;"/>
     </context>
@@ -24,8 +23,7 @@
       <IncludeRules context="##Comments" />
     </context>
     <context attribute="Text" lineEndContext="#stay" name="uncomments">
-      <DetectChar attribute="BirdTrack" context="recomments" char="&gt;" column="0"/>
-      <DetectChar attribute="BirdTrack" context="recomments" char="&lt;" column="0"/>
+      <AnyChar attribute="BirdTrack" context="recomments" String="&gt;&lt;" column="0"/>
     </context>
     <context attribute="Comment" lineEndContext="#pop" name="recomments">
       <Detect2Chars attribute="Comment" context="#pop#pop#pop" char="-" char1="}" />
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -12,7 +12,7 @@
 <!-- v10 by Peter J. Mello <admin@petermello.net>
      Add recognition of POSIX 2013 '::=' operator for variable assignment -->
 <language name="Makefile" section="Other"
-          version="12" kateversion="5.0"
+          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="">
@@ -417,12 +417,11 @@
           :Dnewval If the variable is defined newval is the value.
           :Unewval If the variable is undefined newval is the value.
         -->
-        <AnyChar    attribute="Builtin" context="#pop!bmake_var_modifier_arg" String="MNDU"/>
         <!-- 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="SC"/>
+        <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. -->
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -90,14 +90,14 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="15" kateversion="5.62" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="17" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
       <!-- Start of the Markdown document: find metadata or code block -->
       <context name="Start Document" attribute="Normal Text" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthroughContext="Normal Text">
         <!-- Some titles: (Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt) -->
         <!-- Metadata: Markdown format -->
-        <RegExpr attribute="Metadata" context="metadata" String="\-{3}&end;" column="0" beginRegion="metadata"/>
+        <RegExpr attribute="Metadata" context="metadata" String="^\-{3}&end;" column="0" beginRegion="metadata"/>
         <!-- Metadata: MultiMarkdown format -->
         <RegExpr attribute="Metadata Title" context="metadata-mm-value" String="^&metadatakey;(?=\s|$)" column="0"/>
         <!-- Code Block -->
@@ -130,9 +130,9 @@
              NOTE: The indentation of the lists is captured. -->
         <RegExpr attribute="Horizontal Rule" context="find-code-block" String="^&rulerregex;" column="0"/>
         <DetectChar attribute="Blockquote" context="blockquote" char="&gt;" firstNonSpace="true"/>
-        <RegExpr attribute="List" context="list" String="(\s*)&listbullet;(\s+)" column="0"/>
-        <RegExpr attribute="Number List" context="numlist" String="(\s*)\d\.(\s+)" column="0"/>
-        <RegExpr attribute="Number List" context="numlist2" String="(\s*)\d\d+\.(\s+)" column="0"/>
+        <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d\.(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist2" String="^(\s*)\d\d+\.(\s+)" column="0"/>
         <!-- Find Strong, Emphasis and Strikethrough Text -->
         <DetectChar context="find-strong-normal" char="*" lookAhead="true"/>
         <DetectChar context="find-emphasis-normal" char="_" lookAhead="true"/>
@@ -145,8 +145,7 @@
       <context name="find-code-block" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">
         <RegExpr attribute="Code" String="^&indentedcodeblock;" column="0"/>
         <RegExpr attribute="Normal Text" String="&end;" />
-        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;" column="0" beginRegion="comment"/>
-        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
+        <RegExpr attribute="Comment" context="comment" String="^\s*&startcomment;|\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
       </context>
 
       <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
@@ -159,16 +158,14 @@
         <DetectChar attribute="Normal Text" context="#pop" char="#"/>
       </context>
       <context name="find-strong-normal" attribute="Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
-        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;|&strongemphasisregex_ast_und2;"/>
         <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
         <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
         <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;"/>
         <DetectChar attribute="Normal Text" context="#pop" char="*"/>
       </context>
       <context name="find-emphasis-normal" attribute="Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
-        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;|&strongemphasisregex_und_ast2;"/>
         <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
         <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
         <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
@@ -195,7 +192,7 @@
       <context name="default-blockquote-1" attribute="Blockquote: Normal Text" lineEndContext="#stay">
         <DetectChar attribute="Blockquote" char="&gt;" firstNonSpace="true"/>
         <!-- End with header, horizontal rule or list/numlist -->
-        <RegExpr context="#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s|&rulerregex;)" column="0" lookAhead="true"/>
+        <RegExpr context="#pop" String="^(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s|&rulerregex;)" column="0" lookAhead="true"/>
       </context>
       <context name="default-blockquote-2" attribute="Blockquote: Normal Text" lineEndContext="#stay">
         <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
@@ -206,16 +203,10 @@
         <RegExpr attribute="Blockquote: Link" String="&implicitlink;"/>
       </context>
       <context name="find-strong-emphasis-blockquote" attribute="Blockquote: Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
-        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
-        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
-        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
-        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
-        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;|&strongemphasisregex_und_ast;|&strongemphasisregex_ast_und2;|&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;|&strongregex_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;|&strongemphasisregex_und;"/>
+        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;|&emphasisregex_und;"/>
         <AnyChar attribute="Blockquote: Normal Text" context="#pop" String="*_"/>
       </context>
 
@@ -225,12 +216,12 @@
       <!-- * list -->
       <context name="list" attribute="List: Normal Text" lineEndContext="#stay" fallthroughContext="content-list">
         <!-- Find indented code blocks, blockquotes and horizontal rules -->
-        <RegExpr attribute="Code" String="%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
-        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s+&gt;" column="0" dynamic="true"/>
-        <RegExpr attribute="Horizontal Rule" String="%1%2\s+&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr attribute="Code" String="^%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s+&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="^%1%2\s+&rulerregex;" column="0" dynamic="true"/>
         <RegExpr String="&emptyline;" column="0"/>
         <!-- Text with the same indentation captured corresponds to the item list -->
-        <RegExpr context="content-list" String="%1%2\s" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="content-list" String="^%1%2\s" column="0" lookAhead="true" dynamic="true"/>
         <!-- Finish when the text has a lower indentation than the list -->
         <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
         <!-- Highlight checkbox at the start of the item (task list) -->
@@ -239,24 +230,24 @@
       <!-- 1. numlist (one digit) -->
       <context name="numlist" attribute="List: Normal Text" lineEndContext="#stay" fallthroughContext="content-list">
         <!-- Find indented code blocks, blockquotes and horizontal rules -->
-        <RegExpr attribute="Code" String="%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
-        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{2,}&gt;" column="0" dynamic="true"/>
-        <RegExpr attribute="Horizontal Rule" String="%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr attribute="Code" String="^%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{2,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="^%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
         <RegExpr String="&emptyline;" column="0"/>
         <!-- Text with the same indentation captured -->
-        <RegExpr context="content-list" String="%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="content-list" String="^%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
         <!-- Finish when the text has a lower indentation than the list -->
         <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
       </context>
       <!-- 10. numlist (two or more digits) -->
       <context name="numlist2" attribute="List: Normal Text" lineEndContext="#stay" fallthroughContext="content-list">
         <!-- Find indented code blocks, blockquotes and horizontal rules -->
-        <RegExpr attribute="Code" String="%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
-        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{3,}&gt;" column="0" dynamic="true"/>
-        <RegExpr attribute="Horizontal Rule" String="%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr attribute="Code" String="^%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{3,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="^%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
         <RegExpr String="&emptyline;" column="0"/>
         <!-- Text with the same indentation captured -->
-        <RegExpr context="content-list" String="%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="content-list" String="^%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
         <!-- Finish when the text has a lower indentation than the list -->
         <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
       </context>
@@ -268,7 +259,7 @@
         <!-- Blockquote and horzontal rule (check indentation) -->
         <RegExpr context="#pop" String="^\s*(?:&gt;|&rulerregex;)" column="0" lookAhead="true"/>
         <!-- End with header or new list/numlist -->
-        <RegExpr context="#pop#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
+        <RegExpr context="#pop#pop" String="^(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
         <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
         <AnyChar context="find-strong-emphasis-list" String="*_" lookAhead="true"/>
         <RegExpr attribute="List: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
@@ -277,16 +268,10 @@
         <RegExpr attribute="List: Link" String="&implicitlink;"/>
       </context>
       <context name="find-strong-emphasis-list" attribute="List: Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
-        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
-        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
-        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
-        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
-        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;|&strongemphasisregex_und_ast;|&strongemphasisregex_ast_und2;|&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;|&strongregex_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;|&strongemphasisregex_und;"/>
+        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;|&emphasisregex_und;"/>
         <AnyChar attribute="List: Normal Text" context="#pop" String="*_"/>
       </context>
 
@@ -459,14 +444,9 @@
       <!-- Common -->
       <context name="inc" attribute="Normal Text" lineEndContext="#stay">
         <!-- Code -->
-        <RegExpr attribute="Code" String="`[^`]+`(?!`)"/>
-        <RegExpr attribute="Code" minimal="true" String="`{2}[^`](?:.*[^`])?`{2}(?!`)"/>
-        <RegExpr attribute="Code" minimal="true" String="`{3}[^`](?:.*[^`])?`{3}(?!`)"/>
-        <RegExpr attribute="Code" minimal="true" String="`{4}[^`](?:.*[^`])?`{4}(?!`)"/>
-        <RegExpr attribute="Code" minimal="true" String="`{5,}[^`](?:.*[^`])?`{5,}"/>
+        <RegExpr attribute="Code" String="`[^`]+`(?!`)|`{2}[^`](?:.*?[^`])?`{2}(?!`)|`{3}[^`](?:.*?[^`])?`{3}(?!`)|`{4}[^`](?:.*?[^`])?`{4}(?!`)|`{5,}[^`](?:.*?[^`])?`{5,}"/>
         <!-- Find Fenced Code Block -->
-        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
-        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)|~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
         <!-- Comment -->
         <StringDetect attribute="Comment" context="comment" String="&startcomment;" beginRegion="comment"/>
         <!-- Links and References -->
@@ -562,9 +542,7 @@
       </context>
       <context name="reflinktarget-title" attribute="Reference-Link Target" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectSpaces attribute="Reference-Link Target"/>
-        <RegExpr attribute="Reference-Link Target" context="#pop" String="&quot;(?:\\.|[^&quot;\\])*&quot;"/>
-        <RegExpr attribute="Reference-Link Target" context="#pop" String="&apos;(?:\\.|[^&apos;\\])*&apos;"/>
-        <RegExpr attribute="Reference-Link Target" context="#pop" String="\((?:\\.|[^\)\\])*\)"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="&quot;(?:\\.|[^&quot;\\])*&quot;|&apos;(?:\\.|[^&apos;\\])*&apos;|\((?:\\.|[^\)\\])*\)"/>
       </context>
 
       <!-- Image -->
diff --git a/xml/mathematica.xml b/xml/mathematica.xml
--- a/xml/mathematica.xml
+++ b/xml/mathematica.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Mathematica" version="11" kateversion="5.0" section="Scientific"
+<language name="Mathematica" version="12" kateversion="5.0" section="Scientific"
           extensions="*.nb" mimetype="application/mathematica;application/vnd.wolfram.mathematica" indenter="cstyle"
           author="Sven Brauch (svenbrauch@gmail.com)" license="LGPL" priority="3">
   <highlighting>
@@ -3268,8 +3268,7 @@
         <IncludeRules context="##Comments"/>
       </context>
       <context name="CommentCreatedBy" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="String" context="#pop" String="'(?:[^'\*]|\*+[^'\*\)])*\*?'"/>
-        <RegExpr attribute="String" context="#pop" String="&quot;(?:[^&quot;\*]|\*+[^&quot;\*\)])*\*?&quot;"/>
+        <RegExpr attribute="String" context="#pop" String="'(?:[^'\*]|\*+[^'\*\)])*\*?'|&quot;(?:[^&quot;\*]|\*+[^&quot;\*\)])*\*?&quot;"/>
       </context>
       <context name="CommentCacheId" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces/>
diff --git a/xml/maxima.xml b/xml/maxima.xml
--- a/xml/maxima.xml
+++ b/xml/maxima.xml
@@ -21,7 +21,7 @@
 
 <!DOCTYPE language SYSTEM "language.dtd">
 
-<language name="Maxima" version="6" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">
+<language name="Maxima" version="7" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">
     <highlighting>
 
         <list name="MaximaKeyword">
@@ -1855,9 +1855,7 @@
                 <DetectChar attribute="String" context="String" char="&quot;"/>
                 <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment"/>
                 <RegExpr attribute="Label" String="[a-zA-Z_][a-zA-Z0-9%_]*"/>
-                <RegExpr attribute="Float" String="[-+]?\d+\.\d*([BbDdEeSs][-+]?\d+)?"/>
-                <RegExpr attribute="Float" String="[-+]?\.\d+([BbDdEeSs][-+]?\d+)?"/>
-                <RegExpr attribute="Float" String="[-+]?\d+[BbDdEeSs][-+]?\d+"/>
+                <RegExpr attribute="Float" String="[-+]?\d+\.\d*([BbDdEeSs][-+]?\d+)?|[-+]?\.\d+([BbDdEeSs][-+]?\d+)?|[-+]?\d+[BbDdEeSs][-+]?\d+"/>
                 <RegExpr attribute="Integer" String="[-+]?\d+"/>
                 <DetectChar attribute="Quote" char="'"/>
             </context>
diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml
--- a/xml/mediawiki.xml
+++ b/xml/mediawiki.xml
@@ -7,15 +7,15 @@
   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">
   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]">
 ]>
-<language name="MediaWiki" section="Markup" version="11" kateversion="5.53" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="12" kateversion="5.53" extensions="*.mediawiki" mimetype="" license="FDL" >
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <RegExpr String="[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
-        <RegExpr String="[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
-        <RegExpr String="[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
-        <RegExpr String="[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
+        <RegExpr String="^[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
+        <RegExpr String="^[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
+        <RegExpr String="^[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
+        <RegExpr String="^[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
         <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
         <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
         <DetectChar char=";" attribute="WikiTag" context="DefinitionListHeader" column="0" />
@@ -39,10 +39,10 @@
       </context>
       <context name="TableContent" attribute="Normal" lineEndContext="#stay">
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <RegExpr String="[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
-        <RegExpr String="[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
-        <RegExpr String="[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
-        <RegExpr String="[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
+        <RegExpr String="^[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
+        <RegExpr String="^[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
+        <RegExpr String="^[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
+        <RegExpr String="^[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
         <DetectChar char=";" attribute="WikiTag" context="DefinitionListHeader" column="0" />
         <IncludeRules context="FindListItem" />
         <IncludeRules context="FindUrl" />
@@ -79,10 +79,8 @@
         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={6,} *$" context="#pop" attribute="Normal" />
         <RegExpr String="={5,5} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={1,4} *$" context="#pop" attribute="Normal" />
-        <RegExpr String="=*[^=]+$" context="#pop" attribute="Normal" />
+        <RegExpr String="={6,} *$|={1,4} *$|=*[^=]+$" context="#pop" attribute="Normal" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section4" >
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
@@ -98,10 +96,8 @@
         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={5,} *$" context="#pop" attribute="Normal" />
         <RegExpr String="={4,4} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={1,3} *$" context="#pop" attribute="Normal" />
-        <RegExpr String="=*[^=]+$" context="#pop" attribute="Normal" />
+        <RegExpr String="={5,} *$|={1,3} *$|=*[^=]+$" context="#pop" attribute="Normal" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section3" >
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
@@ -117,10 +113,8 @@
         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={4,} *$" context="#pop" attribute="Normal" />
         <RegExpr String="={3,3} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={1,2} *$" context="#pop" attribute="Normal" />
-        <RegExpr String="=*[^=]+$" context="#pop" attribute="Normal" />
+        <RegExpr String="={4,} *$|={1,2} *$|=*[^=]+$" context="#pop" attribute="Normal" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section2" >
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
@@ -136,10 +130,8 @@
         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={3,} *$" context="#pop" attribute="Normal" />
         <RegExpr String="={2,2} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={1,1} *$" context="#pop" attribute="Normal" />
-        <RegExpr String="=*[^=]+$" context="#pop" attribute="Normal" />
+        <RegExpr String="={3,} *$|={1,1} *$|=*[^=]+$" context="#pop" attribute="Normal" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comment" >
         <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
@@ -154,8 +146,7 @@
       </context>
       <context attribute="Link" lineEndContext="#stay" name="DelimitedUrlLink" >
         <IncludeRules context="FindTemplate" />
-        <DetectChar char=" " context="#pop" lookAhead="true" />
-        <DetectChar char="]" context="#pop" lookAhead="true" />
+        <AnyChar String=" ]" context="#pop" lookAhead="true" />
       </context>
 
       <context attribute="Link" lineEndContext="#pop" name="LooseURL" >
@@ -513,7 +504,7 @@
       </context>
 
       <context attribute="Normal" lineEndContext="#stay" name="FindListItem" >
-        <RegExpr String="[*#;:\s]*[*#:]+" attribute="WikiTag" context="#stay" column="0" />
+        <RegExpr String="^[*#;:\s]*[*#:]+" attribute="WikiTag" context="#stay" column="0" />
       </context>
 
       <context attribute="Normal" lineEndContext="#stay" name="FindSyntaxHighlightingHtmlElement" >
diff --git a/xml/metafont.xml b/xml/metafont.xml
--- a/xml/metafont.xml
+++ b/xml/metafont.xml
@@ -5,8 +5,10 @@
 We have moved some keywords for consistency
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Metapost/Metafont" section="Markup" version="10" kateversion="5.0"
+<!DOCTYPE language SYSTEM "language.dtd" [
+  <!ENTITY lengths "(bp|cc|cm|dd|in|mm|pc|pt)">
+]>
+<language name="Metapost/Metafont" section="Markup" version="11" kateversion="5.0"
 extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost" 
 author="Yedvilun (yedvilun@gmail.com)" license="LGPL">
   <highlighting>
@@ -855,16 +857,11 @@
         <Int attribute="Decimal"/>
 
         <!--Metafont lengths-->
-        <RegExpr String="\b(bp|cc|cm|dd|in|mm|pc|pt)\b" attribute="Float" context="#stay"/>
-        <RegExpr String="\b-?\d+(bp|cc|cm|dd|in|mm|pc|pt)#?\b" attribute="Float" context="#stay"/>
-        <RegExpr String="\b-?\.\d+(bp|cc|cm|dd|in|mm|pc|pt)#?\b" attribute="Float" context="#stay"/>
-        <RegExpr String="\b-?\d+\.\d+(bp|cc|cm|dd|in|mm|pc|pt)#?\b" attribute="Float" context="#stay"/>
+        <RegExpr String="\b(&lengths;|-?(\d+&lengths;|\.\d+&lengths;|\d+\.\d+&lengths;)#?)\b" attribute="Float" context="#stay"/>
 
         <!--Metafont coordinates, points, pathes-->
 
-        <RegExpr String="\b[xy]\d(\w|\')*" attribute="Variable" context="#stay"/>
-        <RegExpr String="\bz\d(\w|\')*" attribute="Variable" context="#stay"/>
-        <RegExpr String="\bp\d(\w|\')*" attribute="Variable" context="#stay"/>
+        <RegExpr String="\b[xyzp]\d(\w|\')*" attribute="Variable" context="#stay"/>
 
         <!--Special characters-->
         <DetectChar char="$" attribute="Special" context="#stay"/>
@@ -909,8 +906,7 @@
         <StringDetect String="verb*" attribute="Keyword" context="Verb"/>
         <RegExpr String="verb(?=[^a-zA-Z])" attribute="Keyword" context="Verb"/>
         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Keyword" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Keyword" context="#pop" />
+        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})|[^a-zA-Z]" attribute="Keyword" context="#pop" />
       </context>
       <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >
         <RegExpr String="(.)" attribute="Normal Text" context="VerbEnd" />
@@ -931,8 +927,7 @@
       </context>
       <context name="MathContrSeq" attribute="Keyword Mathmode" lineEndContext="#pop">
         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+\*?" attribute="Keyword Mathmode" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Keyword Mathmode" context="#pop" /> 
+        <RegExpr String="[a-zA-Z]+\*?|[^a-zA-Z]" attribute="Keyword Mathmode" context="#pop" />
       </context>
 
       <!-- comment -->
diff --git a/xml/modula-2.xml b/xml/modula-2.xml
--- a/xml/modula-2.xml
+++ b/xml/modula-2.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Modula-2" mimetype="text/x-modula2" version="7"
+<language name="Modula-2" mimetype="text/x-modula2" version="8"
   kateversion="5.0" section="Sources" priority="5" extensions="*.mod;*.def"
   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT">
 <!--
@@ -937,10 +937,8 @@
         <keyword attribute="Unsafe" context="#stay" String="pim-unsafe"/>
 
         <!-- Base-16 Whole Number Literals -->
-        <RegExpr attribute="Number" context="#stay" String="0[0-9A-F]*H"/>
-
         <!-- Base-8 Whole Number and Character Code Literals -->
-        <RegExpr attribute="Number" context="#stay" String="[0-7]+[BC]"/>
+        <RegExpr attribute="Number" context="#stay" String="0[0-9A-F]*H|[0-7]+[BC]"/>
 
         <!-- Real Number Literals -->
         <Float attribute="Number" context="#stay"/>
@@ -990,10 +988,8 @@
         <keyword attribute="Unsafe" context="#stay" String="iso-unsafe"/>
 
         <!-- Base-16 Whole Number Literals -->
-        <RegExpr attribute="Number" context="#stay" String="0[0-9A-F]*H"/>
-
         <!-- Base-8 Whole Number and Character Code Literals -->
-        <RegExpr attribute="Number" context="#stay" String="[0-7]+[BC]"/>
+        <RegExpr attribute="Number" context="#stay" String="0[0-9A-F]*H|[0-7]+[BC]"/>
 
         <!-- Real Number Literals -->
         <Float attribute="Number" context="#stay"/>
@@ -1044,12 +1040,9 @@
         <keyword attribute="Unsafe" context="#stay" String="r10-unsafe"/>
 
         <!-- Base-2 Whole Number Literals -->
-        <RegExpr attribute="Number" context="#stay"
-          String="0b([01]+('[01]+)?)+"/>
-
         <!-- Base-16 Whole Number and Character Code Literals -->
         <RegExpr attribute="Number" context="#stay"
-          String="0[ux]([0-9A-F]+('[0-9A-F]+)?)+"/>
+          String="0b([01]+('[01]+)?)+|0[ux]([0-9A-F]+('[0-9A-F]+)?)+"/>
 
         <!-- Real Number Literals -->
         <Float attribute="Number" context="#stay"/>
diff --git a/xml/mustache.xml b/xml/mustache.xml
--- a/xml/mustache.xml
+++ b/xml/mustache.xml
@@ -43,7 +43,7 @@
      * v1 [2019-02-10]: Initial version
 -->
 
-<language name="Mustache/Handlebars (HTML)" version="7" kateversion="5.53"
+<language name="Mustache/Handlebars (HTML)" version="8" kateversion="5.53"
           section="Markup" priority="1" mimetype=""
           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"
           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"
@@ -262,8 +262,7 @@
 		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindEntityRefs" />
-			<RegExpr context="#stay" attribute="Value" String="/(?!&gt;)" />
-			<RegExpr context="#stay" attribute="Value" String="[^/&gt;&lt;&quot;&apos;\s]" />
+			<RegExpr context="#stay" attribute="Value" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
 		</context>
 
 		<!-- HTML -->
diff --git a/xml/nasm.xml b/xml/nasm.xml
--- a/xml/nasm.xml
+++ b/xml/nasm.xml
@@ -61,7 +61,7 @@
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 -->
-<language name="Intel x86 (NASM)" section="Assembler" version="7" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
+<language name="Intel x86 (NASM)" section="Assembler" version="8" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
   <highlighting>
     <list name="registers">
       <!-- General purpose registers -->
@@ -2635,7 +2635,7 @@
 
       <context name="Number" attribute="Number" lineEndContext="#pop">
         <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>
-        <RegExpr attribute="Radix" context="#pop!PrefixedNumber" insensitive="1" String="&prefixedBaseN;" lookAhead="1"/>
+        <RegExpr attribute="Radix" context="#pop!PrefixedNumber" insensitive="1" String="&prefixedBaseN;" lookAhead="1" minimal="1"/>
         <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>
         <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>
       </context>
diff --git a/xml/nim.xml b/xml/nim.xml
--- a/xml/nim.xml
+++ b/xml/nim.xml
@@ -210,8 +210,7 @@
 				<Int     context="#stay" attribute="Decimal"/>
 
 				<RegExpr context="#stay" attribute="Types"  String="\b_*[A-Z](?:\w|\._*[A-Z])*\b"/>
-				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+\b\s*(?=(?:\[.*\]\w*)?(?:\(|(?:[ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))"/>
-				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+(?=&quot;)"/>
+				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+\b\s*(?=(?:\[.*\]\w*)?(?:\(|(?:[ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))|\b\w+(?=&quot;)"/>
 
 				<DetectIdentifier/>
 
@@ -303,7 +302,6 @@
 				<keyword context="#pop" attribute="Types" String="types"/>
 				<RegExpr context="#pop" attribute="Types" String="_*[A-Z]\w*"/>
 				<RegExpr context="#pop" attribute="Funcs" String="_*[a-z]\w*(?=\()"/>
-				<RegExpr context="#pop" attribute="Props" String="_*[a-z]\w*(?=\.)"/>
 				<RegExpr context="#pop" attribute="Props" String="_*[a-z]\w*"/>
 				<RegExpr context="#pop" attribute="Brackets" String="\.+"/>
 			</context>
diff --git a/xml/noweb.xml b/xml/noweb.xml
--- a/xml/noweb.xml
+++ b/xml/noweb.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="noweb" version="4" kateversion="5.53" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
+<language name="noweb" version="5" kateversion="5.53" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
 <!-- 
 #########################################################################
 # First version added to repository was 0.4, added as 1.0 .
@@ -30,8 +30,7 @@
         <IncludeRules context="##C++" includeAttrib="true" />
       </context>
       <context name="CodeSection" attribute="Code" lineEndContext="#stay">
-        <RegExpr String="^@$" attribute="Punctuation" context="RawDocumentation" endRegion="CodeSection" column="0" />
-        <RegExpr String="^@(?=[\s%])" attribute="Punctuation" context="RawDocumentation" endRegion="CodeSection" column="0" />
+        <RegExpr String="^@$|^@(?=[\s%])" attribute="Punctuation" context="RawDocumentation" endRegion="CodeSection" column="0" />
         <RegExpr String="^&lt;&lt;.*&gt;&gt;=$" context="RawDocumentation" lookAhead="true" endRegion="CodeSection" column="0" />
         <IncludeRules context="SectionNames" />
         <IncludeRules context="##C++" includeAttrib="true" />
diff --git a/xml/ocaml.xml b/xml/ocaml.xml
--- a/xml/ocaml.xml
+++ b/xml/ocaml.xml
@@ -17,7 +17,7 @@
           extensions="*.ml;*.mli"
           mimetype="text/x-ocaml"
           section="Sources"
-          version="8"
+          version="9"
           priority="10"
           kateversion="5.0"
           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
@@ -405,10 +405,9 @@
 
       <context name="String" lineEndContext="#stay" attribute="String">
         <DetectChar char="&quot;" context="#pop" attribute="String" />
-        <RegExpr String="&ESC;" context="#stay" attribute="Escaped Characters" />
         <!-- A backslash at the end of a line in a string indicates  -->
         <!-- that the string will continue on the next line:         -->
-        <RegExpr String="\\$" context="#stay" attribute="Escaped Characters" />
+        <RegExpr String="&ESC;|\\$" context="#stay" attribute="Escaped Characters" />
       </context>
 
       <context name="qtest header" lineEndContext="qtest" attribute="Operator">
@@ -447,8 +446,7 @@
         <Detect2Chars char="&gt;" char1="&gt;"     context="#pop"             attribute="Camlp4 Quotation" />
         <Detect2Chars char="&lt;" char1="&lt;"     context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
         <RegExpr String="&lt;:&IDENT;&lt;"         context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
-        <RegExpr String="\\(\\|&gt;&gt;|&lt;&lt;)" context="#stay"            attribute="Escaped Characters" />
-        <RegExpr String="\\&lt;:&IDENT;&lt;"       context="#stay"            attribute="Escaped Characters" />
+        <RegExpr String="\\(\\|&gt;&gt;|&lt;&lt;|&lt;:&IDENT;&lt;)" context="#stay" attribute="Escaped Characters" />
       </context>
 
     <!-- Ocamldoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
@@ -561,8 +559,7 @@
         <Detect2Chars char="v" char1="}" context="#stay" attribute="Mismatched Brackets" />
         <Detect2Chars char="]" char1="}" context="#stay" attribute="Mismatched Brackets" />
         <Detect2Chars char="%" char1="}" context="#stay" attribute="Mismatched Brackets" />
-        <DetectChar   char="]"           context="#stay" attribute="Mismatched Brackets" />
-        <DetectChar   char="}"           context="#stay" attribute="Mismatched Brackets" />
+        <AnyChar      String="]}"        context="#stay" attribute="Mismatched Brackets" />
       </context>
     </contexts>
 
diff --git a/xml/octave.xml b/xml/octave.xml
--- a/xml/octave.xml
+++ b/xml/octave.xml
@@ -21,7 +21,7 @@
 -->
 
 <!-- low priority to let Objective-C win for .m files per default -->
-<language name="Octave" version="11" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
+<language name="Octave" version="12" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
 
   <highlighting>
 
@@ -2765,8 +2765,7 @@
         <keyword context="#stay" attribute="Functions" String="functions" />
         <keyword context="#stay" attribute="Builtin" String="builtin"/>
         <keyword context="#stay" attribute="Forge" String="forge" />
-        <DetectChar context="Comment" attribute="Comment" char="%" />
-        <DetectChar context="Comment" attribute="Comment" char="#" />
+        <AnyChar context="Comment" attribute="Comment" String="%#" />
         <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
         <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
diff --git a/xml/opencl.xml b/xml/opencl.xml
--- a/xml/opencl.xml
+++ b/xml/opencl.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="OpenCL" section="Sources"
-          version="8" kateversion="5.0"
+          version="9" kateversion="5.0"
           indenter="cstyle"
           extensions="*.cl"
           mimetype="text/x-clsrc"
@@ -194,8 +194,7 @@
         <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="Define" String="#\s*define(?:[^\\]++|\\.)++" insensitive="true" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)|#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
diff --git a/xml/perl.xml b/xml/perl.xml
--- a/xml/perl.xml
+++ b/xml/perl.xml
@@ -39,7 +39,7 @@
 
    Enhance tr/// and y/// support.
 -->
-<language name="Perl" version="16" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" version="17" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <item>if</item>
@@ -347,7 +347,7 @@
         <keyword attribute="Operator" context="#stay" String="operators" />
         <keyword attribute="Function" context="#stay" String="functions" />
         <keyword attribute="Pragma" context="#stay" String="pragmas" />
-        <RegExpr attribute="Pod" context="pod" String="\=\w+(\s|$)" column="0" beginRegion="POD"/>
+        <RegExpr attribute="Pod" context="pod" String="^\=\w+(\s|$)" column="0" beginRegion="POD"/>
         <DetectSpaces />
         <DetectChar attribute="Comment" context="comment" char="#" />
 
@@ -384,8 +384,7 @@
 
         <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
 
-        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*//?\=?" />
-        <RegExpr attribute="Normal Text" context="#stay" String="[&lt;&gt;&quot;':]//?\=?" />
+        <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*//?\=?|[&lt;&gt;&quot;':]//?\=?" />
         <!-- Avoid conflicts between operators / and // -->
         <StringDetect attribute="Normal Text" context="#stay" String="//=" />
         <Detect2Chars attribute="Normal Text" context="#stay" char="/" char1="/" />
@@ -428,15 +427,7 @@
       <!-- ====== Contexts for strings ===== -->
       <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
         <DetectIdentifier />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\c[^\s\\]" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\k(\{\w+\}|&lt;\w+&gt;|'\w+')" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\N\{[^\{\}]*\}" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\o\{[0-7]+\}" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\[pP](\{\w+\}|P)" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\[0-7]{3}" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\\[1aAbBdDeEfFGhHKlLnNQrRsStuUvVwWXzZ]" />
+        <RegExpr attribute="String Special Character" context="#stay" String="\\c[^\s\\]|\\g(\{(\w+|\-\d+)\}|\d+)|\\k(\{\w+\}|&lt;\w+&gt;|'\w+')|\\N\{[^\{\}]*\}|\\o\{[0-7]+\}|\\[pP](\{\w+\}|P)|\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})|\\[0-7]{3}|\\[1aAbBdDeEfFGhHKlLnNQrRsStuUvVwWXzZ]" />
         <RegExpr attribute="String (interpolated)" context="#stay" String="\\." />
         <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%([\w\{\-\+!]|\^H))" lookAhead="true" />
       </context>
@@ -605,10 +596,7 @@
       </context>
 
       <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
-        <RegExpr attribute="Pattern" context="#pop" String="\([^)]*\)\s*\(?:[^)]*\)" />
-        <RegExpr attribute="Pattern" context="#pop" String="\{[^}]*\}\s*\{[^}]*\}" />
-        <RegExpr attribute="Pattern" context="#pop" String="\[[^]]*\]\s*\[[^\]]*\]" />
-        <RegExpr attribute="Pattern" context="#pop" String="([^a-zA-Z0-9_\s[\]{}()]).*\1.*\1" minimal="true"/>
+        <RegExpr attribute="Pattern" context="#pop" String="\([^)]*\)\s*\(?:[^)]*\)|\{[^}]*\}\s*\{[^}]*\}|\[[^]]*\]\s*\[[^\]]*\]|([^a-zA-Z0-9_\s[\]{}()]).*?\1.*?\1"/>
       </context>
 
       <!-- ====== PATTERNs ====== -->
@@ -662,13 +650,7 @@
       <!-- rules internal stuff wrt regex patterns -->
       <context name="regex_pattern_internal_rules_1" attribute="Pattern" lineEndContext="#stay">
         <DetectChar attribute="Comment" context="comment" char="#" firstNonSpace="true" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\c[^\s\\]" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\k(\{\w+\}|&lt;\w+&gt;|'\w+')" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\N\{[^\{\}]*\}" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\o\{[0-7]+\}" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\[pP](\{\w+\}|P)" />
-        <RegExpr attribute="Special Variable" context="#stay" String="\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})" />
+        <RegExpr attribute="Special Variable" context="#stay" String="\\c[^\s\\]|\\g(\{(\w+|\-\d+)\}|\d+)|\\k(\{\w+\}|&lt;\w+&gt;|'\w+')|\\N\{[^\{\}]*\}|\\o\{[0-7]+\}|\\[pP](\{\w+\}|P)|\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})" />
         <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[anDdSsWw]" />
         <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[ABbEGLlNUuQdQZz]" /> <!-- Also?: efFhHKrRtvVX -->
         <RegExpr attribute="Special Variable" context="#stay" String="\\[\d]+" />
@@ -712,17 +694,10 @@
       <!-- ====== Variables ====== -->
       <context name="find_variable" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
         <RegExpr attribute="Data Type" context="var_detect" String="\$[#_][\w_]" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="\$\^[A-Z_\]\[\^\?\\]" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="%([\-\+!]|\^H)" />
-        <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]" />
-        <RegExpr attribute="Data Type" context="var_detect" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="\$[0-9]+|[@\$](?:[\+\-_]\B|ARGV\b|INC\b)|[%\$](?:INC\b|ENV\b|SIG\b)|\$\^[A-Z_\]\[\^\?\\]|%([\-\+!]|\^H)" />
+        <RegExpr attribute="Data Type" context="var_detect" String="\$\$[\$\w_]|\$+::" />
         <RegExpr attribute="Special Variable" context="var_detect" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
-        <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{\^?[\w_]+\}" />
-        <AnyChar attribute="Data Type" context="var_detect" String="$@%" />
-        <RegExpr attribute="Data Type" context="var_detect" String="\*[a-zA-Z_]+" />
+        <RegExpr attribute="Data Type" context="var_detect" String="[\$@%]\{\^?[\w_]+\}|[$@%]|\*[a-zA-Z_]+" />
         <!-- Do not highlight brackets after *, Ex: (... @*) (see bug #391577) -->
         <RegExpr attribute="Special Variable" context="#stay" String="\*[^a-zA-Z0-9\s\{\(\)\[\]\}][A-Z]?" />
         <!-- this should be a rare case! -->
@@ -731,17 +706,11 @@
       <!-- This does not check fo a trailing slash, for usage in strings. -->
       <context name="find_variable_unsafe" attribute="Data Type" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
         <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$[#_][\w_]" />
-        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+" />
-        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[@\$](?:[\+\-_]\B|ARGV\b|INC\b)" />
-        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="[%\$](?:INC\b|ENV\b|SIG\b)" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="\$\^[A-Z_\]\[\^\?\\]" />
-        <RegExpr attribute="Special Variable" context="var_detect" String="%([\-\+!]|\^H)" />
-        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]" />
-        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$+::" />
+        <RegExpr attribute="Special Variable" context="var_detect_unsafe" String="\$[0-9]+|[@\$](?:[\+\-_]\B|ARGV\b|INC\b)|[%\$](?:INC\b|ENV\b|SIG\b)" />
+        <RegExpr attribute="Special Variable" context="var_detect" String="\$\^[A-Z_\]\[\^\?\\]|%([\-\+!]|\^H)" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\$\$[\$\w_]|\$+::" />
         <RegExpr attribute="Special Variable" context="#stay" String="\$[^a-zA-Z0-9\s{][A-Z]?" />
-        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{\^?[\w_]+\}" />
-        <AnyChar attribute="Data Type" context="var_detect_unsafe" String="$@%" />
-        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="\*\w+" />
+        <RegExpr attribute="Data Type" context="var_detect_unsafe" String="[\$@%]\{\^?[\w_]+\}|[$@%]|\*\w+" />
         <AnyChar attribute="Operator" context="#pop" String="$@%*" />
       </context>
       <context name="var_detect"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
@@ -790,13 +759,11 @@
 
       <!-- ====== Here Documents ====== -->
       <context name="find_here_document" attribute="Normal Text" lineEndContext="#pop" >
-        <RegExpr attribute="Keyword" context="here_document" String="(\w+)\s*;?" />
-        <RegExpr attribute="Keyword" context="here_document" String="\s*&quot;([^&quot;]+)&quot;\s*;?" />
-        <RegExpr attribute="Keyword" context="here_document" String="\s*`([^`]+)`\s*;?" />
+        <RegExpr attribute="Keyword" context="here_document" String="(?|(\w+)\s*;?|\s*&quot;([^&quot;]+)&quot;\s*;?|\s*`([^`]+)`\s*;?)" />
         <RegExpr attribute="Keyword" context="here_document_dumb" String="\s*'([^']+)'\s*;?" />
       </context>
       <context name="here_document" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="Keyword" context="#pop#pop" String="%1\b" column="0" dynamic="true" endRegion="HereDocument"/>
+        <RegExpr attribute="Keyword" context="#pop#pop" String="^%1\b" column="0" dynamic="true" endRegion="HereDocument"/>
         <RegExpr attribute="Keyword" context="here_document" String="\=\s*&lt;&lt;\s*[&quot;']?([A-Z0-9_\-]+)[&quot;']?" beginRegion="HEREDoc" />
         <IncludeRules context="ipstring_internal" />
         <DetectSpaces />
@@ -809,7 +776,7 @@
 
       <!-- ====== Misc ====== -->
       <context name="data_handle" attribute="Data" lineEndContext="#stay">
-        <RegExpr attribute="Pod" context="pod" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/>
+        <RegExpr attribute="Pod" context="pod" String="^\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s+.*" column="0" beginRegion="POD"/>
         <StringDetect attribute="Keyword" context="normal" String="__END__" firstNonSpace="true" />
       </context>
 
@@ -840,7 +807,7 @@
       <context name="pod" attribute="Pod" lineEndContext="#stay">
         <DetectSpaces />
         <DetectIdentifier />
-        <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
+        <RegExpr attribute="Pod" context="#stay" String="^\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
         <StringDetect attribute="Pod" context="Pod" String="=cut" column="0" endRegion="POD"/>
       </context>
 
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,7 +1,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
   name="PowerShell"
-  version="10"
+  version="11"
   kateversion="5.0"
   extensions="*.ps1;*.psm1;*.psd1"
   section="Scripts"
@@ -884,16 +884,14 @@
         <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" char1="#" beginRegion="CommentRegion"/>
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b\$global(?=\s+(:))"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b\$script(?=\s+(:))"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b\$(global|script)(?=\s+(:))"/>
         <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
         <keyword attribute="Special Variable" context="#stay" String="special-variables"/>
         <DetectChar attribute="Symbol" context="Member" char="." />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
       </context>
       <context attribute="String Char" lineEndContext="#stay" name="StringEscape">
-        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]" context="#stay"/>
-        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}" context="#stay"/>
+        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]|`u\{[0-9A-Fa-f]+\}" context="#stay"/>
       </context>
       <context attribute="String" lineEndContext="#pop" name="String">
         <IncludeRules context="StringEscape"/>
diff --git a/xml/prolog.xml b/xml/prolog.xml
--- a/xml/prolog.xml
+++ b/xml/prolog.xml
@@ -105,7 +105,7 @@
     <!ENTITY bs         "\">
 ]>
 <language name="Prolog" section="Sources"
-	  version="14" kateversion="5.62"
+	  version="15" kateversion="5.62"
 	  mimetype="text/x-prolog"
 	  extensions="*.prolog;*.dcg;*.pro"
 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
@@ -545,8 +545,7 @@
 		<DetectChar char="(" context="nested" beginRegion="nested" attribute="( ) [ ]" />
 		<DetectChar char="[" context="list" beginRegion="list" attribute="( ) [ ]" />
 		<DetectChar char="{" context="curly" beginRegion="curly" attribute="{ DCG }" />
-		<DetectChar char="&comma;" context="#stay" attribute="Logic &amp; Control" />
-		<DetectChar char="&cut;" context="#stay" attribute="Logic &amp; Control" />
+		<AnyChar String="&comma;&cut;" context="#stay" attribute="Logic &amp; Control" />
 		<DetectChar char="&bar;" context="#stay" attribute="Normal Text" />
 		<!-- lookAhead to give different style to the dot and the brace -->
 		<Detect2Chars lookAhead="true" char="&dot;" char1="(" context="list_functor" attribute="Syntax Error" />
@@ -561,8 +560,7 @@
 		<DetectChar char="(" context="nested" beginRegion="nested" attribute="( ) [ ]" />
 		<DetectChar char="[" context="list" beginRegion="list" attribute="( ) [ ]" />
 		<DetectChar char="{" context="curly" beginRegion="curly" attribute="{ DCG }" />
-		<DetectChar char="&cut;" context="#stay" attribute="Logic &amp; Control" />
-		<DetectChar char="&comma;" context="#stay" attribute="Logic &amp; Control" />
+		<AnyChar String="&cut;&comma;" context="#stay" attribute="Logic &amp; Control" />
 		<DetectChar char="&bar;" context="#stay" attribute="Normal Text" />
 		<Detect2Chars lookAhead="true" char="&dot;" char1="(" context="list_functor" attribute="Normal Text" />
 		<RegExpr String="&fullstop_iso;" context="#stay" attribute="Warning (!use background)" />
@@ -574,8 +572,7 @@
 		<DetectChar char="]" context="#pop" endRegion="list" attribute="( ) [ ]" />
 		<DetectChar char="[" context="list" beginRegion="list" attribute="( ) [ ]" />
 		<DetectChar char="{" context="curly" beginRegion="curly" attribute="( ) [ ]" />
-		<DetectChar char="&comma;" context="#stay" attribute="Normal Text" />
-		<DetectChar char="&cut;" context="#stay" attribute="Normal Text" />
+		<AnyChar String="&comma;&cut;" context="#stay" attribute="Normal Text" />
 		<DetectChar char="&bar;" context="#stay" attribute="other built-in operator" />
 		<Detect2Chars lookAhead="true" char="&dot;" char1="(" context="list_functor" attribute="Normal Text" />
 		<IncludeRules context="atomic" />
@@ -586,8 +583,7 @@
 		<DetectChar char="[" context="list" beginRegion="list" attribute="( ) [ ]" />
 		<DetectChar char="}" context="#pop" endRegion="curly" attribute="{ DCG }" />
 		<DetectChar char="{" context="curly" beginRegion="curly" attribute="{ DCG }" />
-		<DetectChar char="&comma;" context="#stay" attribute="Logic &amp; Control" />
-		<DetectChar char="&cut;" context="#stay" attribute="Logic &amp; Control" />
+		<AnyChar String="&comma;&cut;" context="#stay" attribute="Logic &amp; Control" />
 		<DetectChar char="&bar;" context="#stay" attribute="Normal Text" />
 		<Detect2Chars lookAhead="true" char="&dot;" char1="(" context="list_functor" attribute="Normal Text" />
 		<IncludeRules context="atomic" />
@@ -605,13 +601,11 @@
 		<DetectChar lookAhead="true" char="}" context="#pop" attribute="{ DCG }" />
 		<DetectChar lookAhead="true" char="]" context="#pop" attribute="( ) [ ]" />
 		<!-- FIXME check if cut may be an op, else (and in any case 99.9% likely) it's a usual cut here -->
-		<DetectChar lookAhead="true" char="&cut;" context="#pop" attribute="Logic &amp; Control" />
-		<DetectChar lookAhead="true" char="&comma;" context="#pop" attribute="Logic &amp; Control" />
+		<AnyChar lookAhead="true" String="&cut;&comma;" context="#pop" attribute="Logic &amp; Control" />
 		<!-- bar & dot could be a user-def'd op, pre-def'd ops could be
 		redef'd; but let's assume the default and just end the expr -->
 		<DetectChar lookAhead="true" char="&bar;" context="#pop" attribute="other built-in operator" />
-		<RegExpr lookAhead="true" String="&fullstop_iso;" context="#pop" attribute="Logic &amp; Control" />
-		<RegExpr lookAhead="true" String="&logic_control_ops_iso;" context="#pop" attribute="Logic &amp; Control" />
+		<RegExpr lookAhead="true" String="&fullstop_iso;|&logic_control_ops_iso;" context="#pop" attribute="Logic &amp; Control" />
 		<IncludeRules context="arith_expr_common" />
 	    </context>
 	    <context name="nested_expr" lineEndContext="#stay" attribute="Syntax Error" noIndentationBasedFolding="true" >
@@ -726,8 +720,7 @@
 	    ASSERT esc'd newline is handled by the calling context
 	    ASSERT we get the leading bs here to highlight the whole thing -->
 	    <context name="esc_seq_q" lineEndContext="syntax_error" attribute="Syntax Error" >
-		<RegExpr String="&esc_oct_iso;" context="#pop" attribute="0'a (!use background)" />
-		<RegExpr String="&esc_hex_iso;" context="#pop" attribute="0'a (!use background)" />
+		<RegExpr String="&esc_oct_iso;|&esc_hex_iso;" context="#pop" attribute="0'a (!use background)" />
 		<DetectChar char="&bs;" context="esc_seq_q2" attribute="escaped (!use background)" />
 	    </context>
 	    <!-- esc_seq_cc: #pop#pop out of cc on std esc seq, else pass char back
@@ -907,9 +900,7 @@
 		<Detect2Chars char="0" char1="o" context="oct" attribute="0b1001 0o007 0xF1" />
 		<Detect2Chars char="0" char1="x" context="hex" attribute="0b1001 0o007 0xF1" />
 
-		<RegExpr String="&float1_iso;" context="#stay" attribute="2.718281E-9" />
-		<RegExpr String="&float2_iso;" context="#stay" attribute="2.718281E-9" />
-		<RegExpr String="&float3_iso;" context="#stay" attribute="2.718281E-9" />
+		<RegExpr String="&float1_iso;|&float2_iso;|&float3_iso;" context="#stay" attribute="2.718281E-9" />
 		<Int context="#stay" attribute="1  2  3  42" />
 	    </context>
 
@@ -922,9 +913,7 @@
 		<RegExpr String="&predefined_ops_iso;" context="#stay" attribute="other built-in operator" />
 		<RegExpr String="&dcg_production_iso;" context="#stay" attribute="{ DCG }" />
 		<RegExpr String="&arith_compare_iso;" context="arith_expr" attribute="Arithmetics" />
-		<RegExpr String="&arith_ops_mixed_iso;" context="#stay" attribute="other built-in operator" />
-		<RegExpr String="&arith_ops_int_iso;" context="#stay" attribute="other built-in operator" />
-		<RegExpr String="&arith_ops_float_iso;" context="#stay" attribute="other built-in operator" />
+		<RegExpr String="&arith_ops_mixed_iso;|&arith_ops_int_iso;|&arith_ops_float_iso;" context="#stay" attribute="other built-in operator" />
 		<RegExpr String="&arith_bogus_iso;" context="#stay" attribute="ISO Bogus" />
 	    </context>
 
diff --git a/xml/pure.xml b/xml/pure.xml
--- a/xml/pure.xml
+++ b/xml/pure.xml
@@ -32,7 +32,7 @@
  Boston, MA 02111-1307, USA.
 
 -->
-<language name="Pure" version="4" kateversion="5.0" section="Sources" extensions="*.pure">
+<language name="Pure" version="5" kateversion="5.0" section="Sources" extensions="*.pure">
   <highlighting>
     <list name="blockstarters">
       <item>case</item>
@@ -104,7 +104,7 @@
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Function" context="#stay" String="special"/>
         <keyword attribute="Type" context="#stay" String="types"/>
-        <RegExpr attribute="Normal Text" context="#stay" String="[A-Za-z_][A-Za-z0-9_]*"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
         <RegExpr attribute="Number" context="#stay" String="0x[A-Za-z0-9]+"/>
         <Float attribute="Number" context="#stay"/>
         <Int attribute="Number" context="#stay"/>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -4,6 +4,35 @@
 	<!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;]?)?\}">
 ]>
 <!-- Python syntax highlightning v0.9 by Per Wigren -->
 <!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
@@ -19,7 +48,7 @@
 <!-- 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="13" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="14" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;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>
@@ -355,8 +384,7 @@
 				<RegExpr attribute="Binary" String="&beforeDigit;0[bB](?:_?[01])+\b" context="#stay"/>
 				<RegExpr attribute="Octal" String="&beforeDigit;0[oO](?:_?[0-7])+\b" context="#stay"/>
 				<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
-				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)[eE][\+\-]?&digitPart;\b" context="#stay"/>
-				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;\.(?:&digitPart;\b)?|&beforePointFloat;\.&digitPart;\b)" context="#stay"/>
+				<RegExpr attribute="Float" String="(?:&beforeDigit;&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)[eE][\+\-]?&digitPart;\b|(?:&beforeDigit;&digitPart;\.(?:&digitPart;\b)?|&beforePointFloat;\.&digitPart;\b)" context="#stay"/>
 				<!-- Decimal: 123 ; 000 -->
 				<RegExpr attribute="Int" String="&beforeDigit;(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?\b" context="#stay"/>
 
@@ -479,34 +507,7 @@
 
 			<!-- format characters -->
 			<context name="stringformat" attribute="String Substitution" lineEndContext="#stay">
-				<!-- 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]
-				-->
-				<RegExpr attribute="String Substitution" String="%(?:(?:\([a-zA-Z0-9_]+\))?[#0\- +]?(?:[1-9][0-9]*|\*)?(?:\.(?:[1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG%]|prog|default)" context="#stay"/>
-				<!-- 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" | "%"
-				-->
-				<RegExpr attribute="String Substitution" String="\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?(?:![rs])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#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>
@@ -516,12 +517,7 @@
 				<!-- 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]" context="#stay"/>
-				<RegExpr attribute="String Char" String="\\[0-7]{1,3}" context="#stay"/>
-				<RegExpr attribute="String Char" String="\\x[0-9A-Fa-f]{2}" context="#stay"/>
-				<RegExpr attribute="String Char" String="\\u[0-9A-Fa-f]{4}" context="#stay"/>
-				<RegExpr attribute="String Char" String="\\U[0-9A-Fa-f]{8}" context="#stay"/>
-				<RegExpr attribute="String Char" String="\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/>
+				<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>
 
 			<!-- f-literals -->
diff --git a/xml/r.xml b/xml/r.xml
--- a/xml/r.xml
+++ b/xml/r.xml
@@ -8,7 +8,7 @@
 	R      : http://www.r-project.org/
 	RKWard : http://rkward.kde.org/
 	-->
-<language version="10" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="11" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -41,8 +41,7 @@
 		<context attribute="Normal Text" lineEndContext="#stay" name="level0">
 			<IncludeRules context="CommonRules"/>
 
-			<DetectChar attribute="Error" context="#stay" char="}" />
-			<DetectChar attribute="Error" context="#stay" char=")"/>
+			<AnyChar attribute="Error" context="#stay" String="})"/>
 		</context>
 
 		<context attribute="Normal Text" lineEndContext="#stay" name="ctx0">
@@ -110,8 +109,7 @@
 			<keyword attribute="Reserved Words" context="#stay" String="words"/>
 			<Float attribute="Float" context="#stay"/>
 			<Int attribute="Int" context="#stay"/>
-			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
-			<RegExpr attribute="Keyword" context="#stay" String="\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
+			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])|\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
 			<DetectChar attribute="Symbol" context="parenthesis" char="("/>
 
 			<!-- For (assignment) operators, enter a new context operator_rhs to check what follows (generally, that should not be another op) -->
diff --git a/xml/roff.xml b/xml/roff.xml
--- a/xml/roff.xml
+++ b/xml/roff.xml
@@ -2,12 +2,20 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
   <!ENTITY roffidc "[^]\s]">
-  <!ENTITY roffid  "(&roffidc;|\(&roffidc;{2}|\[&roffidc;+\])">
+  <!ENTITY roffid  "(?:&roffidc;|\(&roffidc;{2}|\[&roffidc;+\])">
   <!ENTITY roffnum "([0-9]+)">
   <!ENTITY argsep1 "([^\\]|\\[&#37; |\^{}'`\-!?@)/,&amp;:~0E_acdeprtu])">
   <!ENTITY argsep2 "([^\\0-9]|\\[&#37;:{}'`\-_!@/cep])">
+
+  <!ENTITY font1 "\\[fF]&roffid;">
+  <!ENTITY font2 "\\f([0-9]|\([0-9][0-9]|\[[0-9]+\])">
+  <!ENTITY font3 "\\s(\[([1-3][0-9]|[04-9])\]|[04-9]|[+-][0-9]|([+-]?\(|\([+-])[0-9][0-9])">
+
+  <!ENTITY escape1 "\\(\$[0-9*@]|[.:&#37; |^{}_!?@)/,&amp;:~0acdeEprtu])">
+  <!ENTITY escape2 "\\[gkmMVYz]&roffid;">
+  <!ENTITY escape3 "\\O([0-4]|\[5[lrci][^]]\])">
 ]>
-<language name="Roff" section="Markup" version="6" kateversion="5.0" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
+<language name="Roff" section="Markup" version="7" kateversion="5.0" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
 
   <highlighting>
 
@@ -32,7 +40,7 @@
       </context>
 
       <context name="DetectComments" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="Comment" String="\.\s*\\&quot;" column="0"/>
+        <RegExpr attribute="Comment" context="Comment" String="^\.\s*\\&quot;" column="0"/>
         <Detect2Chars attribute="Comment" context="Comment" char="\" char1="&quot;"/>
         <Detect2Chars attribute="Comment" context="Comment" char="\" char1="#"/>
       </context>
@@ -47,20 +55,14 @@
       <!-- detect escapes -->
       <context name="DetectEscape" attribute="Error" lineEndContext="#pop">
         <RegExpr attribute="Register" context="#pop" String="\\(\*|n[+-]?)&roffid;"/>
-        <RegExpr attribute="Font" context="#pop" String="\\[fF]&roffid;"/>
-        <RegExpr attribute="Font" context="#pop" String="\\f([0-9]|\([0-9][0-9]|\[[0-9]+\])"/>
-        <RegExpr attribute="Font" context="#pop" String="\\s(\[([1-3][0-9]|[04-9])\]|[04-9]|[+-][0-9]|([+-]?\(|\([+-])[0-9][0-9])"/>
+        <RegExpr attribute="Font" context="#pop" String="&font1;|&font2;|&font3;"/>
         <Detect2Chars attribute="Escape" context="#pop" char="\" char1="\"/>
-        <RegExpr attribute="Escape" context="#pop" String="\\(\$[0-9*@]|[.:&#37; |^{}_!?@)/,&amp;:~0acdeEprtu])"/>
         <RegExpr attribute="Escape" context="Argument" String="\\[ABDXZbow]&argsep1;"/>
-        <RegExpr attribute="Escape" context="#pop" String="\\[gkmMVYz]&roffid;"/>
-        <RegExpr attribute="Escape" context="#pop" String="\\O([0-4]|\[5[lrci][^]]\])"/>
-        <RegExpr attribute="Escape" context="Measurement" String="\\[hHSvx]&argsep1;"/>
-        <RegExpr attribute="Escape" context="Measurement" String="\\[lL]&argsep1;\|?"/> <!-- TODO - optional trailing &glyph; -->
+        <RegExpr attribute="Escape" context="#pop" String="&escape1;|&escape2;|&escape3;"/>
+        <RegExpr attribute="Escape" context="Measurement" String="(?|\\[hHSvx]&argsep1;|\\[lL]&argsep1;\|?)"/> <!-- TODO - optional trailing &glyph; -->
         <RegExpr attribute="Escape" context="Argument" String="\\R&argsep1;"/> <!-- TODO - &roffid; (register), measurement -->
         <RegExpr attribute="Glyph" context="GlyphArgument" String="\\C&argsep1;"/>
-        <RegExpr attribute="Glyph" context="#pop" String="\\N&argsep2;[0-9]+\1"/>
-        <RegExpr attribute="Glyph" context="#pop" String="\\&roffid;"/>
+        <RegExpr attribute="Glyph" context="#pop" String="\\N&argsep2;[0-9]+\1|\\&roffid;"/>
         <RegExpr attribute="Escape" context="#pop" String="\\$"/>
         <DetectChar attribute="Error" context="#pop" char="\"/>
       </context>
@@ -135,7 +137,7 @@
       <!-- .di directives -->
       <context name="diDirective" attribute="Identifier" lineEndContext="diBody"/>
       <context name="diBody" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Other Macros" context="#pop#pop" String="\.\s*di\b" column="0" endRegion="di"/>
+        <RegExpr attribute="Other Macros" context="#pop#pop" String="^\.\s*di\b" column="0" endRegion="di"/>
         <Detect2Chars attribute="Escape" context="LiteralSL" char="\" char1="!"/>
         <Detect2Chars attribute="Escape" context="LiteralIL" char="\" char1="?"/>
         <IncludeRules context="Normal"/>
@@ -144,7 +146,7 @@
       <!-- .da directives -->
       <context name="daDirective" attribute="Identifier" lineEndContext="daBody"/>
       <context name="daBody" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Other Macros" context="#pop#pop" String="\.\s*da\b" column="0" endRegion="di"/>
+        <RegExpr attribute="Other Macros" context="#pop#pop" String="^\.\s*da\b" column="0" endRegion="di"/>
         <Detect2Chars attribute="Escape" context="LiteralSL" char="\" char1="!"/>
         <Detect2Chars attribute="Escape" context="LiteralIL" char="\" char1="?"/>
         <IncludeRules context="Normal"/>
diff --git a/xml/ruby.xml b/xml/ruby.xml
--- a/xml/ruby.xml
+++ b/xml/ruby.xml
@@ -31,7 +31,7 @@
 
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
 <language name="Ruby" section="Scripts"
-	  version="15" kateversion="5.0"
+	  version="16" kateversion="5.0"
 	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"
 	  mimetype="application/x-ruby"
 	  style="ruby" indenter="ruby"
@@ -191,20 +191,17 @@
 				<LineContinue attribute="Normal Text" context="Line Continue"/>
 
 				<!-- __END__ token on own line. -->
-				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
+				<RegExpr attribute="Keyword" String="^__END__$" context="DATA" column="0"/>
 
 				<!-- "shebang" line -->
-				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+				<RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>
 
 				<!-- "def" - "end" blocks -->
 				<!-- check for statement modifiers with regexes -->
 				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
 				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
-				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
-				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" />
-				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
 				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
-				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>
@@ -237,8 +234,7 @@
 				<!-- (global) vars starting with $
 						Match them before $_.
 				-->
-				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+" context="check_div_1"/>
-				<RegExpr attribute="Global Variable" String="\$\-[a-zA-Z_]\b" context="check_div_1"/>
+				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+|\$\-[a-zA-Z_]\b" context="check_div_1"/>
 				<!-- special-character globals -->
 				<RegExpr attribute="Default globals" String="\$[\d_*`+@;,.~=\!\$:?'/\\\-\&amp;&quot;&gt;&lt;]" context="check_div_1"/>
 				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>
@@ -270,21 +266,16 @@
 				<DetectChar attribute="Operator" char="." context="#stay"/>
 				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
 				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
-				<RegExpr attribute="Operator" String="\s[\?\:\%]\s" context="#stay"/>
-				<RegExpr attribute="Operator" String="[|&amp;&lt;&gt;\^\+*~\-=]+" context="#stay"/>
-				<!-- regexp hack -->
-				<RegExpr attribute="Operator" String="\s!" context="#stay"/>
-				<RegExpr attribute="Operator" String="/=\s" context="#stay" insensitive="0"/>
+				<!-- \s! is regexp hack -->
+				<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
 				<Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>
 				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
 
-				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?" context="check_div_1"/>
-				<RegExpr attribute="Symbol" String=":\[\]=?" context="check_div_1"/>
+				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>
 
 				<!-- Do not send to "check_div_1" context!:
 				     after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
-				<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: " context="#stay"/>
-				<RegExpr attribute="Symbol" String="\[\]=?: " context="#stay"/>
+				<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
 
 				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
 				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
@@ -292,8 +283,8 @@
 
 				<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
 
-				<RegExpr attribute="Comment" String="#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
-				<RegExpr attribute="Comment" String="#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="^#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="^#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
 				<DetectChar attribute="Comment" char="#" context="General Comment"/>
 
 				<DetectChar attribute="Delimiter" char="["  context="#stay"/>
@@ -354,8 +345,7 @@
 			</context>
 
 			<context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">
-				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
-				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)|(if|unless)\b" context="#stay" firstNonSpace="true"/>
 				<IncludeRules context="Normal"/>
 			</context>
 
@@ -441,15 +431,11 @@
 			<!-- here we markup the heredoc markers -->
 			<context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
-				<RegExpr attribute="Keyword" context="normal_heredoc" String="(\w+)" />
-				<RegExpr attribute="Keyword" context="normal_heredoc" String="&quot;(\w+)&quot;" />
-				<RegExpr attribute="Keyword" context="normal_heredoc" String="`(\w+)`" />
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
 			</context>
 			<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
-				<RegExpr attribute="Keyword" context="indented_heredoc" String="(\w+)" />
-				<RegExpr attribute="Keyword" context="indented_heredoc" String="&quot;(\w+)&quot;" />
-				<RegExpr attribute="Keyword" context="indented_heredoc" String="`(\w+)`" />
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
 			</context>
 			<!-- these are the real heredoc contexts -->
 			<context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
@@ -461,11 +447,11 @@
 			</context>
 
 			<context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
 				<IncludeRules context="heredoc_rules" />
 			</context>
 			<context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
 			</context>
 
 			<!-- rules for heredoc types -->
@@ -479,8 +465,8 @@
 				<DetectSpaces />
 				<Detect2Chars attribute="Operator" char="&lt;" char1="&lt;" context="#pop"/>
 				<!-- comments -->
-				<RegExpr attribute="Comment" String="#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
-				<RegExpr attribute="Comment" String="#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="^#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="^#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
 				<DetectChar attribute="Comment" char="#" context="General Comment"/>
 			</context>
 
diff --git a/xml/rust.xml b/xml/rust.xml
--- a/xml/rust.xml
+++ b/xml/rust.xml
@@ -32,8 +32,15 @@
 	<!ENTITY rustIntSuf "(?:[iu](?:8|16|32|64|128|size)?)?">
 	<!ENTITY commonEscape "(?:[trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">
 	<!ENTITY unicodeEscape "u\{(?:[0-9a-fA-F]_*){1,6}\}">
+
+	<!ENTITY hexadecimal_octal_binary "\b0(?:x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b">
+	<!ENTITY float_decimal "\b[0-9][0-9_]*(?:(?:\.[0-9][0-9_]*)?(?:[eE][\+\-]?[0-9_]+)?(?:f32|f64)?|&rustIntSuf;)\b">
+
+	<!ENTITY scope1 "&rustIdent;::">
+	<!ENTITY scope2 "::(?=[^\s\:])"> <!-- Points after keyword or group { } -->
+
 ]>
-<language name="Rust" version="10" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" version="11" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
 <highlighting>
 	<list name="fn">
 		<item>fn</item>
@@ -371,16 +378,12 @@
 			<keyword String="cconstants" attribute="CConstant" context="#stay"/>
 			<keyword String="traits" attribute="Trait" context="#stay"/>
 			<IncludeRules context="FindComments"/>
-			<!-- Hexadecimal, Octal & Binary -->
-			<RegExpr String="\b0(?:x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/>
-			<!-- Float & Decimal -->
-			<RegExpr String="\b[0-9][0-9_]*(?:(?:\.[0-9][0-9_]*)?(?:[eE][\+\-]?[0-9_]+)?(?:f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/>
+			<RegExpr String="&hexadecimal_octal_binary;|&float_decimal;" attribute="Number" context="#stay"/>
 			<!-- Invalid number -->
 			<RegExpr String="\b0(?:b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/>
 			<Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
-			<RegExpr String="&rustIdent;::" attribute="Scope"/>
-			<RegExpr String="::(?=[^\s\:])" attribute="Scope"/> <!-- Points after keyword or group { } -->
+			<RegExpr String="&scope1;|&scope2;" attribute="Scope"/>
 			<RegExpr String="&rustIdent;!" attribute="Macro"/>
 			<RegExpr String="&apos;&rustIdent;(?!&apos;)" attribute="Lifetime"/>
 			<DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" />
@@ -408,15 +411,12 @@
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Function">
 			<DetectSpaces/>
-			<DetectChar char="(" attribute="Normal Text" context="#pop" lookAhead="true"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<AnyChar String="(&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
 			<IncludeRules context="FindComments"/>
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Type">
 			<DetectSpaces/>
-			<DetectChar char="=" attribute="Normal Text" context="#pop" lookAhead="true"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
-			<DetectChar char=";" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<AnyChar String="=&lt;;" attribute="Normal Text" context="#pop" lookAhead="true"/>
 			<IncludeRules context="FindComments"/>
 		</context>
 		<!-- Rustc allows strings to extend over multiple lines, and the
diff --git a/xml/sed.xml b/xml/sed.xml
--- a/xml/sed.xml
+++ b/xml/sed.xml
@@ -1,13 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="sed" section="Scripts" version="6" kateversion="5.0" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
+<language name="sed" section="Scripts" version="7" kateversion="5.0" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
         <highlighting>
                 <contexts>
                         <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">
                                 <DetectSpaces/>
                                 <DetectChar char="#"     attribute="Comment"     context="Comment"/>
-                                <RegExpr String="(/)"    attribute="Separator"   context="FirstAddressRegex"/>
-                                <RegExpr String="\\(\S)" attribute="Separator"   context="FirstAddressRegex"/>
+                                <RegExpr String="(?|(/)|\\(\S))" attribute="Separator"   context="FirstAddressRegex"/>
                                 <Int                     attribute="Line Number" context="AfterFirstAddress"/>
                                 <DetectChar char="$"     attribute="Last Line"   context="AfterFirstAddress"/>
                                 <DetectChar char="}"     attribute="Brace"       context="AfterCommand"/>
@@ -38,8 +37,7 @@
 
                         <context name="SecondAddress" attribute="Normal" lineEndContext="Error">
                                 <DetectSpaces/>
-                                <RegExpr String="(/)"    attribute="Separator"   context="SecondAddressRegex"/>
-                                <RegExpr String="\\(\S)" attribute="Separator"   context="SecondAddressRegex"/>
+                                <RegExpr String="(?|(/)|\\(\S))" attribute="Separator"   context="SecondAddressRegex"/>
                                 <Int                     attribute="Line Number" context="AfterSecondAddress"/>
                                 <DetectChar char="$"     attribute="Last Line"   context="AfterSecondAddress"/>
                                 <RegExpr String="\S"     attribute="Error"       context="Error"/>
@@ -208,12 +206,7 @@
                                 <Detect2Chars char="\" char1="7" attribute="Regex Escape" context="#stay"/>
                                 <Detect2Chars char="\" char1="8" attribute="Regex Escape" context="#stay"/>
                                 <Detect2Chars char="\" char1="9" attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="*"           attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="."           attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="^"           attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="$"           attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="["           attribute="Regex Escape" context="#stay"/>
-                                <DetectChar   char="]"           attribute="Regex Escape" context="#stay"/>
+                                <AnyChar String="*.^$[]"         attribute="Regex Escape" context="#stay"/>
                         </context>
 
                         <context name="Comment" attribute="Comment" lineEndContext="#pop">
diff --git a/xml/spdx-comments.xml b/xml/spdx-comments.xml
--- a/xml/spdx-comments.xml
+++ b/xml/spdx-comments.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
-    version="4"
+    version="5"
     kateversion="3.1"
     name="SPDX-Comments"
     section="Other"
@@ -529,9 +529,7 @@
 
       <context name="license-expression" attribute="SPDX Value" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces/>
-        <DetectChar char="(" context="#stay" attribute="SPDX License Expression Operator" />
-        <DetectChar char=")" context="#stay" attribute="SPDX License Expression Operator" />
-        <DetectChar char="+" context="#stay" attribute="SPDX License Expression Operator" />
+        <AnyChar String="()+" context="#stay" attribute="SPDX License Expression Operator" />
         <keyword String="licenses" context="#stay" attribute="SPDX License" />
         <keyword String="deprecated-licenses" context="#stay" attribute="SPDX Deprecated License" />
         <keyword String="exceptions" context="#stay" attribute="SPDX License Exception" />
diff --git a/xml/sql-mysql.xml b/xml/sql-mysql.xml
--- a/xml/sql-mysql.xml
+++ b/xml/sql-mysql.xml
@@ -6,7 +6,7 @@
   modifications by Milian Wolff (mail@milianw.de)
   v3 fix comments by Gene Thomas <gene@genethomas.com>
 -->
-<language name="SQL (MySQL)" version="8" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+<language name="SQL (MySQL)" version="9" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -417,7 +417,7 @@
         <DetectChar attribute="String" context="String2" char="&quot;"/>
         <DetectChar attribute="Name" context="Name" char="`"/>
 
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^@@?[^@ \t\r\n]" column="0"/>
         <!-- for something like : SELECT DB.TABLE.ROW ... -->
         <DetectChar attribute="String Char" context="#stay" char="."/>
       </context>
diff --git a/xml/sql-postgresql.xml b/xml/sql-postgresql.xml
--- a/xml/sql-postgresql.xml
+++ b/xml/sql-postgresql.xml
@@ -3,7 +3,7 @@
 <!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev
      v5 fix comments by Gene Thomas <gene@genethomas.com>
   -->
-<language name="SQL (PostgreSQL)" version="12" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+<language name="SQL (PostgreSQL)" version="13" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -1015,7 +1015,7 @@
         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="#"/>
         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="-"/>
         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="|"/>
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="@@?[^@ \t\r\n]" column="0"/>
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^@@?[^@ \t\r\n]" column="0"/>
         <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>
         <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>
       </context>
diff --git a/xml/tcl.xml b/xml/tcl.xml
--- a/xml/tcl.xml
+++ b/xml/tcl.xml
@@ -28,7 +28,7 @@
 	    - Fixed detection of varaibles with names containing serval namespace delimiters (::)
 -->
 
-<language name="Tcl/Tk" version="7" kateversion="5.62" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
+<language name="Tcl/Tk" version="8" kateversion="5.62" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
   <highlighting>
     <list name="keywords">
       <item>after</item>
@@ -507,8 +507,7 @@
         <RegExpr String = "\s-\w+" attribute = "Parameter" context="#stay"/>
         
         <!-- Variables -->
-        <RegExpr String = "\$\{([^\}]|\\\})+\}" attribute = "Variable" context="#stay"/>
-        <RegExpr String = "\$(::|\w)+" attribute = "Variable" context="#stay"/>
+        <RegExpr String = "\$\{([^\}]|\\\})+\}|\$(::|\w)+" attribute = "Variable" context="#stay"/>
         
         <!-- Strings -->
         <Detect2Chars char = "&quot;" char1 = "&quot;" attribute = "String" context="#stay"/>
@@ -521,8 +520,7 @@
         <!-- Braces, brackets, etc -->
         <DetectChar char = "{" attribute = "Keyword" context="#stay" beginRegion="block"/>
         <DetectChar char = "}" attribute = "Keyword" context="#stay" endRegion="block"/>
-        <DetectChar char = "[" attribute = "Keyword" context="#stay"/>
-        <DetectChar char = "]" attribute = "Keyword" context="#stay"/>
+        <AnyChar String= "[]" attribute = "Keyword" context="#stay"/>
         
       </context>
 
diff --git a/xml/tcsh.xml b/xml/tcsh.xml
--- a/xml/tcsh.xml
+++ b/xml/tcsh.xml
@@ -9,7 +9,7 @@
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
         <!ENTITY tab      "&#9;">
 ]>
-<language name="Tcsh" version="9" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+<language name="Tcsh" version="10" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
 
 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
@@ -164,8 +164,7 @@
         <!-- start expression in double parentheses -->
 <!--!--><Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
         <!-- start expression in single brackets -->
-<!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/>
-<!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" />
+<!--!--><RegExpr attribute="Builtin" context="ExprBracket" String="(^\[|\s\[)&eos;" beginRegion="expression" column="0"/>
         <!-- start a group command with { -->
 <!--!--><RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" />
         <!-- start a subshell -->
@@ -180,8 +179,7 @@
 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\b(foreach|while)&noword;" beginRegion="loop" />
 <!--!--><RegExpr attribute="Control Flow" context="#stay" String="\bend&noword;" endRegion="loop" />
         <!-- handle command line options -->
-        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*" />
-        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9][A-Za-z0-9_]*|--[a-z][A-Za-z0-9_-]*" />
         <!-- handle variable assignments -->
 <!--R--><RegExpr attribute="Keyword" context="#stay" String="\b@\s" />
 <!--R--><WordDetect attribute="Keyword" context="#stay" String="set" />
@@ -207,9 +205,7 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers">
         <RegExpr attribute="Escape" context="#stay" String="\\[;&quot;\\'$`{}()|&amp;&lt;&gt;* ]" />
 <!--?   <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" />-->
-        <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)" />
-        <RegExpr attribute="Path" context="#stay" String="~\w*" />
-        <RegExpr attribute="Path" context="#stay" String="/&pathpart;*(?=([\s/):;$`'&quot;]|$))" />
+        <RegExpr attribute="Path" context="#stay" String="&pathpart;*(?=/)|~\w*|/&pathpart;*(?=([\s/):;$`'&quot;]|$))" />
         <!-- TODO: shell globs -->
       </context>
 
@@ -224,13 +220,8 @@
       <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
         <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" />
-        <RegExpr attribute="Variable" context="#stay" String="\$&varname;" />
-        <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" />
-        <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" />
-        <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;\}" />
-        <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;\*?\}" />
-        <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
-        <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/])" />
+        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;)|\$[*@#?$!_0-9-]|\$\{[*@#?$!_0-9-]\}|\$\{#&varname;\}|\$\{!&varname;\*?\}" />
+        <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;|\$\{[*@#?$!_0-9-](?=[:#%/])" />
         <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" />
 <!--?   <StringDetect attribute="Redirection" context="SubstFile" String="$(&lt;" />-->
 <!--?   <StringDetect attribute="Variable" context="SubstCommand" String="$(" />-->
@@ -240,10 +231,7 @@
 
       <!-- FindTests finds operators valid in tests -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindTests">
-        <RegExpr attribute="Expression" context="#stay" String="-[rwxXeozsfdlbcpSugktRLDIFNZ](?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="-[AMCUG]:?(?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="-P[0-7]{,3}:?(?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="[=!][~=]|[*>&lt;!~]"/>
+        <RegExpr attribute="Expression" context="#stay" String="-[rwxXeozsfdlbcpSugktRLDIFNZ](?=\s)|-[AMCUG]:?(?=\s)|-P[0-7]{,3}:?(?=\s)|[=!][~=]|[*>&lt;!~]"/>
       </context>
 
 
@@ -272,8 +260,7 @@
 
       <!-- ExprBracket consumes an expression till ] -->
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket">
-        <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&amp;]))" endRegion="expression" />
-        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
+        <RegExpr attribute="Builtin" context="#pop" String="(\s\]|^\])(?=($|[\s;|&amp;]))" endRegion="expression" />
         <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
         <IncludeRules context="FindTests" />
         <IncludeRules context="FindMost" />
@@ -332,8 +319,7 @@
       <!-- VarName consumes spare variable names and assignments -->
       <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop">
         <!-- handle command line options -->
-        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" />
-        <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" />
+        <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+|--[a-z][A-Za-z0-9_-]*" />
         <RegExpr attribute="Variable" context="#stay" String="\b&varname;" />
         <DetectChar attribute="Variable" context="Subscript" char="[" />
         <DetectChar attribute="Variable" context="Assign" char="=" />
@@ -357,8 +343,7 @@
       <!-- StringEsc eats till ', but escaping many characters -->
       <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
         <DetectChar attribute="String SingleQ" context="#pop" char="'" />
-        <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" />
-        <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" />
+        <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']|\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" />
       </context>
 
       <!-- VarBrace is called as soon as ${xxx is encoutered -->
diff --git a/xml/toml.xml b/xml/toml.xml
--- a/xml/toml.xml
+++ b/xml/toml.xml
@@ -11,7 +11,7 @@
 	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?">
 ]>
 <!-- https://github.com/toml-lang/toml -->
-<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="7" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="8" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
 <highlighting>
 	<list name="bools">
 		<item>true</item>
@@ -65,22 +65,19 @@
 		<!-- Quoted keys and Strings -->
 		<context attribute="Key" lineEndContext="#pop" name="QuotedKey">
 			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />
-			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
 			<RegExpr attribute="Error" String="\\." context="#stay" />
 			<DetectChar attribute="Key" context="#pop" char="&quot;"/>
 		</context>
 		<context attribute="String" lineEndContext="#pop" name="String">
 			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />
-			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
 			<RegExpr attribute="Error" String="\\." context="#stay" />
 			<DetectChar attribute="String" context="#pop" char="&quot;"/>
 		</context>
 		<context attribute="String" lineEndContext="#stay" name="MultilineString">
 			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]" context="#stay" />
-			<RegExpr attribute="Escape" String="\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
+			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
 			<RegExpr attribute="Error" String="\\." context="#stay" />
 			<StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>
 		</context>
diff --git a/xml/typescript.xml b/xml/typescript.xml
--- a/xml/typescript.xml
+++ b/xml/typescript.xml
@@ -61,7 +61,7 @@
 -->
 
 <language name="TypeScript"
-          version="12"
+          version="13"
           kateversion="5.53"
           section="Scripts"
           extensions="*.ts"
@@ -377,8 +377,7 @@
 		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
 			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;|(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
 		</context>
diff --git a/xml/verilog.xml b/xml/verilog.xml
--- a/xml/verilog.xml
+++ b/xml/verilog.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Verilog" version="7" kateversion="5.0" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">
+<language name="Verilog" version="8" kateversion="5.0" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">
   <highlighting>
     <list name="keywords">
       <item>macromodule</item>
@@ -150,8 +150,7 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-        <RegExpr attribute="Keyword" context="Block name" String="begin\ *:" beginRegion="Block"/>
-        <RegExpr attribute="Keyword" context="Block name" String="fork\ *:" beginRegion="Block"/>
+        <RegExpr attribute="Keyword" context="Block name" String="(begin|fork)\ *:" beginRegion="Block"/>
         <keyword attribute="Keyword" String="beginwords" context="#stay" beginRegion="Block"/>
         <keyword attribute="Keyword" String="endwords" context="#stay" endRegion="Block"/>
 
diff --git a/xml/xml.xml b/xml/xml.xml
--- a/xml/xml.xml
+++ b/xml/xml.xml
@@ -6,7 +6,7 @@
 	<!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="XML" version="11" kateversion="5.0" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="XML" version="12" kateversion="5.0" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -17,10 +17,10 @@
   <context name="FindXML" attribute="Normal Text" lineEndContext="#stay">
     <DetectSpaces />
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
-    <RegExpr attribute="Element" context="Element" String="&lt;&name;" beginRegion="element" />
+    <StringDetect attribute="CDATA" context="CDATAStart" String="&lt;![CDATA[" lookAhead="true" />
+    <RegExpr attribute="Doctype Symbols" context="DoctypeTagName" String="&lt;!(?=DOCTYPE\s+)" beginRegion="doctype" />
+    <IncludeRules context="FindProcessingInstruction" />
+    <RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))" beginRegion="element" />
     <IncludeRules context="FindEntityRefs" />
     <DetectIdentifier />
   </context>
@@ -45,32 +45,63 @@
     <DetectIdentifier />
   </context>
 
+  <context name="CDATAStart" attribute="Other Text" lineEndContext="#pop">
+    <StringDetect attribute="CDATA Symbols" context="#stay" String="&lt;![" beginRegion="cdata" />
+    <StringDetect attribute="CDATA" context="#stay" String="CDATA" />
+    <DetectChar attribute="CDATA Symbols" context="#pop!CDATA" char="[" />
+  </context>
   <context name="CDATA" attribute="Other Text" lineEndContext="#stay">
     <DetectSpaces />
     <DetectIdentifier />
-    <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
+    <StringDetect attribute="CDATA Symbols" context="#pop" String="]]&gt;" endRegion="cdata" />
     <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
   </context>
 
+  <context name="FindProcessingInstruction" attribute="Other Text" lineEndContext="#stay">
+    <RegExpr attribute="PI Symbols" context="PI TagName" String="&lt;\?(?=([\w:_-]*))" beginRegion="pi" />
+  </context>
+  <context name="PI TagName" attribute="Other Text" lineEndContext="#pop!PI" fallthrough="true" fallthroughContext="#pop!PI">
+    <RegExpr attribute="Processing Instruction" context="#pop!PI-XML" String="xml(?=\s|$)" insensitive="true" />
+    <StringDetect attribute="Processing Instruction" context="#pop!PI" String="%1" dynamic="true" />
+  </context>
   <context name="PI" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
+    <Detect2Chars attribute="PI Symbols" context="#pop" char="?" char1="&gt;" endRegion="pi" />
   </context>
+  <context name="PI-XML" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="PI" />
+    <RegExpr attribute="Attribute" context="#stay" String="(?:^|\s+)&name;" />
+    <DetectChar attribute="Attribute" context="Value" char="=" />
+  </context>
 
+  <context name="DoctypeTagName" attribute="Other Text" lineEndContext="#pop">
+    <StringDetect attribute="Doctype" context="#pop!DoctypeVariableName" String="DOCTYPE" />
+  </context>
+  <context name="DoctypeVariableName" attribute="Other Text" lineEndContext="#pop!Doctype" fallthrough="true" fallthroughContext="#pop!Doctype">
+    <DetectSpaces />
+    <RegExpr attribute="Doctype Name" context="#pop!Doctype" String="&name;" />
+  </context>
   <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
-    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
+    <DetectChar attribute="Doctype Symbols" context="#pop" char="&gt;" endRegion="doctype" />
+    <DetectChar attribute="Doctype Symbols" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
   </context>
 
   <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
-    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+    <DetectChar attribute="Doctype Symbols" context="#pop" char="]" endRegion="int_subset" />
+    <RegExpr attribute="Doctype Symbols" context="Doctype Markupdecl TagName" String="&lt;!(?=(ELEMENT|ENTITY|ATTLIST|NOTATION)\b)" />
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
+    <IncludeRules context="FindProcessingInstruction" />
     <IncludeRules context="FindPEntityRefs" />
   </context>
 
+  <context name="Doctype Markupdecl TagName" attribute="Other Text" lineEndContext="#pop">
+    <StringDetect attribute="Doctype" context="#pop!Doctype Markupdecl VariableName" String="%1" dynamic="true" />
+  </context>
+  <context name="Doctype Markupdecl VariableName" attribute="Other Text" lineEndContext="#pop!Doctype Markupdecl" fallthrough="true" fallthroughContext="#pop!Doctype Markupdecl">
+    <DetectSpaces />
+    <RegExpr attribute="Doctype Name" context="#pop!Doctype Markupdecl" String="&name;" />
+  </context>
   <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
+    <DetectChar attribute="Doctype Symbols" context="#pop" char="&gt;" />
     <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
   </context>
@@ -85,25 +116,31 @@
     <IncludeRules context="FindPEntityRefs" />
   </context>
 
+  <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop!Element" fallthrough="true" fallthroughContext="#pop!Element">
+    <StringDetect attribute="Element" context="#pop!Element" String="%1" dynamic="true" />
+  </context>
   <context name="Element" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element" />
-    <DetectChar attribute="Element" context="El Content" char="&gt;" />
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="element" />
+    <DetectChar attribute="Element Symbols" context="El Content" char="&gt;" />
     <RegExpr attribute="Attribute" context="Attribute" String="(?:^|\s+)&name;" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="El Content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El End" String="&lt;/&name;" />
+    <RegExpr attribute="Element Symbols" context="El End TagName" String="&lt;/(?=(&name;))" />
     <IncludeRules context="FindXML" />
   </context>
 
+  <context name="El End TagName" attribute="Other Text" lineEndContext="#pop!El End" fallthrough="true" fallthroughContext="#pop!El End">
+    <StringDetect attribute="Element" context="#pop!El End" String="%1" dynamic="true" />
+  </context>
   <context name="El End" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" endRegion="element" />
+    <DetectChar attribute="Element Symbols" context="#pop#pop#pop" char="&gt;" endRegion="element" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="Attribute" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Attribute" context="Value" char="=" />
+    <DetectChar attribute="Attribute" context="#pop!Value" char="=" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
@@ -114,29 +151,34 @@
   </context>
 
   <context name="Value DQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop#pop#pop" char="&quot;" />
+    <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
     <IncludeRules context="FindEntityRefs" />
   </context>
 
   <context name="Value SQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop#pop#pop" char="&apos;" />
+    <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
     <IncludeRules context="FindEntityRefs" />
   </context>
 
 </contexts>
 <itemDatas>
-  <itemData name="Normal Text" defStyleNum="dsNormal" />
-  <itemData name="Other Text" defStyleNum="dsNormal" />
-  <itemData name="Comment" defStyleNum="dsComment" spellChecking="false" />
-  <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false" />
-  <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" />
-  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" />
-  <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" />
-  <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" />
-  <itemData name="Value" defStyleNum="dsString" spellChecking="false" />
-  <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" />
-  <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" />
-  <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
+  <itemData name="Normal Text"     defStyleNum="dsNormal" />
+  <itemData name="Other Text"      defStyleNum="dsNormal" />
+  <itemData name="Comment"         defStyleNum="dsComment" spellChecking="false" />
+  <itemData name="CDATA"           defStyleNum="dsBaseN"    bold="1" italic="0" spellChecking="false" />
+  <itemData name="CDATA Symbols"   defStyleNum="dsBaseN"    bold="0" italic="0" spellChecking="false" />
+  <itemData name="Processing Instruction" defStyleNum="dsFunction" bold="1" italic="0" spellChecking="false" />
+  <itemData name="PI Symbols"      defStyleNum="dsFunction" bold="0" italic="0" spellChecking="false" />
+  <itemData name="Doctype"         defStyleNum="dsDataType" bold="1" italic="0" spellChecking="false" />
+  <itemData name="Doctype Name"    defStyleNum="dsDataType" bold="0" italic="0" spellChecking="false" />
+  <itemData name="Doctype Symbols" defStyleNum="dsDataType" bold="0" italic="0" spellChecking="false" />
+  <itemData name="Element"         defStyleNum="dsKeyword" spellChecking="false" />
+  <itemData name="Element Symbols" defStyleNum="dsNormal" spellChecking="false" />
+  <itemData name="Attribute"       defStyleNum="dsOthers" spellChecking="false" />
+  <itemData name="Value"           defStyleNum="dsString" spellChecking="false" />
+  <itemData name="EntityRef"       defStyleNum="dsDecVal" spellChecking="false" />
+  <itemData name="PEntityRef"      defStyleNum="dsDecVal" spellChecking="false" />
+  <itemData name="Error"           defStyleNum="dsError" spellChecking="false" />
 </itemDatas>
 
 </highlighting>
diff --git a/xml/xslt.xml b/xml/xslt.xml
--- a/xml/xslt.xml
+++ b/xml/xslt.xml
@@ -52,7 +52,7 @@
 
 -->
 
-<language version="8" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
+<language version="9" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
   <highlighting>
     <list name="keytags">
       <item>xsl:value-of</item>
@@ -333,9 +333,7 @@
        <context name="xattributes" attribute="Attribute" lineEndContext="#stay">
           <Detect2Chars attribute="Tag" context="#pop#pop" char="/" char1="&gt;" />
           <DetectChar attribute="Tag" context="#pop#pop" char="&gt;" />
-          <RegExpr attribute="Attribute" context="xattrValue" String="select\s*=\s*" />
-          <RegExpr attribute="Attribute" context="xattrValue" String="test\s*=\s*" />
-          <RegExpr attribute="Attribute" context="xattrValue" String="match\s*=\s*" />
+          <RegExpr attribute="Attribute" context="xattrValue" String="select\s*=\s*|test\s*=\s*|match\s*=\s*" />
           <RegExpr attribute="Attribute" context="attrValue" String="\s*=\s*" />
        </context>
 
diff --git a/xml/xul.xml b/xml/xul.xml
--- a/xml/xul.xml
+++ b/xml/xul.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="XUL" version="9" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
+<language name="XUL" version="10" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
 
 <highlighting>
    <list name="keywords">
@@ -549,12 +549,10 @@
   
   <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
      <RegExpr attribute="Regular Expression" context="#pop#pop#pop" String="/[ig]{0,2}" />
-     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}" />
-     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\[bB]" />
+     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\{[\d, ]+\}|\\[bB]" />
      <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[nrtvfDdSsWw]" />
      <DetectChar attribute="Pattern Character Class" context="(charclass caret first check)" char="[" />
-     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\." />
-     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=/)" />
+     <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\.|\$(?=/)" />
      <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
   </context>
   <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
diff --git a/xml/yacc.xml b/xml/yacc.xml
--- a/xml/yacc.xml
+++ b/xml/yacc.xml
@@ -32,7 +32,7 @@
 
 ========================================================================
 -->
-<language name="Yacc/Bison" version="8" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Yacc/Bison" version="9" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -139,9 +139,9 @@
     <WordDetect attribute="Directive" context="#stay" String="%merge" />
 
     <!-- Finish rule without the ';' character (see the 'rhses.1' rule in the 'src/parse-gram.y' file, from the Bison source) -->
-    <RegExpr attribute="Open Rule" context="#pop" String="[\w\-\.](?=[\w\-\.]*:)" column="0" endRegion="rule" />
+    <RegExpr attribute="Open Rule" context="#pop" String="^[\w\-\.](?=[\w\-\.]*:)" column="0" endRegion="rule" />
     <Detect2Chars attribute="Content-Type Delimiter" context="#pop" char="%" char1="%" lookAhead="true" firstNonSpace="true" endRegion="rule" />
-    <RegExpr attribute="Directive" context="#pop" String="%(?:union|code|destructor|printer|start|(?:no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" />
+    <RegExpr attribute="Directive" context="#pop" String="^%(?:union|code|destructor|printer|start|(?:no\-)?default\-prec|nterm|token|type|left|right|nonassoc|precedence)\b" lookAhead="true" column="0" endRegion="rule" />
   </context>
   <!-- The Bison parser allows to have ';' followed by '|', without the rule ending.
        The problem here is that the ';' char has endRegion="rule" (although it is not very relevant). -->
diff --git a/xml/yaml.xml b/xml/yaml.xml
--- a/xml/yaml.xml
+++ b/xml/yaml.xml
@@ -31,13 +31,29 @@
   <!ENTITY dataTypes      "!!\S+">
   <!ENTITY alias          "&amp;\S+">
   <!ENTITY reference      "\*\S+">
+
+  <!ENTITY dpointsHashAttrPreInline1 "[^\s&quot;'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))">
+  <!ENTITY dpointsHashAttrPreInline2 "\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))">
+  <!ENTITY dpointsHashAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
+  <!ENTITY dpointsHashAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
+
+  <!ENTITY dpointsListAttrPreInline1 "[^&quot;'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))">
+  <!ENTITY dpointsListAttrPreInline2 "\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))">
+  <!ENTITY dpointsListAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
+  <!ENTITY dpointsListAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
+
+  <!ENTITY dpointsAttrPre1 "[^&quot;'#\-\s][^:#]*(?=\:(?:\s|$))">
+  <!ENTITY dpointsAttrPre2 "\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))">
+  <!ENTITY dpointsAttrPre3 "&keyDQ;(?=\:(?:\s|$))">
+  <!ENTITY dpointsAttrPre4 "&keySQ;(?=\:(?:\s|$))">
+
 ]>
 
 <!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
 <!-- Modifications (YAML 1.2), values & support for literal/folded style:
        Nibaldo González S. <nibgonz@gmail.com>
        These modifications are under the MIT license. //-->
-<language name="YAML" version="9" kateversion="5.0" section="Markup"
+<language name="YAML" version="10" kateversion="5.0" section="Markup"
           extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"
           author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
   <highlighting>
@@ -62,10 +78,7 @@
         <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />
         <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />
 
-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="[^&quot;'#\-\s][^:#]*(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keyDQ;(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&keySQ;(?=\:(?:\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&dpointsAttrPre1;|&dpointsAttrPre2;|&dpointsAttrPre3;|&dpointsAttrPre4;"/>
         <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>
 
         <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />
@@ -221,10 +234,7 @@
         <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
         <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
 
-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="[^&quot;'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keyDQ;(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&keySQ;(?=\:(?:\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&dpointsListAttrPreInline1;|&dpointsListAttrPreInline2;|&dpointsListAttrPreInline3;|&dpointsListAttrPreInline4;"/>
         <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
 
         <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
@@ -247,10 +257,7 @@
         <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
         <DetectSpaces/>
 
-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="[^\s&quot;'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keyDQ;(?=\:(?:\s|$))"/>
-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&keySQ;(?=\:(?:\s|$))"/>
+        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&dpointsHashAttrPreInline1;|&dpointsHashAttrPreInline2;|&dpointsHashAttrPreInline3;|&dpointsHashAttrPreInline4;"/>
         <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
 
         <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />
