diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,37 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.10.1
+
+  * Regex: handle `(?|)` modifier.  This is used in bash.xml now.
+    It resets the numbers of capturing groups in alternatives.
+
+  * Improve regex handling of `{` and `}` not in quantifiers:
+    - `{}` is literal (not a quantifier).
+    - loose unescaped `{` and `}` that are not part of a quantifier are
+      literal matchers.
+
+  * Update xml syntax definitions from upstream.
+    For: abc, actionscript, ada, agda, alert, apache, asn1, asp,
+    ats, awk, bash, boo, c, clojure, cmake, coffee, coldfusion,
+    commonlisp, cs, css, curry, d, djangotemplate, dockerfile,
+    dot, doxygen, dtd, eiffel, elixir, elm, erlang, fasm,
+    fortran-fixed, fortran-free, fsharp, glsl, gnuassembler, go,
+    graphql, groovy, hamlet, haskell, haxe, html, idris, ini,
+    isocpp, j, java, javadoc, javascript, jsp, julia, kotlin,
+    latex, lex, lilypond, literate-curry, literate-haskell,
+    llvm, lua, m4, makefile, markdown, mathematica, matlab,
+    maxima, mediawiki, metafont, mips, modula-2, modula-3,
+    monobasic, mustache, nasm, nim, noweb, objectivec,
+    objectivecpp, ocaml, octave, opencl, pascal, perl, php,
+    pike, postscript, povray, powershell, prolog, protobuf,
+    pure, purebasic, python, r, relaxng, relaxngcompact, rest,
+    rhtml, roff, ruby, rust, scala, scheme, sci, sed, sgml, sml,
+    sql-mysql, sql-postgresql, sql, stata, tcl, tcsh, texinfo,
+    toml, verilog, vhdl, xml, xorg, xslt, xul, yacc, yaml, zsh.
+    Also added spdx-comments.xml and comments.xml, which are
+    needed for these.  Closes #111 (latex bug in matrix).
+
+
 ## 0.10.0.3
 
   * Add groovy syntax.
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.0.3
+version:             0.10.1
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Regex/KDE/Compile.hs b/src/Regex/KDE/Compile.hs
--- a/src/Regex/KDE/Compile.hs
+++ b/src/Regex/KDE/Compile.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Regex.KDE.Compile
@@ -57,9 +58,21 @@
 pParenthesized :: Bool -> RParser Regex
 pParenthesized caseSensitive = (do
   _ <- lift (satisfy (== 40))
-  modifier <- lift (satisfy (== 63) *> pGroupModifiers)
-                <|> (MatchCapture <$> (modify (+ 1) *> get))
-  contents <- pRegex caseSensitive
+  -- pcrepattern says: A group that starts with (?| resets the capturing
+  -- parentheses numbers in each alternative.
+  resetCaptureNumbers <- option False (True <$ lift (string "?|"))
+  modifier <- if resetCaptureNumbers
+                 then return id
+                 else lift (satisfy (== 63) *> pGroupModifiers)
+                    <|> (MatchCapture <$> (modify (+ 1) *> get))
+  currentCaptureNumber <- get
+  contents <- option MatchNull $
+    foldr MatchAlt
+      <$> (pAltPart caseSensitive)
+      <*> (many $ lift (char '|') *>
+            (((if resetCaptureNumbers
+                  then put currentCaptureNumber
+                  else return ()) >> pAltPart caseSensitive) <|> pure mempty))
   _ <- lift (satisfy (== 41))
   return $ modifier contents)
   <|> Recurse <$ (lift (string "(?R)" <|> string "(?0)"))
@@ -84,12 +97,11 @@
       maxn <- option Nothing $ char ',' *>
                        (readMay . U.toString <$> A.takeWhile isDig)
       _ <- char '}'
-      return $!
-        case (minn, maxn) of
-          (Nothing, Nothing) -> atleast 0 re
-          (Just n, Nothing)  -> atleast n re
-          (Nothing, Just n)  -> atmost n re
-          (Just m, Just n)   -> between m n re
+      case (minn, maxn) of
+          (Nothing, Nothing) -> mzero
+          (Just n, Nothing)  -> return $! atleast n re
+          (Nothing, Just n)  -> return $! atmost n re
+          (Just m, Just n)   -> return $! between m n re
     _   -> fail "pSuffix encountered impossible byte") >>= pQuantifierModifier
  where
    atmost 0 _ = MatchNull
@@ -242,7 +254,7 @@
 isSpecial 63 = True -- '?'
 isSpecial 42 = True -- '*'
 isSpecial 43 = True -- '+'
-isSpecial 123 = True -- '{'
+-- isSpecial 123 = True -- '{'  -- this is okay except in suffixes
 isSpecial 91 = True -- '['
 isSpecial 93 = True -- ']'
 isSpecial 37 = True -- '%'
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -294,6 +294,12 @@
   , ("\\w+?e", "aaaeeee", Just ("aaae", []))
   , ("a+b??", "aaab", Just ("aaa", []))
   , ("\\([a-z]+(?R)*\\)", "(aa(b(c)(d)))", Just ("(aa(b(c)(d)))", []))
+  , ("a{}", "aaa", Nothing)
+  , ("a{}", "a{}", Just ("a{}", []))
+  , ("a{3", "a{3", Just ("a{3", []))
+  , ("(?|(abc)|(def))", "abc", Just ("abc", [(1,"abc")]))
+  , ("(?|(abc)|(def))", "def", Just ("def", [(1,"def")]))
+  , ("(?:(abc)|(def))", "def", Just ("def", [(2,"def")]))
   ]
 
 
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="6" kateversion="2.4" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
+<language name="ABC" version="7" kateversion="2.4" 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">
@@ -39,8 +39,7 @@
 	   <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" />
 	   <context name="Lyrics" attribute="Lyrics" lineEndContext="#pop" />
 	   <context name="Comment" attribute="Comment" lineEndContext="#pop">
-	    <IncludeRules context="##Alerts" />
-	    <IncludeRules context="##Modelines" />
+	    <IncludeRules context="##Comments" />
 	   </context>
 <!-- returns to Normal context after the end of bar symbols or at EOL -->
 	   <context name="Bar" attribute="Bar" lineEndContext="#pop" >
diff --git a/xml/actionscript.xml b/xml/actionscript.xml
--- a/xml/actionscript.xml
+++ b/xml/actionscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="ActionScript 2.0" version="6" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
+<language name="ActionScript 2.0" version="7" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
   <highlighting>
     
     <list name="properties">
@@ -300,13 +300,11 @@
       <context attribute="StaticImports" lineEndContext="#pop" name="StaticImports"/>
       <context attribute="Imports" lineEndContext="#pop" name="Imports"/>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/ada.xml b/xml/ada.xml
--- a/xml/ada.xml
+++ b/xml/ada.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="Ada"
-          version="4"
+          version="5"
           kateversion="5.0"
           section="Sources"
           extensions="*.adb;*.ads;*.ada;*.a"
@@ -176,8 +176,7 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/agda.xml b/xml/agda.xml
--- a/xml/agda.xml
+++ b/xml/agda.xml
@@ -3,7 +3,7 @@
   <!ENTITY charsdelim "_;.&#34;(){}@">
   <!ENTITY wordsep "(?=[&charsdelim;]|\s|$)">
 ]>
-<language name="Agda" version="7" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
+<language name="Agda" version="8" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
   <highlighting>
     <list name="reserved keywords">
       <item>abstract</item>
@@ -74,14 +74,12 @@
         <RegExpr attribute="Normal" context="#stay" String="[^&charsdelim;\s]+" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comments" noIndentationBasedFolding="1">
         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" /> <!-- for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="CommentBlock" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Hole" lineEndContext="#stay" name="hole">
         <Detect2Chars attribute="Hole" context="#pop" char="!" char1="}" />
diff --git a/xml/alert.xml b/xml/alert.xml
--- a/xml/alert.xml
+++ b/xml/alert.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="5" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
+<language version="6" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
   <highlighting>
     <list name="alerts_hi">
       <item>ALERT</item>
@@ -19,6 +19,7 @@
       <item>WARNING</item>
       <item>CAUTION</item>
       <item>NOLINT</item>
+      <item>NOQA</item>
     </list>
     <list name="alerts_lo">
       <item>###</item>
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="4" kateversion="5.0"
+          version="5" kateversion="5.0"
           extensions="httpd.conf;httpd2.conf;apache.conf;apache2.conf;.htaccess*;.htpasswd*"
           mimetype=""
           author="Jan Janssen (medhefgo@googlemail.com)" license="LGPL">
@@ -584,8 +584,7 @@
 <!--	Other -->
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
-  <IncludeRules context="##Alerts" />
-  <IncludeRules context="##Modelines" />
+  <IncludeRules context="##Comments" />
   <DetectIdentifier />
  </context>
 
diff --git a/xml/asn1.xml b/xml/asn1.xml
--- a/xml/asn1.xml
+++ b/xml/asn1.xml
@@ -13,7 +13,7 @@
 
         You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
 -->
-<language name="ASN.1" section="Markup" version="4" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
+<language name="ASN.1" section="Markup" version="5" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
   <highlighting>
     <list name="keywords">
       <item>DEFINITIONS</item>
@@ -54,8 +54,7 @@
       </context>
       
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
     </contexts>
     
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="6" 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="7" 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>
@@ -293,8 +293,7 @@
             <context name="asp_onelinecomment" attribute="Comment" lineEndContext="#pop">
                 <DetectSpaces />
                 <Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />
-                <IncludeRules context="##Alerts" />
-                <IncludeRules context="##Modelines" />
+                <IncludeRules context="##Comments" />
             </context>
             <context name="doublequotestring" attribute="String" lineEndContext="#stay">
                 <DetectSpaces />
@@ -319,8 +318,7 @@
                 <IncludeRules context="find-aspsource" />
                 <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTMLComment" />
                 <DetectChar attribute="Normal Text" context="identifiers" char="="/>
-                <IncludeRules context="##Alerts" />
-                <IncludeRules context="##Modelines" />
+                <IncludeRules context="##Comments" />
             </context>
             <context name="identifiers" attribute="Identifier" lineEndContext="#stay">
                 <DetectSpaces />
@@ -361,12 +359,12 @@
             <context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">
                 <DetectSpaces />
                 <RegExpr attribute="HTML Tag" context="#pop#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
-                <IncludeRules context="##Alerts" />
+                <IncludeRules context="##Comments" />
             </context>
             <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
                 <DetectSpaces />
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="ScriptComment" />
-                <IncludeRules context="##Alerts" />
+                <IncludeRules context="##Comments" />
             </context>
 
         </contexts>
diff --git a/xml/ats.xml b/xml/ats.xml
--- a/xml/ats.xml
+++ b/xml/ats.xml
@@ -7,7 +7,7 @@
 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- ATS character code escapes. -->
 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
 ]>
-<language name="ATS" version="2" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">
+<language name="ATS" version="3" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">
   <highlighting>
     <list name="keywords">
       <item>abstype</item>
@@ -190,17 +190,14 @@
         <!-- Support for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multiline C-style Comment">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Termination Metrics" lineEndContext="#stay" name="Termination Metrics Context">
diff --git a/xml/awk.xml b/xml/awk.xml
--- a/xml/awk.xml
+++ b/xml/awk.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="AWK" version="4" kateversion="5.0" section="Scripts"
+<language name="AWK" version="5" kateversion="5.0" section="Scripts"
   extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"
   license="LGPL">
 <!-- patched by igli#kate@irc:chat.freenode.net -->
@@ -182,8 +182,7 @@
       </context>
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="Escape" attribute="Error" lineEndContext="#pop">
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -1,1000 +1,1456 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-        <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
-        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
-        <!ENTITY word     "[^|&amp;;()&lt;&gt;\s]+">    <!-- see man bash -->
-        <!ENTITY eos      "(?=($|\s))">                 <!-- eol or space following -->
-        <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
-        <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
-        <!ENTITY charbeforecomment "[\s;]">             <!-- character before a comment # -->
-]>
-<language name="Bash" version="11" kateversion="5.0" 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)
-    Changes by Sebastian Pipping (webmaster@hartwork.org)
-    Changes by Luiz Angelo Daros de Luca (luizluca@gmail.com)
-    Released under the LGPL, part of kdelibs/kate -->
-
-  <highlighting>
-    <list name="keywords">
-      <item>else</item>
-      <item>for</item>
-      <item>function</item>
-      <item>in</item>
-      <item>select</item>
-      <item>until</item>
-      <item>while</item>
-      <item>elif</item>
-      <item>then</item>
-      <item>set</item>
-    </list>
-
-    <list name="builtins">
-      <item>:</item>
-      <item>source</item>
-      <item>alias</item>
-      <item>bg</item>
-      <item>bind</item>
-      <item>break</item>
-      <item>builtin</item>
-      <item>cd</item>
-      <item>caller</item>
-      <item>command</item>
-      <item>compgen</item>
-      <item>complete</item>
-      <item>continue</item>
-      <item>dirs</item>
-      <item>disown</item>
-      <item>echo</item>
-      <item>enable</item>
-      <item>eval</item>
-      <item>exec</item>
-      <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>
-      <item>pushd</item>
-      <item>pwd</item>
-      <item>return</item>
-      <item>set</item>
-      <item>shift</item>
-      <item>shopt</item>
-      <item>suspend</item>
-      <item>test</item>
-      <item>time</item>
-      <item>times</item>
-      <item>trap</item>
-      <item>type</item>
-      <item>ulimit</item>
-      <item>umask</item>
-      <item>unalias</item>
-      <item>wait</item>
-    </list>
-
-    <list name="builtins_var">
-      <item>export</item>
-      <item>unset</item>
-      <item>declare</item>
-      <item>typeset</item>
-      <item>local</item>
-      <item>read</item>
-      <item>readonly</item>
-    </list>
-
-    <list name="unixcommands">
-      <!-- /bin -->
-      <item>arch</item>
-      <item>awk</item>
-      <item>bash</item>
-      <item>bunzip2</item>
-      <item>bzcat</item>
-      <item>bzcmp</item>
-      <item>bzdiff</item>
-      <item>bzegrep</item>
-      <item>bzfgrep</item>
-      <item>bzgrep</item>
-      <item>bzip2</item>
-      <item>bzip2recover</item>
-      <item>bzless</item>
-      <item>bzmore</item>
-      <item>cat</item>
-      <item>chattr</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chvt</item>
-      <item>cp</item>
-      <item>date</item>
-      <item>dd</item>
-      <item>deallocvt</item>
-      <item>df</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>dmesg</item>
-      <item>dnsdomainname</item>
-      <item>domainname</item>
-      <item>du</item>
-      <item>dumpkeys</item>
-      <item>echo</item>
-      <item>ed</item>
-      <item>egrep</item>
-      <item>false</item>
-      <item>fgconsole</item>
-      <item>fgrep</item>
-      <item>fuser</item>
-      <item>gawk</item>
-      <item>getkeycodes</item>
-      <item>gocr</item>
-      <item>grep</item>
-      <item>groff</item>
-      <item>groups</item>
-      <item>gunzip</item>
-      <item>gzexe</item>
-      <item>gzip</item>
-      <item>hostname</item>
-      <item>igawk</item>
-      <item>install</item>
-      <item>kbd_mode</item>
-      <item>kbdrate</item>
-      <item>killall</item>
-      <item>last</item>
-      <item>lastb</item>
-      <item>link</item>
-      <item>ln</item>
-      <item>loadkeys</item>
-      <item>loadunimap</item>
-      <item>login</item>
-      <item>ls</item>
-      <item>lsattr</item>
-      <item>lsmod</item>
-      <item>lsmod.old</item>
-      <item>lzcat</item>
-      <item>lzcmp</item>
-      <item>lzdiff</item>
-      <item>lzegrep</item>
-      <item>lzfgrep</item>
-      <item>lzgrep</item>
-      <item>lzless</item>
-      <item>lzcat</item>
-      <item>lzma</item>
-      <item>lzmainfo</item>
-      <item>lzmore</item>
-      <item>mapscrn</item>
-      <item>mesg</item>
-      <item>mkdir</item>
-      <item>mkfifo</item>
-      <item>mknod</item>
-      <item>mktemp</item>
-      <item>more</item>
-      <item>mount</item>
-      <item>mv</item>
-      <item>nano</item>
-      <item>netstat</item>
-      <item>nisdomainname</item>
-      <item>nroff</item>
-      <item>openvt</item>
-      <item>pgawk</item>
-      <item>pidof</item>
-      <item>ping</item>
-      <item>ps</item>
-      <item>pstree</item>
-      <item>pwd</item>
-      <item>rbash</item>
-      <item>readlink</item>
-      <item>red</item>
-      <item>resizecons</item>
-      <item>rm</item>
-      <item>rmdir</item>
-      <item>run-parts</item>
-      <item>sash</item>
-      <item>sed</item>
-      <item>setfont</item>
-      <item>setkeycodes</item>
-      <item>setleds</item>
-      <item>setmetamode</item>
-      <item>setserial</item>
-      <item>sh</item>
-      <item>showkey</item>
-      <item>shred</item>
-      <item>sleep</item>
-      <item>ssed</item>
-      <item>stat</item>
-      <item>stty</item>
-      <item>su</item>
-      <item>sync</item>
-      <item>tar</item>
-      <item>tempfile</item>
-      <item>touch</item>
-      <item>troff</item>
-      <item>true</item>
-      <item>umount</item>
-      <item>uname</item>
-      <item>unicode_start</item>
-      <item>unicode_stop</item>
-      <item>unlink</item>
-      <item>unlzma</item>
-      <item>unxz</item>
-      <item>utmpdump</item>
-      <item>uuidgen</item>
-      <item>vdir</item>
-      <item>wall</item>
-      <item>wc</item>
-      <item>xz</item>
-      <item>xzcat</item>
-      <item>ypdomainname</item>
-      <item>zcat</item>
-      <item>zcmp</item>
-      <item>zdiff</item>
-      <item>zegrep</item>
-      <item>zfgrep</item>
-      <item>zforce</item>
-      <item>zgrep</item>
-      <item>zless</item>
-      <item>zmore</item>
-      <item>znew</item>
-      <item>zsh</item>
-
-      <!-- some from /usr/bin -->
-      <item>aclocal</item>
-      <item>aconnect</item>
-      <item>aplay</item>
-      <item>apm</item>
-      <item>apmsleep</item>
-      <item>apropos</item>
-      <item>ar</item>
-      <item>arecord</item>
-      <item>as</item>
-      <item>as86</item>
-      <item>autoconf</item>
-      <item>autoheader</item>
-      <item>automake</item>
-      <item>awk</item>
-      <item>basename</item>
-      <item>bc</item>
-      <item>bison</item>
-      <item>c++</item>
-      <item>cal</item>
-      <item>cat</item>
-      <item>cc</item>
-      <item>cdda2wav</item>
-      <item>cdparanoia</item>
-      <item>cdrdao</item>
-      <item>cd-read</item>
-      <item>cdrecord</item>
-      <item>chfn</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chroot</item>
-      <item>chsh</item>
-      <item>clear</item>
-      <item>cmp</item>
-      <item>co</item>
-      <item>col</item>
-      <item>comm</item>
-      <item>cp</item>
-      <item>cpio</item>
-      <item>cpp</item>
-      <item>cut</item>
-      <item>dc</item>
-      <item>dd</item>
-      <item>df</item>
-      <item>diff</item>
-      <item>diff3</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>directomatic</item>
-      <item>dirname</item>
-      <item>du</item>
-      <item>env</item>
-      <item>expr</item>
-      <item>fbset</item>
-      <item>file</item>
-      <item>find</item>
-      <item>flex</item>
-      <item>flex++</item>
-      <item>fmt</item>
-      <item>free</item>
-      <item>ftp</item>
-      <item>funzip</item>
-      <item>fuser</item>
-      <item>g++</item>
-      <item>gawk</item>
-      <item>gc</item>
-      <item>gcc</item>
-      <item>clang</item>
-      <item>valgrind</item>
-      <item>xdg-open</item>
-      <item>cmake</item>
-      <item>qmake</item>
-      <item>svn</item>
-      <item>git</item>
-      <item>rsync</item>
-      <item>gdb</item>
-      <item>getent</item>
-      <item>getopt</item>
-      <item>gettext</item>
-      <item>gettextize</item>
-      <item>gimp</item>
-      <item>gimp-remote</item>
-      <item>gimptool</item>
-      <item>gmake</item>
-      <item>gs</item>
-      <item>head</item>
-      <item>hexdump</item>
-      <item>id</item>
-      <item>install</item>
-      <item>join</item>
-      <item>kill</item>
-      <item>killall</item>
-      <item>ld</item>
-      <item>ld86</item>
-      <item>ldd</item>
-      <item>less</item>
-      <item>lex</item>
-      <item>ln</item>
-      <item>locate</item>
-      <item>lockfile</item>
-      <item>logname</item>
-      <item>lp</item>
-      <item>lpr</item>
-      <item>ls</item>
-      <item>lynx</item>
-      <item>m4</item>
-      <item>make</item>
-      <item>man</item>
-      <item>mkdir</item>
-      <item>mknod</item>
-      <item>msgfmt</item>
-      <item>mv</item>
-      <item>namei</item>
-      <item>nasm</item>
-      <item>nawk</item>
-      <item>nice</item>
-      <item>nl</item>
-      <item>nm</item>
-      <item>nm86</item>
-      <item>nmap</item>
-      <item>nohup</item>
-      <item>nop</item>
-      <item>od</item>
-      <item>passwd</item>
-      <item>patch</item>
-      <item>pcregrep</item>
-      <item>pcretest</item>
-      <item>perl</item>
-      <item>perror</item>
-      <item>pidof</item>
-      <item>pr</item>
-      <item>printf</item>
-      <item>procmail</item>
-      <item>prune</item>
-      <item>ps2ascii</item>
-      <item>ps2epsi</item>
-      <item>ps2frag</item>
-      <item>ps2pdf</item>
-      <item>ps2ps</item>
-      <item>psbook</item>
-      <item>psmerge</item>
-      <item>psnup</item>
-      <item>psresize</item>
-      <item>psselect</item>
-      <item>pstops</item>
-      <item>rcs</item>
-      <item>rev</item>
-      <item>rm</item>
-      <item>scp</item>
-      <item>sed</item>
-      <item>seq</item>
-      <item>setterm</item>
-      <item>shred</item>
-      <item>size</item>
-      <item>size86</item>
-      <item>skill</item>
-      <item>slogin</item>
-      <item>snice</item>
-      <item>sort</item>
-      <item>sox</item>
-      <item>split</item>
-      <item>ssh</item>
-      <item>ssh-add</item>
-      <item>ssh-agent</item>
-      <item>ssh-keygen</item>
-      <item>ssh-keyscan</item>
-      <item>stat</item>
-      <item>strings</item>
-      <item>strip</item>
-      <item>sudo</item>
-      <item>suidperl</item>
-      <item>sum</item>
-      <item>tac</item>
-      <item>tail</item>
-      <item>tee</item>
-      <item>test</item>
-      <item>tr</item>
-      <item>uniq</item>
-      <item>unlink</item>
-      <item>unzip</item>
-      <item>updatedb</item>
-      <item>updmap</item>
-      <item>uptime</item>
-      <item>users</item>
-      <item>vmstat</item>
-      <item>w</item>
-      <item>wc</item>
-      <item>wget</item>
-      <item>whatis</item>
-      <item>whereis</item>
-      <item>which</item>
-      <item>who</item>
-      <item>whoami</item>
-      <item>write</item>
-      <item>xargs</item>
-      <item>yacc</item>
-      <item>yes</item>
-      <item>zip</item>
-      <item>zsoelim</item>
-
-      <!-- others -->
-      <item>dcop</item>
-      <item>kdialog</item>
-      <item>kfile</item>
-      <item>xhost</item>
-      <item>xmodmap</item>
-      <item>xset</item>
-    </list>
-
-
-    <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Start">
-        <IncludeRules context="FindAll" />
-      </context>
-
-<!-- ====== The following rulessets are meant to be included ======== -->
-      <!-- FindAll tries to interpret everything -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindAll">
-        <IncludeRules context="FindComments" />
-        <IncludeRules context="FindCommands" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- FindMost tries to interpret anything except commands -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindMost">
-        <IncludeRules context="FindComments" />
-        <IncludeRules context="FindMostWithoutComments" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindMostWithoutComments">
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-
-      <!-- FindComments consumes shell comments till EOL -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">
-        <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
-        <RegExpr attribute="Comment" context="Comment" String="(?&lt;=&charbeforecomment;)#" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsInCommand">
-        <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
-        <!-- NOTE: If a rule already matches a character of &charbeforecomment;
-             (for example, in an escaped character), the comment will not be highlighted. -->
-        <RegExpr attribute="Normal Text" context="Comment" String="&charbeforecomment;(?=#)" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
-      </context>
-
-      <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen">
-        <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/>
-        <RegExpr attribute="Normal Text" context="CommentParen" String="&charbeforecomment;(?=#)" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
-        <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
-        <IncludeRules context="##Alerts" />
-      </context>
-
-      <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq">
-        <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/>
-        <RegExpr attribute="Normal Text" context="CommentBackq" String="&charbeforecomment;(?=#)" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
-        <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
-        <IncludeRules context="##Alerts" />
-      </context>
-
-
-      <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands">
-        <IncludeRules context="FindSpecialCommands" />
-        <IncludeRules context="FindNormalCommands" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindSpecialCommands">
-        <!-- start expression in double parentheses -->
-        <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" />
-        <!-- start expression in double brackets -->
-        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/>
-        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" 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" />
-        <!-- start a group command with { -->
-        <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" />
-        <!-- start a subshell -->
-        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" />
-        <!-- match do and if blocks -->
-        <RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" />
-        <RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" />
-        <RegExpr attribute="Keyword" context="#stay" String="\bif&eos;" beginRegion="if" />
-        <RegExpr attribute="Keyword" context="#stay" String="\bfi&noword;" endRegion="if" />
-        <!-- handle case as a special case -->
-        <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" />
-        <!-- handle variable assignments -->
-        <RegExpr attribute="Variable" context="Assign" String="\b&varname;\+?=" />
-        <RegExpr attribute="Variable" context="AssignSubscr" String="\b&varname;(?=\[.+\]\+?=)" />
-        <!-- handle functions with function keyword before keywords -->
-        <StringDetect attribute="Function" context="#stay" String=":()" />
-        <WordDetect attribute="Keyword" context="FunctionDef" String="function" />
-        <!-- mark function definitions without function keyword -->
-        <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" />
-        <!-- handle keywords -->
-        <keyword attribute="Keyword" context="#stay" String="keywords" />
-        <RegExpr attribute="Builtin" context="#stay" String="\.(?=\s)" />
-        <!-- handle commands that have variable names as argument -->
-        <keyword attribute="Builtin" context="VarName" String="builtins_var" />
-        <!-- handle here-string -->
-        <RegExpr attribute="Redirection" context="#stay" String="\d*&lt;&lt;&lt;" />
-        <!-- handle here document -->
-        <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />
-        <!-- handle process subst -->
-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="(" />
-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="(" />
-        <!-- handle redirection -->
-        <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
-        <!-- handle &, &&, | and || -->
-        <RegExpr attribute="Control" context="#stay" String="([|&amp;])\1?" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalCommands">
-        <keyword attribute="Builtin" context="CommandArgs" String="builtins" />
-        <keyword attribute="Command" context="CommandArgs" String="unixcommands" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="&pathpart;*(?=/)" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="~\w*" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'&quot;]|$))" />
-        <RegExpr attribute="OtherCommand" context="CommandArgs" String="/&pathpart;*(?=([\s);$`'&quot;]|$))" />
-        <!-- This list is not complete. ie, ":" is missing but as it is in bash completition. -->
-        <RegExpr attribute="OtherCommand" context="CommandArgsNormal" String="&pathpart;*" />
-      </context>
-
-      <!-- CommandArgs matches the items after a command -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs">
-        <!-- In command arguments, do not allow comments after escaped characters.
-             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
-        <!-- FindComments -->
-        <RegExpr attribute="Control" context="#pop!Comment" String=";;?(?=#)" />
-        <IncludeRules context="FindCommentsInCommand" />
-        <IncludeRules context="FindMostWithoutComments" />
-        <IncludeRules context="DefaultCommandArgs" />
-      </context>
-      <!-- CommandArgs but with normal comments -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgsNormal">
-        <IncludeRules context="FindMost" />
-        <IncludeRules context="DefaultCommandArgs" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="DefaultCommandArgs">
-        <LineContinue />
-        <RegExpr attribute="Keyword" context="#stay" String="\\$" />
-        <!-- handle keywords -->
-        <RegExpr attribute="Option" context="#stay" String="\.(?=\s)" />
-        <!-- handle here-string -->
-        <RegExpr attribute="Redirection" context="#stay" String="\d*&lt;&lt;&lt;" />
-        <!-- handle here document -->
-        <Detect2Chars attribute="Redirection" context="HereDoc" char="&lt;" char1="&lt;" lookAhead="true" />
-        <!-- handle process subst -->
-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="(" />
-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="(" />
-        <!-- handle redirection -->
-        <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
-        <!-- handle &, &&, |, ||, ; and ;; -->
-        <RegExpr attribute="Control" context="#pop" String="([|&amp;;])\1?" />
-        <RegExpr attribute="Normal Text" context="#stay" String="[a-zA-Z_]+-[A-Za-z0-9_-]*" />
-        <RegExpr attribute="Option" context="#stay" String="-?-[a-zA-Z_][A-Za-z0-9_-]*" />
-        <keyword attribute="Option" context="#stay" String="keywords" />
-        <AnyChar String=")}" context="#pop" lookAhead="true"/>
-      </context>
-
-      <!-- FindCommands matches many items that can be expected outside strings, substitutions etc, when inside a Backquote -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindCommandsBackq">
-        <IncludeRules context="FindSpecialCommands" />
-        <IncludeRules context="FindNormalCommandsBackq" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalCommandsBackq">
-        <keyword attribute="Builtin" context="CommandArgsBackq" String="builtins" />
-        <keyword attribute="Command" context="CommandArgsBackq" String="unixcommands" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="&pathpart;*(?=/)" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="~\w*" />
-        <RegExpr attribute="OtherCommand" context="#stay" String="/&pathpart;*(?=([/);$`'&quot;]|$))" />
-        <RegExpr attribute="OtherCommand" context="CommandArgsBackq" String="/&pathpart;*(?=([\s);$`'&quot;]|$))" />
-        <RegExpr attribute="OtherCommand" context="CommandArgsBackq" String="&pathpart;*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgsBackq">
-        <LineContinue />
-        <DetectChar attribute="Keyword" context="#pop" char="`" lookAhead="true"/>
-        <IncludeRules context="CommandArgs" />
-      </context>
-
-      <!-- FindOthers contains various rules to mark different shell input -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers">
-        <IncludeRules context="Escapes" />
-        <RegExpr attribute="Keyword" context="#stay" String="\\$" />
-        <!-- Only highlighting closed braces. The "BraceExpansion" context corrects
-             the closure of braces and allows recursive braces (bug #387915). -->
-        <RegExpr attribute="Escape" context="BraceExpansion" 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;]|$))" />
-        <!-- TODO: shell globs beside * and ? (in Path's) -->
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Escapes">
-        <RegExpr attribute="Escape" context="#stay" String="\\[][;\\$`{}()|&amp;&lt;&gt;* ]" />
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
-        <DetectSpaces context="#pop" lookAhead="true" />
-        <DetectChar attribute="Escape" context="#pop" char="}" />
-        <DetectChar attribute="Escape" context="BraceExpansion" char="{" />
-        <RegExpr attribute="Error" context="#stay" String="[^\s\{\}\\](?=\s|$)" />
-        <IncludeRules context="Escapes" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-      <!-- FindStrings looks for single and double quoted strings, also with $-prefix -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
-        <Detect2Chars attribute="Escape" context="#stay" char="\" char1="'" />
-        <Detect2Chars attribute="Escape" context="#stay" char="\" char1="&quot;" />
-        <DetectChar attribute="String SingleQ" context="StringSQ" char="'" />
-        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;" />
-        <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
-        <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
-      </context>
-
-      <!-- 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="#stay" String="\$\{#[0-9]+\}" />
-        <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" />
-        <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/=?+-])" />
-        <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" />
-        <StringDetect attribute="Redirection" context="SubstFile" String="$(&lt;" />
-        <Detect2Chars attribute="Variable" context="SubstCommand" char="$" char1="(" />
-        <DetectChar attribute="Backquote" context="SubstBackq" char="`" />
-        <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" />
-      </context>
-
-      <!-- FindTests finds operators valid in tests -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindTests">
-        <RegExpr attribute="Expression" context="#stay" String="-[abcdefghkprstuwxOGLSNozn](?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="-([no]t|ef)(?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="([!=]=?|[&gt;&lt;])(?=\s)"/>
-        <RegExpr attribute="Expression" context="#stay" String="-(eq|ne|[gl][te])(?=\s)"/>
-      </context>
-
-
-<!-- ====== These are the contexts that can be branched to ======= -->
-
-      <!-- ExprDblParen consumes an expression started in command mode till )) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
-        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" />
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
-        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" />
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- ExprSubParen consumes an expression till ) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- 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"/>
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindTests" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- ExprDblBracket consumes an expression till ]] -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket">
-        <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&amp;]))" endRegion="expression" />
-        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" endRegion="expression" column="0"/>
-        <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" />
-        <IncludeRules context="FindTests" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- Group consumes shell input till } -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Group">
-        <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" />
-        <IncludeRules context="FindAll" />
-      </context>
-
-      <!-- SubShell consumes shell input till ) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell">
-        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" />
-        <IncludeRules context="FindAll" />
-      </context>
-
-      <!-- Assign consumes an expression till EOL or whitespace -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop">
-        <DetectChar attribute="Variable" context="AssignArray" char="(" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-        <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]" />
-      </context>
-
-      <!-- AssignArray consumes everything till ), marking assignments -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray">
-        <DetectChar attribute="Variable" context="#pop" char=")" />
-        <DetectChar attribute="Variable" context="Subscript" char="[" />
-        <DetectChar attribute="Variable" context="Assign" char="=" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop">
-        <DetectChar attribute="Variable" context="Subscript" char="[" />
-        <Detect2Chars attribute="Variable" context="Assign" char="+" char1="=" />
-        <DetectChar attribute="Variable" context="Assign" char="=" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- Subscript consumes anything till ], marks as Variable -->
-      <context attribute="Variable" lineEndContext="#stay" name="Subscript">
-        <DetectChar attribute="Variable" context="#pop" char="]" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
-      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" />
-      </context>
-
-      <!-- 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="Variable" context="#stay" String="\b&varname;" />
-        <DetectChar attribute="Variable" context="Subscript" char="[" />
-        <DetectChar attribute="Variable" context="Assign" char="=" />
-        <IncludeRules context="FindMost" />
-        <!-- stay here in spaces and other safe characters -->
-        <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&amp;&gt;&lt;]" />
-      </context>
-
-      <!-- ProcessSubst handles <(command) and >(command) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst">
-        <DetectChar attribute="Redirection" context="#pop" char=")" />
-        <IncludeRules context="FindCommentsParen" />
-        <IncludeRules context="FindCommands" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- StringSQ consumes anything till ' -->
-      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
-        <DetectChar attribute="String SingleQ" context="#pop" char="'" />
-      </context>
-
-      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
-        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;" />
-        <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\n]" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-      <!-- 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.)" />
-      </context>
-
-      <!-- VarBrace is called as soon as ${xxx is encoutered -->
-      <context attribute="Error" lineEndContext="#stay" name="VarBrace">
-        <DetectChar attribute="Variable" context="#pop" char="}" />
-        <DetectChar attribute="Variable" context="Subscript" char="[" />
-        <RegExpr attribute="Variable" context="VarAlt" String="(:?[-=?+@]|##?|%%?|\^\^?|,,?)" />
-        <RegExpr attribute="Variable" context="VarSubst" String="//?" />
-        <DetectChar attribute="Variable" context="VarSub" char=":" />
-      </context>
-
-      <!-- VarAlt is to handle default/alternate/etc values of variables -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarAlt">
-        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-      <!-- VarSubst is to handle substitutions on variables -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst">
-        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
-        <DetectChar attribute="Variable" context="VarSubst2" char="/" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst2">
-        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-      <!-- VarSub is to substrings of variables -->
-      <context attribute="Error" lineEndContext="#stay" name="VarSub">
-        <DetectSpaces attribute="Variable" context="#stay" />
-        <DetectChar attribute="Variable" context="VarSub2" char=":" />
-        <DetectChar attribute="Variable" context="#pop#pop" char="}" />
-        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
-        <RegExpr attribute="Variable" context="#stay" String="([\-\+]\s*)?[0-9]+\s*(?=[:}])" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-      <context attribute="Error" lineEndContext="#stay" name="VarSub2">
-        <DetectSpaces attribute="Variable" context="#stay" />
-        <DetectChar attribute="Variable" context="#pop#pop#pop" char="}" />
-        <RegExpr attribute="Variable" context="#stay" String="&varname;" />
-        <RegExpr attribute="Variable" context="#stay" String="([\-\+]\s*)?[0-9]+\s*(?=[:}])" />
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-
-      <!-- SubstFile is called after a <( or >( is encoutered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile">
-        <DetectChar attribute="Redirection" context="#pop" char=")" />
-        <IncludeRules context="FindCommentsParen" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- SubstCommand is called after a $( is encountered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand">
-        <DetectChar attribute="Variable" context="#pop" char=")" />
-        <IncludeRules context="FindCommentsParen" />
-        <IncludeRules context="FindCommands" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- SubstBackq is called when a backquote is encountered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq">
-        <DetectChar attribute="Backquote" context="#pop" char="`" />
-        <IncludeRules context="FindCommentsBackq" />
-        <IncludeRules context="FindCommandsBackq" />
-        <IncludeRules context="FindStrings" />
-        <IncludeRules context="FindSubstitutions" />
-        <IncludeRules context="FindOthers" />
-      </context>
-
-      <!-- Case is called after the case keyword is encoutered. We handle this because of
-           the lonely closing parentheses that would otherwise disturb the expr matching -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
-        <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn">
-        <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" />
-        <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" />
-        <AnyChar attribute="Keyword" context="#stay" String="(|" />
-        <IncludeRules context="FindMost" />
-      </context>
-
-      <!-- CaseExpr eats shell input till ;; -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr">
-        <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" />
-        <RegExpr attribute="Keyword" context="#pop" String="esac(?=$|[\s;)])" lookAhead="true" firstNonSpace="true" endRegion="caseexpr"/>
-        <IncludeRules context="FindAll" />
-      </context>
-
-      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
-        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*&quot;(&word;)&quot;)" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*'(&word;)')" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocIQ"  String="(&lt;&lt;-\s*\\(&word;))" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocINQ" String="(&lt;&lt;-\s*(&word;))" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*&quot;(&word;)&quot;)" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
-        <RegExpr attribute="Redirection" context="HereDocNQ"  String="(&lt;&lt;\s*(&word;))" lookAhead="true" />
-        <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;" /><!-- always met -->
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder">
-        <IncludeRules context="FindAll" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
-        <IncludeRules context="FindSubstitutions" />
-      </context>
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text"	defStyleNum="dsNormal" />
-      <itemData name="Comment"		defStyleNum="dsComment" />
-      <itemData name="Keyword"		defStyleNum="dsKeyword" />
-      <itemData name="Control"		defStyleNum="dsKeyword" />
-      <itemData name="Builtin"		defStyleNum="dsBuiltIn" />
-      <itemData name="Command"		defStyleNum="dsFunction" />
-      <itemData name="OtherCommand"	defStyleNum="dsExtension" />
-      <itemData name="Redirection"	defStyleNum="dsOperator" />
-      <itemData name="Escape"		defStyleNum="dsDataType" />
-      <itemData name="String SingleQ"	defStyleNum="dsString" />
-      <itemData name="String DoubleQ"	defStyleNum="dsString" />
-      <itemData name="Backquote"	defStyleNum="dsKeyword" />
-      <itemData name="String Transl."	defStyleNum="dsString" />
-      <itemData name="String Escape"	defStyleNum="dsDataType" />
-      <itemData name="Variable" 	defStyleNum="dsVariable" />
-      <itemData name="Expression"	defStyleNum="dsOthers" />
-      <itemData name="Function" 	defStyleNum="dsFunction" />
-      <itemData name="Path"		defStyleNum="dsNormal" />
-      <itemData name="Option"		defStyleNum="dsNormal" />
-      <itemData name="Error"		defStyleNum="dsError" />
+        <!ENTITY tab      "&#009;">
+        <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
+        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+        <!ENTITY eos      "(?=$|[ &tab;])">                 <!-- eol or space following -->
+        <!ENTITY eoexpr   "(?=$|[ &tab;&lt;>|&amp;;])">
+
+        <!ENTITY substseps  "${'&quot;`\\">
+        <!ENTITY symbolseps "&lt;>|&amp;;()"> <!-- see man bash -->
+        <!ENTITY wordseps   " &tab;&symbolseps;"> <!-- see man bash -->
+
+        <!ENTITY _fragpathseps  "*?+!@&wordseps;&substseps;">
+        <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.)?+">
+        <!ENTITY path       "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">
+        <!ENTITY fragpath   "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">
+        <!ENTITY opt        "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">
+        <!ENTITY pathpart   "(?:~|\.\.?|&fragpath;)(?:/&path;|(?=[*?]|[+!@]\(|&fragpath;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=[&wordseps;]|$)">
+
+        <!ENTITY _braceexpansion_spe     " &tab;{}\\`'&quot;$">
+        <!ENTITY brace_noexpansion       "\{[^&_braceexpansion_spe;,]*+\}">
+        <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
+        <!ENTITY _braceexpansion_string  "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">
+        <!ENTITY _braceexpansion_consume "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&brace_noexpansion;|(?R)?+">
+        <!ENTITY braceexpansion "{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)+?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)+?}">
+
+        <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
+]>
+
+<language name="Bash" version="15" 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">
+
+<!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
+    Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
+    Changes by Sebastian Pipping (webmaster@hartwork.org)
+    Changes by Luiz Angelo Daros de Luca (luizluca@gmail.com)
+    Released under the LGPL, part of kdelibs/kate -->
+
+  <highlighting>
+    <list name="keywords">
+      <item>case</item>
+      <item>continue</item>
+      <item>do</item>
+      <item>done</item>
+      <item>elif</item>
+      <item>else</item>
+      <item>esac</item>
+      <item>fi</item>
+      <item>for</item>
+      <item>function</item>
+      <item>if</item>
+      <item>in</item>
+      <item>return</item>
+      <item>select</item>
+      <item>then</item>
+      <item>until</item>
+      <item>while</item>
+    </list>
+
+    <list name="builtins">
+      <item>.</item>
+      <item>:</item>
+      <item>source</item>
+      <item>alias</item>
+      <item>bg</item>
+      <item>bind</item>
+      <item>break</item>
+      <item>builtin</item>
+      <item>cd</item>
+      <item>caller</item>
+      <item>command</item>
+      <item>compgen</item>
+      <item>complete</item>
+      <item>dirs</item>
+      <item>disown</item>
+      <item>echo</item>
+      <item>enable</item>
+      <item>eval</item>
+      <item>exec</item>
+      <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>
+      <item>pushd</item>
+      <item>pwd</item>
+      <item>set</item>
+      <item>shift</item>
+      <item>shopt</item>
+      <item>suspend</item>
+      <item>test</item>
+      <item>time</item>
+      <item>times</item>
+      <item>trap</item>
+      <item>type</item>
+      <item>ulimit</item>
+      <item>umask</item>
+      <item>unalias</item>
+      <item>wait</item>
+    </list>
+
+    <list name="builtins_var">
+      <item>export</item>
+      <item>unset</item>
+      <item>declare</item>
+      <item>typeset</item>
+      <item>local</item>
+      <item>read</item>
+      <item>readonly</item>
+    </list>
+
+    <list name="unixcommands">
+      <!-- /bin -->
+      <item>arch</item>
+      <item>awk</item>
+      <item>bash</item>
+      <item>bunzip2</item>
+      <item>bzcat</item>
+      <item>bzcmp</item>
+      <item>bzdiff</item>
+      <item>bzegrep</item>
+      <item>bzfgrep</item>
+      <item>bzgrep</item>
+      <item>bzip2</item>
+      <item>bzip2recover</item>
+      <item>bzless</item>
+      <item>bzmore</item>
+      <item>cat</item>
+      <item>chattr</item>
+      <item>chgrp</item>
+      <item>chmod</item>
+      <item>chown</item>
+      <item>chvt</item>
+      <item>cp</item>
+      <item>date</item>
+      <item>dd</item>
+      <item>deallocvt</item>
+      <item>df</item>
+      <item>dir</item>
+      <item>dircolors</item>
+      <item>dmesg</item>
+      <item>dnsdomainname</item>
+      <item>domainname</item>
+      <item>du</item>
+      <item>dumpkeys</item>
+      <item>ed</item>
+      <item>egrep</item>
+      <item>false</item>
+      <item>fgconsole</item>
+      <item>fgrep</item>
+      <item>fuser</item>
+      <item>gawk</item>
+      <item>getkeycodes</item>
+      <item>gocr</item>
+      <item>grep</item>
+      <item>groff</item>
+      <item>groups</item>
+      <item>gunzip</item>
+      <item>gzexe</item>
+      <item>gzip</item>
+      <item>hostname</item>
+      <item>igawk</item>
+      <item>install</item>
+      <item>kbd_mode</item>
+      <item>kbdrate</item>
+      <item>killall</item>
+      <item>last</item>
+      <item>lastb</item>
+      <item>link</item>
+      <item>ln</item>
+      <item>loadkeys</item>
+      <item>loadunimap</item>
+      <item>login</item>
+      <item>ls</item>
+      <item>lsattr</item>
+      <item>lsmod</item>
+      <item>lsmod.old</item>
+      <item>lzcat</item>
+      <item>lzcmp</item>
+      <item>lzdiff</item>
+      <item>lzegrep</item>
+      <item>lzfgrep</item>
+      <item>lzgrep</item>
+      <item>lzless</item>
+      <item>lzma</item>
+      <item>lzmainfo</item>
+      <item>lzmore</item>
+      <item>mapscrn</item>
+      <item>mesg</item>
+      <item>mkdir</item>
+      <item>mkfifo</item>
+      <item>mknod</item>
+      <item>mktemp</item>
+      <item>more</item>
+      <item>mount</item>
+      <item>mv</item>
+      <item>nano</item>
+      <item>netstat</item>
+      <item>nisdomainname</item>
+      <item>nroff</item>
+      <item>openvt</item>
+      <item>pgawk</item>
+      <item>pidof</item>
+      <item>ping</item>
+      <item>ps</item>
+      <item>pstree</item>
+      <item>rbash</item>
+      <item>readlink</item>
+      <item>red</item>
+      <item>resizecons</item>
+      <item>rm</item>
+      <item>rmdir</item>
+      <item>run-parts</item>
+      <item>sash</item>
+      <item>sed</item>
+      <item>setfont</item>
+      <item>setkeycodes</item>
+      <item>setleds</item>
+      <item>setmetamode</item>
+      <item>setserial</item>
+      <item>sh</item>
+      <item>showkey</item>
+      <item>shred</item>
+      <item>sleep</item>
+      <item>ssed</item>
+      <item>stat</item>
+      <item>stty</item>
+      <item>su</item>
+      <item>sync</item>
+      <item>tar</item>
+      <item>tempfile</item>
+      <item>touch</item>
+      <item>troff</item>
+      <item>true</item>
+      <item>truncate</item>
+      <item>umount</item>
+      <item>uname</item>
+      <item>unicode_start</item>
+      <item>unicode_stop</item>
+      <item>unlink</item>
+      <item>unlzma</item>
+      <item>unxz</item>
+      <item>utmpdump</item>
+      <item>uuidgen</item>
+      <item>vdir</item>
+      <item>wall</item>
+      <item>wc</item>
+      <item>xz</item>
+      <item>xzcat</item>
+      <item>ypdomainname</item>
+      <item>zcat</item>
+      <item>zcmp</item>
+      <item>zdiff</item>
+      <item>zegrep</item>
+      <item>zfgrep</item>
+      <item>zforce</item>
+      <item>zgrep</item>
+      <item>zless</item>
+      <item>zmore</item>
+      <item>znew</item>
+      <item>zsh</item>
+
+      <!-- some from /usr/bin -->
+      <item>aclocal</item>
+      <item>aconnect</item>
+      <item>aplay</item>
+      <item>apm</item>
+      <item>apmsleep</item>
+      <item>apropos</item>
+      <item>ar</item>
+      <item>arecord</item>
+      <item>as</item>
+      <item>as86</item>
+      <item>autoconf</item>
+      <item>autoheader</item>
+      <item>automake</item>
+      <item>basename</item>
+      <item>bc</item>
+      <item>bison</item>
+      <item>c++</item>
+      <item>cal</item>
+      <item>cc</item>
+      <item>cdda2wav</item>
+      <item>cdparanoia</item>
+      <item>cdrdao</item>
+      <item>cd-read</item>
+      <item>cdrecord</item>
+      <item>chfn</item>
+      <item>chroot</item>
+      <item>chsh</item>
+      <item>clear</item>
+      <item>cmp</item>
+      <item>co</item>
+      <item>col</item>
+      <item>comm</item>
+      <item>cpio</item>
+      <item>cpp</item>
+      <item>cut</item>
+      <item>dc</item>
+      <item>diff</item>
+      <item>diff3</item>
+      <item>directomatic</item>
+      <item>dirname</item>
+      <item>env</item>
+      <item>expr</item>
+      <item>fbset</item>
+      <item>file</item>
+      <item>find</item>
+      <item>flex</item>
+      <item>flex++</item>
+      <item>fmt</item>
+      <item>free</item>
+      <item>ftp</item>
+      <item>funzip</item>
+      <item>g++</item>
+      <item>gc</item>
+      <item>gcc</item>
+      <item>clang</item>
+      <item>valgrind</item>
+      <item>xdg-open</item>
+      <item>cmake</item>
+      <item>qmake</item>
+      <item>svn</item>
+      <item>git</item>
+      <item>rsync</item>
+      <item>gdb</item>
+      <item>getent</item>
+      <item>getopt</item>
+      <item>gettext</item>
+      <item>gettextize</item>
+      <item>gimp</item>
+      <item>gimp-remote</item>
+      <item>gimptool</item>
+      <item>gmake</item>
+      <item>gs</item>
+      <item>head</item>
+      <item>hexdump</item>
+      <item>id</item>
+      <item>join</item>
+      <item>ld</item>
+      <item>ld86</item>
+      <item>ldd</item>
+      <item>less</item>
+      <item>lex</item>
+      <item>locate</item>
+      <item>lockfile</item>
+      <item>logname</item>
+      <item>lp</item>
+      <item>lpr</item>
+      <item>lynx</item>
+      <item>m4</item>
+      <item>make</item>
+      <item>man</item>
+      <item>msgfmt</item>
+      <item>namei</item>
+      <item>nasm</item>
+      <item>nawk</item>
+      <item>nice</item>
+      <item>nl</item>
+      <item>nm</item>
+      <item>nm86</item>
+      <item>nmap</item>
+      <item>nohup</item>
+      <item>nop</item>
+      <item>od</item>
+      <item>passwd</item>
+      <item>patch</item>
+      <item>pcregrep</item>
+      <item>pcretest</item>
+      <item>perl</item>
+      <item>perror</item>
+      <item>pr</item>
+      <item>procmail</item>
+      <item>prune</item>
+      <item>ps2ascii</item>
+      <item>ps2epsi</item>
+      <item>ps2frag</item>
+      <item>ps2pdf</item>
+      <item>ps2ps</item>
+      <item>psbook</item>
+      <item>psmerge</item>
+      <item>psnup</item>
+      <item>psresize</item>
+      <item>psselect</item>
+      <item>pstops</item>
+      <item>rcs</item>
+      <item>rev</item>
+      <item>scp</item>
+      <item>seq</item>
+      <item>setterm</item>
+      <item>size</item>
+      <item>size86</item>
+      <item>skill</item>
+      <item>slogin</item>
+      <item>snice</item>
+      <item>sort</item>
+      <item>sox</item>
+      <item>split</item>
+      <item>ssh</item>
+      <item>ssh-add</item>
+      <item>ssh-agent</item>
+      <item>ssh-keygen</item>
+      <item>ssh-keyscan</item>
+      <item>strings</item>
+      <item>strip</item>
+      <item>sudo</item>
+      <item>suidperl</item>
+      <item>sum</item>
+      <item>tac</item>
+      <item>tail</item>
+      <item>tee</item>
+      <item>tr</item>
+      <item>tsort</item>
+      <item>uniq</item>
+      <item>unzip</item>
+      <item>updatedb</item>
+      <item>updmap</item>
+      <item>uptime</item>
+      <item>users</item>
+      <item>vmstat</item>
+      <item>w</item>
+      <item>wget</item>
+      <item>whatis</item>
+      <item>whereis</item>
+      <item>which</item>
+      <item>who</item>
+      <item>whoami</item>
+      <item>write</item>
+      <item>xargs</item>
+      <item>yacc</item>
+      <item>yes</item>
+      <item>zip</item>
+      <item>zsoelim</item>
+
+      <!-- others -->
+      <item>dcop</item>
+      <item>kdialog</item>
+      <item>kfile</item>
+      <item>xhost</item>
+      <item>xmodmap</item>
+      <item>xset</item>
+    </list>
+
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <!-- start expression in double parentheses -->
+        <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression"/>
+        <!-- start a subshell -->
+        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/>
+        <!-- start expression in single/double brackets -->
+        <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/>
+        <!-- start a group command or BraceExpansion with { -->
+        <DetectChar context="MaybeGroup" char="{" lookAhead="1"/>
+
+        <!-- handle ` -->
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+
+        <!-- &> and &>> redirection -->
+        <StringDetect attribute="Redirection" context="WordRedirection" String="&amp;>>"/>
+        <Detect2Chars attribute="Redirection" context="FdRedirection" char="&amp;" char1=">"/>
+
+        <!-- handle branche conditions -->
+        <Detect2Chars attribute="Control" context="#pop" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/>
+
+        <!-- handle &, |, ; -->
+        <AnyChar attribute="Control" context="#stay" String="&amp;|;"/>
+
+        <!-- handle variable assignments -->
+        <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))"/>
+        <!-- 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"/>
+        <!-- mark function definitions without function keyword -->
+        <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/>
+        <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>
+        <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>
+
+        <!-- handle redirection -->
+        <AnyChar context="CommandMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
+
+        <AnyChar attribute="Error" context="#stay" String=")}"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">
+        <!-- start expression in double brackets -->
+        <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression"/>
+        <!-- start expression in single brackets -->
+        <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroup">
+        <!-- start a group command with { -->
+        <RegExpr attribute="Keyword" context="#pop!Group" String="\{&eos;" beginRegion="group"/>
+        <DetectChar context="#pop!Command" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command">
+        <IncludeRules context="FindRedirection"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+      </context>
+      <!-- Comment consumes shell comments till EOL -->
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces attribute="Comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier attribute="Comment" context="#stay"/>
+      </context>
+
+      <!-- Group is called after a { is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command">
+        <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>
+        <IncludeRules context="Start"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">
+        <!-- stop a group command with } -->
+        <RegExpr attribute="Keyword" context="#pop#pop" String="\}&eoexpr;" endRegion="group"/>
+        <DetectChar context="#pop!Command" char="}" lookAhead="1"/>
+      </context>
+
+      <context attribute="Command" lineEndContext="#pop" name="Command" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>
+        <DetectChar context="CommandVariables" char="$" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="#pop" char="`" lookAhead="1"/>
+        <RegExpr attribute="OtherCommand" context="CommandName" String="(?:[^&wordseps;&substseps;]++|\\.)+"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop#pop" name="CommandVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="OtherCommand" context="#pop" char="$"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop#pop" name="DispatchVariables">
+        <IncludeRules context="DispatchSubstVariables"/>
+        <IncludeRules context="DispatchStringVariables"/>
+        <IncludeRules context="DispatchVarnameVariables"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop#pop" name="DispatchSubstVariables">
+        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>
+        <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/>
+        <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="("/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop#pop" name="DispatchStringVariables">
+        <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>
+        <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="&quot;"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop#pop" name="DispatchVarnameVariables">
+        <RegExpr attribute="Variable" context="#pop" String="\$(?:&varname;|[*@#?$!0-9-])"/>
+      </context>
+      <context attribute="OtherCommand" lineEndContext="#pop#pop" name="CommandName">
+        <DetectSpaces attribute="Normal Text" context="#pop#pop!CommandArgs"/>
+        <DetectChar context="CommandVariables" char="$" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="#pop#pop" char="`" lookAhead="1"/>
+        <Detect2Chars attribute="Control" context="#pop#pop" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop#pop" char="|" char1="|"/>
+        <DetectChar attribute="Control" context="#pop#pop" char="|"/>
+        <DetectChar attribute="Control" context="#pop#pop" char=";"/>
+        <DetectChar context="#pop#pop" char=")" lookAhead="1"/>
+        <AnyChar context="#pop#pop!CommandArgs" String="&amp;&lt;>" lookAhead="1"/>
+        <!-- start expression in double parentheses -->
+        <Detect2Chars attribute="Error" context="#pop#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
+        <!-- start a subshell -->
+        <DetectChar attribute="Error" context="#pop#pop!SubShell" char="(" beginRegion="subshell"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectChar context="#pop!CommandMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="OtherCommand" context="#pop" char="{"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+      <!-- CommentBackq consumes shell comments till EOL or a backquote -->
+      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
+        <DetectChar context="#pop" char="`" lookAhead="1"/>
+        <IncludeRules context="Comment"/>
+      </context>
+
+      <!-- CommandArgs matches the items after a command -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+
+        <!-- &> and &>> redirection -->
+        <StringDetect attribute="Redirection" context="WordRedirection" String="&amp;>>"/>
+        <Detect2Chars attribute="Redirection" context="FdRedirection" char="&amp;" char1=">"/>
+
+        <!-- handle &, |, ;, ` -->
+        <AnyChar context="#pop" String="&amp;|;`" lookAhead="1"/>
+
+        <!-- handle process subst -->
+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&lt;" char1="("/>
+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="&gt;" char1="("/>
+        <!-- handle redirection -->
+        <AnyChar context="CommandArgMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
+
+        <DetectChar context="#pop" char=")" lookAhead="1"/>
+        <DetectChar attribute="Error" context="#pop!SubShell" char="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption">
+        <!-- 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"/>
+        <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/>
+        <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption">
+        <IncludeRules context="FindRedirection"/>
+      </context>
+
+      <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">
+        <DetectChar attribute="Path" context="PathThenPop" char="/"/>
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="LongOption"/>
+      </context>
+      <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindGlobAndPop"/>
+        <DetectChar context="OptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <RegExpr attribute="Option" context="#stay" String="&opt;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <IncludeRules context="FindPathThenPop"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="[^&wordseps;&substseps;]+"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="OptionMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Option" context="#pop" char="{"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NormalMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="{"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape">
+        <LineContinue attribute="Escape" context="#pop"/>
+        <RegExpr attribute="Escape" context="#pop" String="\\."/>
+      </context>
+
+<!-- ====== The following rulessets are meant to be included ======== -->
+
+      <!-- FindRedirection consumes shell redirection -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection">
+        <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[&lt;>])"/>
+        <IncludeRules context="AssumeRedirection"/>
+      </context>
+
+      <!-- DispatchBraceExpansion consumes brace expansions -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion">
+        <!-- Only highlighting closed braces. The "BraceExpansion" context corrects
+             the closure of braces and allows recursive braces (bug #387915). -->
+        <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>
+      </context>
+
+      <!-- FindPathThenPop consumes path -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">
+        <IncludeRules context="FindGlobAndPop"/>
+        <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="FindGlobAndPop">
+        <IncludeRules context="FindExtGlobAndPop"/>
+        <AnyChar attribute="Glob" context="PathThenPop" String="?*"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="FindExtGlobAndPop">
+        <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="?" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="*" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="+" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="@" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="!" char1="("/>
+      </context>
+      <context attribute="Path" lineEndContext="#stay" name="ExtGlobAndPop">
+        <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/>
+        <IncludeRules context="IncExtGlob"/>
+      </context>
+      <context attribute="Path" lineEndContext="#stay" name="RecursiveExtGlob">
+        <DetectChar attribute="Glob" context="#pop" char=")"/>
+        <IncludeRules context="IncExtGlob"/>
+      </context>
+      <context attribute="Path" lineEndContext="#stay" name="IncExtGlob">
+        <DetectChar attribute="Glob" context="#stay" char="|"/>
+        <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="?" char1="("/>
+        <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="*" char1="("/>
+        <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="+" char1="("/>
+        <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="@" char1="("/>
+        <Detect2Chars attribute="Glob" context="RecursiveExtGlob" char="!" char1="("/>
+        <AnyChar attribute="Glob" context="#stay" String="?*"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">
+        <AnyChar context="#pop#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+        <IncludeRules context="FindExtGlobAndPop"/>
+        <AnyChar attribute="Glob" context="#stay" String="?*"/>
+        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <RegExpr attribute="Path" context="#stay" String="&path;"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion" fallthroughContext="#pop">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Path" context="#pop" char="{"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindPattern">
+        <Detect2Chars attribute="Glob" context="ExtPattern" char="?" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtPattern" char="*" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtPattern" char="+" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtPattern" char="@" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExtPattern" char="!" char1="("/>
+        <AnyChar attribute="Glob" context="#stay" String="?*"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="ExtPattern">
+        <DetectChar attribute="Glob" context="#stay" char="|"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar attribute="Glob" context="#pop" char=")"/>
+        <IncludeRules context="FindPattern"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
+        <DetectChar attribute="Variable" context="Assign" char="="/>
+        <Detect2Chars attribute="Variable" context="Assign" char="+" char1="="/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">
+        <!-- match do and if blocks -->
+        <Detect2Chars attribute="Control Flow" context="#pop" char="i" char1="f" beginRegion="if"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>
+        <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>
+        <!-- handle for as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>
+        <!-- handle select as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!For" String="select"/>
+        <!-- handle case as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/>
+        <!-- handle functions with function keyword before keywords -->
+        <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/>
+        <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/>
+        <!-- not a keyword in this context -->
+        <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/>
+        <StringDetect attribute="Error" context="#pop" String="esac"/>
+        <!-- handle keywords -->
+        <DetectIdentifier attribute="Control Flow" context="#pop"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!ForIn"/>
+        <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ForIn" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Control" context="#pop" char=";"/>
+        <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Control" context="#stay" char=";"/>
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection">
+        <!-- handle output redirection -->
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
+        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&amp;"/>
+        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>
+        <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="&lt;&lt;&lt;"/>
+        <!-- handle here document -->
+        <Detect2Chars context="#pop!HereDoc" char="&lt;" char1="&lt;" lookAhead="1"/>
+        <!-- handle input redirection -->
+        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="&lt;" char1="&amp;"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="&lt;" char1=">"/>
+        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
+        <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">
+        <DetectChar attribute="Keyword" context="#pop" char="-"/>
+      </context>
+
+      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="&lt;&lt;-[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocINQ" String="&lt;&lt;-[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="&lt;&lt;[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocNQ"  String="&lt;&lt;[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>
+
+        <RegExpr context="HereDocIQCmd"  String="(&lt;&lt;-[ &tab;]*&heredocq;)" lookAhead="1"/>
+        <RegExpr context="HereDocINQCmd" String="(&lt;&lt;-[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>
+        <RegExpr context="HereDocQCmd"   String="(&lt;&lt;[ &tab;]*&heredocq;)" lookAhead="1"/>
+        <RegExpr context="HereDocNQCmd"  String="(&lt;&lt;[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>
+
+        <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
+        <IncludeRules context="Start"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="true" fallthroughContext="HereDocText">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="true" fallthroughContext="HereDocText">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="true" fallthroughContext="HereDocText">
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">
+        <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables">
+        <IncludeRules context="DispatchSubstVariables"/>
+        <IncludeRules context="DispatchVarnameVariables"/>
+        <DetectChar attribute="Here Doc" context="#pop" char="$"/>
+      </context>
+
+      <!-- VarName consumes spare variable names and assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthroughContext="NormalOption">
+        <DetectChar attribute="Variable" context="Subscript" char="["/>
+        <DetectChar attribute="Variable" context="Assign" char="="/>
+        <DetectChar attribute="Variable" context="AssignArray" char="("/>
+        <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>
+
+      <!-- ProcessSubst handles <(command) and >(command) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">
+        <DetectChar attribute="Redirection" context="#pop" char=")"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- StringSQ consumes anything till ' -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+      </context>
+
+      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;"/>
+        <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>
+        <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>
+        <LineContinue attribute="String Escape" context="#pop"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>
+      </context>
+
+      <!-- RegularBackq consumes anything till ` -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- 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\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="RegularVariable" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="$"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings">
+        <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;"/>
+      </context>
+
+      <!-- SubstCommand is called after a $( is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char=")"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- VarBraceStart is called as soon as ${ is encoutered -->
+      <context attribute="Variable" lineEndContext="#pop!VarBrace" name="VarBraceStart" fallthroughContext="#pop!VarBrace">
+        <DetectChar attribute="Parameter Expansion" context="#pop!VarBracePrefix" char="!"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop!VarBrace" char="#"/>
+      </context>
+
+      <!-- VarBracePrefix called as soon as ${! is encoutered -->
+      <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">
+        <RegExpr attribute="Variable" context="#pop!VarBracePrefixSuffix" String="&varname;"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix">
+        <DetectChar attribute="Variable" context="#pop" char="}"/>
+      </context>
+
+      <!-- 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]+"/>
+      </context>
+      <context attribute="Error" lineEndContext="#stay" name="VarError">
+        <DetectChar attribute="Variable" context="#pop" char="}"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="-"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="?"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="+"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="#" char1="#"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="%" char1="%"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" 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!AlternateValue" char="^"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=","/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarTransformation" char="@"/>
+      </context>
+
+      <!-- called as soon as ${xxx: is encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">
+        <DetectChar attribute="Variable" context="#pop" char="}"/>
+        <!-- <Int> doesn't match :3 because : is a weakDeliminator -->
+        <AnyChar attribute="Decimal" String="0123456789"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>
+        <DetectChar context="VarVariables" char="$" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop" name="VarVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Error" context="#pop" char="$"/>
+      </context>
+
+      <!-- called as soon as ${xxx:- ${xxx:= ${xxx:? ${xxx:+ ${xxx^ ${xxx ${xxx# and ${xxx% are encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="AlternateValue">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPattern"/>
+      </context>
+
+      <!-- called as soon as ${xxx/ is encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSubst" fallthroughContext="#pop!VarSubstPat">
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarSubstPat" String="/#%"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="VarSubstPat">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="/"/>
+        <IncludeRules context="AlternateValue"/>
+      </context>
+
+      <!-- called as soon as ${xxx@ is encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarTransformation" fallthroughContext="#pop!VarError">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <AnyChar attribute="Parameter Expansion" context="#stay" String="QEPAa"/>
+      </context>
+
+      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
+        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Escape" context="#pop" char="}"/>
+        <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+        <DetectChar context="BraceExpansionVariables" char="$" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindPattern"/>
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <RegExpr attribute="Escape" context="#pop" String="&brace_noexpansion;"/>
+        <DetectChar attribute="Escape" context="#pop" char="{"/>
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Escape" context="#pop" char="$"/>
+      </context>
+
+<!-- ====== These are the contexts that can be branched to ======= -->
+
+      <!-- ExprDblParen consumes an expression started in command mode till )) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen">
+        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>
+        <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"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="ExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeArithmeticBrace">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Error" context="#pop" char="{"/>
+      </context>
+
+      <context attribute="Decimal" lineEndContext="#pop" name="Number">
+        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>
+        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>
+        <DetectChar context="#pop!Octal" char="0" lookAhead="1"/>
+        <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9]*#"/>
+        <AnyChar attribute="Decimal" context="#pop!Decimal" String="123456789"/>
+      </context>
+      <context attribute="Octal" lineEndContext="#pop" name="Octal" fallthroughContext="#pop!Decimal">
+        <RegExpr attribute="Octal" context="#pop!NumberError" String="0[0-7]+"/>
+        <DetectChar attribute="Decimal" context="#pop" char="0"/>
+      </context>
+      <context attribute="Decimal" lineEndContext="#pop" name="Decimal" fallthroughContext="#pop">
+        <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
+      </context>
+      <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">
+        <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F]+"/>
+      </context>
+      <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="NumberError" fallthroughContext="#pop">
+        <AnyChar attribute="Error" context="NumberError" String="8901234567"/>
+      </context>
+
+      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+
+      <!-- ExprBracket consumes an expression till ] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/>
+        <DetectChar context="ExprBracketTestMaybeNot" char="!" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprBracketParam1">
+        <RegExpr attribute="Expression" context="#pop" String="!(?=[ &tab;])"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/>
+        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>
+        <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+        <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\][^ &tab;])++" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>]))" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!NormalOption">
+        <RegExpr attribute="Expression" context="#pop" String="-[abcdefghkprstuwxGLNOSovRnz](?=[ &tab;])"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!NormalOption">
+        <RegExpr attribute="Expression" context="#pop" String="(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=[ &tab;])"/>
+      </context>
+
+
+      <!-- ExprDblBracket consumes an expression till ]] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam1"/>
+        <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">
+        <IncludeRules context="ExprBracketTestMaybeNot"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
+        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
+        <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
+        <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>
+        <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!NormalOption">
+        <IncludeRules context="TestMaybeBinary"/>
+        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~(?=[ &tab;])"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="ExprDblBracketFinal" name="ExprDblBracketParam3" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\](?:[^]]|\][^ &tab;]))++" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;]))" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex">
+        <DetectSpaces attribute="Normal Text" context="#pop!Regex"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="Regex">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
+        <DetectChar attribute="Error" context="#stay" char=")"/>
+        <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>
+        <DetectChar attribute="Operator" context="RegexChar" char="["/>
+        <IncludeRules context="FindRegex"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">
+        <DetectSpaces attribute="Pattern" context="#stay"/>
+        <DetectChar attribute="Operator" context="#pop" char=")"/>
+        <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>
+        <DetectChar attribute="Operator" context="RegexSubChar" char="["/>
+        <IncludeRules context="FindRegex"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindRegex">
+        <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/>
+        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
+        <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/>
+        <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Operator" context="#pop" char="$"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape">
+        <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">
+        <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar">
+        <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar">
+        <DetectSpaces attribute="Pattern" context="#stay"/>
+        <IncludeRules context="RegexInChar"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar">
+        <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar">
+        <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#stay" char="-"/>
+        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
+        <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#pop" char="]"/>
+        <AnyChar context="#pop" String="() &tab;" lookAhead="1"/>
+      </context>
+      <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">
+        <DetectChar attribute="Pattern" context="#stay" char="-"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/>
+        <DetectChar attribute="Pattern" context="#pop" char="["/>
+      </context>
+
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+
+      <!-- SubShell consumes shell input till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- Assign consumes an expression till EOL or whitespace -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!Assign2">
+        <DetectChar attribute="Variable" context="AssignArray" char="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Assign2" fallthroughContext="#pop">
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="NormalOption"/>
+      </context>
+
+      <!-- AssignArray consumes everything till ), marking assignments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Variable" context="#pop!Assign2" char=")"/>
+        <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
+        <DetectChar attribute="Variable" context="#pop" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- Subscript consumes anything till ], marks as Variable -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="#pop!Subscript2">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Subscript2">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPattern"/>
+      </context>
+
+      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
+      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="[ &tab;]+&funcname;(?:[ &tab;]*\(\))?"/>
+      </context>
+
+      <!-- Case is called after the case keyword is encoutered. We handle this because of
+           the lonely closing parentheses that would otherwise disturb the expr matching -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/>
+        <IncludeRules context="FindWord"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+      </context>
+
+      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="CasePattern" char="("/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+        <DetectChar attribute="Keyword" context="#stay" char="|"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPattern"/>
+        <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/>
+        <DetectIdentifier attribute="Pattern" context="#stay"/>
+      </context>
+
+      <!-- CaseExpr eats shell input till ;; / ;& / ;;& -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command">
+        <StringDetect attribute="Control Flow" context="#pop" String=";;&amp;" endRegion="caseexpr"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&amp;" endRegion="caseexpr"/>
+        <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"    defStyleNum="dsNormal"/>
+      <itemData name="Comment"        defStyleNum="dsComment"/>
+      <itemData name="Keyword"        defStyleNum="dsKeyword"/>
+      <itemData name="Control"        defStyleNum="dsKeyword"/>
+      <itemData name="Control Flow"   defStyleNum="dsControlFlow"/>
+      <itemData name="Builtin"        defStyleNum="dsBuiltIn"/>
+      <itemData name="Command"        defStyleNum="dsFunction"/>
+      <itemData name="OtherCommand"   defStyleNum="dsExtension"/>
+      <itemData name="Redirection"    defStyleNum="dsOperator"/>
+      <itemData name="Escape"         defStyleNum="dsDataType"/>
+      <itemData name="String SingleQ" defStyleNum="dsString"/>
+      <itemData name="String DoubleQ" defStyleNum="dsString"/>
+      <itemData name="Here Doc"       defStyleNum="dsString"/>
+      <itemData name="Backquote"      defStyleNum="dsKeyword"/>
+      <itemData name="String Transl." defStyleNum="dsString"/>
+      <itemData name="String Escape"  defStyleNum="dsDataType"/>
+      <itemData name="Variable"       defStyleNum="dsVariable"/>
+      <itemData name="Expression"     defStyleNum="dsOthers"/>
+      <itemData name="Function"       defStyleNum="dsFunction"/>
+      <itemData name="Pattern"        defStyleNum="dsNormal"/>
+      <itemData name="Path"           defStyleNum="dsNormal"/>
+      <itemData name="Glob"           defStyleNum="dsPreprocessor"/>
+      <itemData name="Option"         defStyleNum="dsAttribute"/>
+      <itemData name="Hex"            defStyleNum="dsBaseN"/>
+      <itemData name="Octal"          defStyleNum="dsBaseN"/>
+      <itemData name="Decimal"        defStyleNum="dsDecVal"/>
+      <itemData name="Base"           defStyleNum="dsDataType"/>
+      <itemData name="BaseN"          defStyleNum="dsBaseN"/>
+      <itemData name="File Descriptor" defStyleNum="dsDecVal"/>
+      <itemData name="Parameter Expansion" defStyleNum="dsVariable"/>
+      <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator"/>
+      <itemData name="Operator"       defStyleNum="dsOperator"/>
+      <itemData name="Error"          defStyleNum="dsError"/>
     </itemDatas>
   </highlighting>
   <general>
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="6" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
+<language name="Boo" version="8" 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>
@@ -184,8 +184,8 @@
 				<DetectChar attribute="Operator" char="(" context="parenthesised" beginRegion="parenthesis"/>
 				<DetectChar attribute="Operator" char=")" context="#pop" endRegion="parenthesis"/>
 
-				<StringDetect attribute="Operator" String="[|" context="Quasi-Quotation" beginRegion="qq"/>
-				<StringDetect attribute="Operator" String="|]" context="#pop" endRegion="qq"/>
+				<Detect2Chars attribute="Operator" char="[" char1="|" context="Quasi-Quotation" beginRegion="qq"/>
+				<Detect2Chars attribute="Operator" char="|" char1="]" context="#pop" endRegion="qq"/>
 
 				<AnyChar attribute="Operator" String="+*/%|=;!&lt;&gt;!^&amp;~-" context="#stay"/>
 				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
@@ -201,47 +201,46 @@
 
 			<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>
-				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 
 			<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCChar attribute="Comment" context="#stay"/>
-				<RegExpr attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
-				<IncludeRules context="##Alerts"/>
+				<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 
 			<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" String="'''" context="#pop" endRegion="Tripple A-region"/>
+				<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" String="'''" context="#pop" endRegion="Tripple A-region"/>
+				<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" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+				<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" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
 			</context>
 
 			<context name="Comment SlashSlash" attribute="Comment" lineEndContext="#pop" >
 				<LineContinue attribute="Comment" context="#stay"/>
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 
 			<context name="Single A-string" attribute="String" lineEndContext="#stay">
@@ -273,8 +272,7 @@
 			</context>
 
 			<context name="Comment" attribute="Comment" lineEndContext="#pop">
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 		</contexts>
 
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="11" kateversion="5.0"
+          version="12" kateversion="5.0"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -163,14 +163,12 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
@@ -207,7 +205,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
@@ -218,7 +216,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
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="12" 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="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+">
   <highlighting>
     <list name="definitions">
       <item>def</item>
@@ -741,14 +741,13 @@
         <DetectChar attribute="Brackets1" context="Level1" char="("/>
       </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <StringDetect attribute="Float" context="#pop" String="M" insensitive="false"/>
+        <DetectChar attribute="Float" context="#pop" char="M"/>
       </context>
       <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <StringDetect attribute="Decimal" context="#pop" String="N" insensitive="false"/>
+        <DetectChar attribute="Decimal" context="#pop" char="N"/>
       </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="function_decl_documentable" attribute="Function" lineEndContext="#stay">
         <RegExpr attribute="Function" context="#pop!DocumentationPossible" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*!\?']*\s*"/>
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -16,7 +16,7 @@
 
 <language
     name="CMake"
-    version="25"
+    version="28"
     kateversion="5.0"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -173,8 +173,15 @@
     </list>
     <list name="cmake_language_nargs">
       <item>CALL</item>
+      <item>CANCEL_CALL</item>
       <item>CODE</item>
+      <item>DEFER</item>
+      <item>DIRECTORY</item>
       <item>EVAL</item>
+      <item>GET_CALL</item>
+      <item>GET_CALL_IDS</item>
+      <item>ID</item>
+      <item>ID_VAR</item>
     </list>
     <list name="cmake_minimum_required_nargs">
       <item>FATAL_ERROR</item>
@@ -199,6 +206,7 @@
       <item>COPYONLY</item>
       <item>ESCAPE_QUOTES</item>
       <item>NEWLINE_STYLE</item>
+      <item>NO_SOURCE_PERMISSIONS</item>
     </list>
     <list name="configure_file_sargs">
       <item>CRLF</item>
@@ -242,6 +250,7 @@
     <list name="execute_process_nargs">
       <item>COMMAND</item>
       <item>COMMAND_ECHO</item>
+      <item>COMMAND_ERROR_IS_FATAL</item>
       <item>ECHO_ERROR_VARIABLE</item>
       <item>ECHO_OUTPUT_VARIABLE</item>
       <item>ENCODING</item>
@@ -261,7 +270,9 @@
     </list>
     <list name="execute_process_sargs">
       <item>ANSI</item>
+      <item>ANY</item>
       <item>AUTO</item>
+      <item>LAST</item>
       <item>NONE</item>
       <item>OEM</item>
       <item>STDERR</item>
@@ -273,6 +284,11 @@
       <item>APPEND</item>
       <item>ARCHIVE_CREATE</item>
       <item>ARCHIVE_EXTRACT</item>
+      <item>BASE_DIRECTORY</item>
+      <item>CHMOD</item>
+      <item>CHMOD_RECURSE</item>
+      <item>COMPRESSION</item>
+      <item>COMPRESSION_LEVEL</item>
       <item>CONDITION</item>
       <item>CONFIGURE</item>
       <item>CONFIGURE_DEPENDS</item>
@@ -328,6 +344,7 @@
       <item>PERMISSIONS</item>
       <item>READ</item>
       <item>READ_SYMLINK</item>
+      <item>REAL_PATH</item>
       <item>REGEX</item>
       <item>RELATIVE</item>
       <item>RELATIVE_PATH</item>
@@ -349,6 +366,7 @@
       <item>SIZE</item>
       <item>STATUS</item>
       <item>STRINGS</item>
+      <item>TARGET</item>
       <item>TIMEOUT</item>
       <item>TIMESTAMP</item>
       <item>TLS_CAINFO</item>
@@ -357,7 +375,6 @@
       <item>TOUCH_NOCREATE</item>
       <item>TO_CMAKE_PATH</item>
       <item>TO_NATIVE_PATH</item>
-      <item>TYPE</item>
       <item>UPLOAD</item>
       <item>USERPWD</item>
       <item>USE_SOURCE_PERMISSIONS</item>
@@ -662,6 +679,8 @@
     </list>
     <list name="separate_arguments_nargs">
       <item>NATIVE_COMMAND</item>
+      <item>PROGRAM</item>
+      <item>SEPARATE_ARGS</item>
       <item>UNIX_COMMAND</item>
       <item>WINDOWS_COMMAND</item>
     </list>
@@ -704,13 +723,16 @@
       <item>CONCAT</item>
       <item>CONFIGURE</item>
       <item>EQUAL</item>
+      <item>ERROR_VARIABLE</item>
       <item>ESCAPE_QUOTES</item>
       <item>FIND</item>
       <item>GENEX_STRIP</item>
+      <item>GET</item>
       <item>GREATER</item>
       <item>GREATER_EQUAL</item>
       <item>HEX</item>
       <item>JOIN</item>
+      <item>JSON</item>
       <item>LENGTH</item>
       <item>LESS</item>
       <item>LESS_EQUAL</item>
@@ -718,6 +740,7 @@
       <item>MATCH</item>
       <item>MATCHALL</item>
       <item>MD5</item>
+      <item>MEMBER</item>
       <item>NAME</item>
       <item>NAMESPACE</item>
       <item>NOTEQUAL</item>
@@ -725,9 +748,11 @@
       <item>RANDOM</item>
       <item>RANDOM_SEED</item>
       <item>REGEX</item>
+      <item>REMOVE</item>
       <item>REPEAT</item>
       <item>REPLACE</item>
       <item>REVERSE</item>
+      <item>SET</item>
       <item>SHA1</item>
       <item>SHA224</item>
       <item>SHA256</item>
@@ -883,6 +908,7 @@
       <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>ISPC</item>
       <item>Java</item>
       <item>OBJC</item>
       <item>OBJCXX</item>
@@ -996,6 +1022,7 @@
       <item>CUDA</item>
       <item>CXX</item>
       <item>Fortran</item>
+      <item>ISPC</item>
       <item>Java</item>
       <item>NONE</item>
       <item>OBJC</item>
@@ -1347,6 +1374,7 @@
       <item>CMAKE_CACHE_MINOR_VERSION</item>
       <item>CMAKE_CACHE_PATCH_VERSION</item>
       <item>CMAKE_CFG_INTDIR</item>
+      <item>CMAKE_CLANG_VFS_OVERLAY</item>
       <item>CMAKE_CL_64</item>
       <item>CMAKE_CODEBLOCKS_COMPILER_ID</item>
       <item>CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES</item>
@@ -1583,12 +1611,20 @@
       <item>CMAKE_NO_BUILTIN_CHRPATH</item>
       <item>CMAKE_NO_STD_NAMESPACE</item>
       <item>CMAKE_NO_SYSTEM_FROM_IMPORTED</item>
+      <item>CMAKE_OBJCXX_EXTENSIONS</item>
+      <item>CMAKE_OBJCXX_STANDARD</item>
+      <item>CMAKE_OBJCXX_STANDARD_REQUIRED</item>
+      <item>CMAKE_OBJC_EXTENSIONS</item>
+      <item>CMAKE_OBJC_STANDARD</item>
+      <item>CMAKE_OBJC_STANDARD_REQUIRED</item>
       <item>CMAKE_OBJECT_PATH_MAX</item>
+      <item>CMAKE_OPTIMIZE_DEPENDENCIES</item>
       <item>CMAKE_OSX_ARCHITECTURES</item>
       <item>CMAKE_OSX_DEPLOYMENT_TARGET</item>
       <item>CMAKE_OSX_SYSROOT</item>
       <item>CMAKE_PARENT_LIST_FILE</item>
       <item>CMAKE_PATCH_VERSION</item>
+      <item>CMAKE_PCH_INSTANTIATE_TEMPLATES</item>
       <item>CMAKE_PCH_WARN_INVALID</item>
       <item>CMAKE_PDB_OUTPUT_DIRECTORY</item>
       <item>CMAKE_POSITION_INDEPENDENT_CODE</item>
@@ -1689,12 +1725,15 @@
       <item>CMAKE_VS_SDK_REFERENCE_DIRECTORIES</item>
       <item>CMAKE_VS_SDK_SOURCE_DIRECTORIES</item>
       <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item>
+      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM</item>
       <item>CMAKE_WARN_DEPRECATED</item>
       <item>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
       <item>CMAKE_WIN32_EXECUTABLE</item>
       <item>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</item>
+      <item>CMAKE_XCODE_BUILD_SYSTEM</item>
       <item>CMAKE_XCODE_GENERATE_SCHEME</item>
       <item>CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY</item>
+      <item>CMAKE_XCODE_LINK_BUILD_PHASE_MODE</item>
       <item>CMAKE_XCODE_PLATFORM_TOOLSET</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
@@ -1782,6 +1821,7 @@
       <item>CPACK_DMG_SLA_LANGUAGES</item>
       <item>CPACK_DMG_VOLUME_NAME</item>
       <item>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
+      <item>CPACK_EXTERNAL_BUILT_PACKAGES</item>
       <item>CPACK_EXTERNAL_ENABLE_STAGING</item>
       <item>CPACK_EXTERNAL_PACKAGE_SCRIPT</item>
       <item>CPACK_EXTERNAL_REQUESTED_VERSIONS</item>
@@ -1883,6 +1923,7 @@
       <item>CPACK_PACKAGE_DESCRIPTION_SUMMARY</item>
       <item>CPACK_PACKAGE_DIRECTORY</item>
       <item>CPACK_PACKAGE_EXECUTABLES</item>
+      <item>CPACK_PACKAGE_FILES</item>
       <item>CPACK_PACKAGE_FILE_NAME</item>
       <item>CPACK_PACKAGE_HOMEPAGE_URL</item>
       <item>CPACK_PACKAGE_ICON</item>
@@ -1897,6 +1938,8 @@
       <item>CPACK_PACKAGING_INSTALL_PREFIX</item>
       <item>CPACK_PKGBUILD_IDENTITY_NAME</item>
       <item>CPACK_PKGBUILD_KEYCHAIN_PATH</item>
+      <item>CPACK_POST_BUILD_SCRIPTS</item>
+      <item>CPACK_PRE_BUILD_SCRIPTS</item>
       <item>CPACK_PRODUCTBUILD_BACKGROUND</item>
       <item>CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT</item>
       <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA</item>
@@ -1989,6 +2032,7 @@
       <item>CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
       <item>CPACK_WIX_CMAKE_PACKAGE_REGISTRY</item>
       <item>CPACK_WIX_CULTURES</item>
+      <item>CPACK_WIX_CUSTOM_XMLNS</item>
       <item>CPACK_WIX_EXTENSIONS</item>
       <item>CPACK_WIX_EXTRA_OBJECTS</item>
       <item>CPACK_WIX_EXTRA_SOURCES</item>
@@ -2452,10 +2496,18 @@
       <item>NAME</item>
       <item>NO_SONAME</item>
       <item>NO_SYSTEM_FROM_IMPORTED</item>
+      <item>OBJCXX_EXTENSIONS</item>
+      <item>OBJCXX_STANDARD</item>
+      <item>OBJCXX_STANDARD_REQUIRED</item>
+      <item>OBJC_EXTENSIONS</item>
+      <item>OBJC_STANDARD</item>
+      <item>OBJC_STANDARD_REQUIRED</item>
+      <item>OPTIMIZE_DEPENDENCIES</item>
       <item>OSX_ARCHITECTURES</item>
       <item>OSX_COMPATIBILITY_VERSION</item>
       <item>OSX_CURRENT_VERSION</item>
       <item>OUTPUT_NAME</item>
+      <item>PCH_INSTANTIATE_TEMPLATES</item>
       <item>PCH_WARN_INVALID</item>
       <item>PDB_NAME</item>
       <item>PDB_OUTPUT_DIRECTORY</item>
@@ -2528,6 +2580,7 @@
       <item>WINDOWS_EXPORT_ALL_SYMBOLS</item>
       <item>XCODE_EXPLICIT_FILE_TYPE</item>
       <item>XCODE_GENERATE_SCHEME</item>
+      <item>XCODE_LINK_BUILD_PHASE_MODE</item>
       <item>XCODE_PRODUCT_TYPE</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
@@ -3876,6 +3929,8 @@
         <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" />
@@ -4132,10 +4187,20 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">
-        <WordDetect attribute="True Special Arg" context="#stay" String="TRUE" />
-        <WordDetect attribute="True Special Arg" context="#stay" String="ON" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="FALSE" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="OFF" />
+        <RegExpr attribute="Version Arg" context="#stay" String="\b[0-9]+(.[0-9]+)+\b" />
+        <!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
+        <WordDetect attribute="True Special Arg" context="#stay" String="TRUE" insensitive="true" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="ON" insensitive="true" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="YES" insensitive="true" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="Y" insensitive="true" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="1" />
+        <!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
+        <WordDetect attribute="False Special Arg" context="#stay" String="FALSE" insensitive="true" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="OFF" insensitive="true" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="NO" insensitive="true" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="N" insensitive="true" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="IGNORE" insensitive="true" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="0" />
         <RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&id_re;-)?NOTFOUND\b" />
         <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9]\b" />
       </context>
@@ -4157,8 +4222,7 @@
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <LineContinue attribute="Comment" context="#pop" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
@@ -4170,8 +4234,7 @@
         <LineContinue attribute="Comment" context="#stay" />
         <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Strings" lineEndContext="#stay" name="String">
@@ -4215,6 +4278,7 @@
       <itemData name="Special Args" defStyleNum="dsOthers" spellChecking="false" />
       <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" />
       <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" />
+      <itemData name="Version Arg" defStyleNum="dsDataType" spellChecking="false" />
       <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
       <itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false" />
       <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
@@ -4238,7 +4302,7 @@
       <comment name="singleLine" start="#" position="afterwhitespace" />
       <comment name="multiLine" start="#[[" end="]]" region="BracketedComment"/>
     </comments>
-    <keywords casesensitive="1" />
+    <keywords casesensitive="1" weakDeliminator="." />
   </general>
 </language>
 
diff --git a/xml/coffee.xml b/xml/coffee.xml
--- a/xml/coffee.xml
+++ b/xml/coffee.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 
 <language name="CoffeeScript"
-          version="13"
+          version="15"
           kateversion="5.0"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
@@ -196,13 +196,11 @@
       </context>
       <!-- Comments. -->
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="1">
         <StringDetect attribute="Comment" context="#pop" String="###" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <!-- Single-line strings. -->
       <context name="String" attribute="String" lineEndContext="#stay">
@@ -268,7 +266,7 @@
       </context>
 
       <context name="Javascript Template" attribute="JavaScript Template" lineEndContext="#stay" noIndentationBasedFolding="1">
-        <RegExpr attribute="Escape" context="#stay" String="\\\\\\`"/>
+        <StringDetect attribute="Escape" context="#stay" String="\\\`"/>
         <Detect2Chars attribute="JavaScript Template" context="RegExpAfterString##JavaScript" char="\" char1="`" endRegion="Template"/> <!-- End template. -->
         <DetectChar context="#pop" char="`" lookAhead="true"/>
         <Detect2Chars attribute="JavaScript Substitution" context="Javascript Substitution" char="$" char1="{"/>
diff --git a/xml/coldfusion.xml b/xml/coldfusion.xml
--- a/xml/coldfusion.xml
+++ b/xml/coldfusion.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="ColdFusion" version="4" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
+<language name="ColdFusion" version="5" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
 
 	<highlighting>
 
@@ -595,23 +595,21 @@
 			<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">
 				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
 				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTML Comment" />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">
 				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" endRegion="CF Comment" />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">
 				<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" endRegion="CComment" />
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop">
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop">
diff --git a/xml/comments.xml b/xml/comments.xml
new file mode 100644
--- /dev/null
+++ b/xml/comments.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language
+    version="1"
+    kateversion="3.1"
+    name="Comments"
+    section="Other"
+    extensions=""
+    mimetype=""
+    author="Alex Turbov (i.zaufi@gmail.com)"
+    license="MIT"
+    hidden="true"
+  >
+  <highlighting>
+    <contexts>
+      <context name="Normal" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##SPDX-Comments" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Comment" defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+</language>
+<!-- kate: indent-width 2; -->
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="8" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
+<language version="9" 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>
@@ -1133,8 +1133,7 @@
       </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="BlockComment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="function_decl" attribute="Function" lineEndContext="#stay">
         <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
@@ -1151,8 +1150,7 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
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="8" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
+<language name="C#" version="9" 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>
@@ -137,13 +137,11 @@
         <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <IncludeRules context="##Doxygen" />
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -38,7 +38,7 @@
 
 -->
 
-<language name="CSS" version="10" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="CSS" version="12" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
     <!-- https://www.w3.org/Style/CSS/current-work -->
 
     <highlighting>
@@ -822,6 +822,7 @@
             <item>static</item>
             <item>static-position</item>
             <item>status-bar</item>
+            <item>sticky</item>
             <item>thick</item>
             <item>thin</item>
             <item>ultra-condensed</item>
@@ -1584,8 +1585,7 @@
             <context name="Comment" attribute="Comment" lineEndContext="#stay">
                 <DetectSpaces />
                 <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
-                <IncludeRules context="##Alerts" />
-                <IncludeRules context="##Modelines" />
+                <IncludeRules context="##Comments" />
                 <DetectIdentifier />
             </context>
 
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="2" kateversion="5.0"
+<language name="Curry" version="3" 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">
@@ -229,8 +229,7 @@
     <!-- Multiline comment -->
     <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" >
       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Multiline Comment" />
-      <IncludeRules context="##Alerts" />
-      <IncludeRules context="##Modelines" />
+      <IncludeRules context="##Comments" />
     </context>
 
     <!-- Currydoc -->
@@ -238,8 +237,7 @@
 
     <!-- Single line comment -->
     <context name="Comment" attribute="Comment" lineEndContext="#pop">
-      <IncludeRules context="##Alerts" />
-      <IncludeRules context="##Modelines" />
+      <IncludeRules context="##Comments" />
     </context>
 
     <!-- Import section -->
diff --git a/xml/d.xml b/xml/d.xml
--- a/xml/d.xml
+++ b/xml/d.xml
@@ -99,7 +99,7 @@
    ========================================================================
 -->
 
-<language name="D" version="7" 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="9" 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">
@@ -720,8 +720,8 @@
       </context>
       <!-- q"*...*" -->
       <context name="DelimStrSimple" attribute="Delimited String Content" lineEndContext="#stay">
-        <RegExpr attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" />
-        <RegExpr attribute="Error" context="#pop" String="%1" dynamic="true" />
+        <StringDetect attribute="Delimited String Delimiter" context="#pop" String="%1&quot;" dynamic="true" />
+        <StringDetect attribute="Error" context="#pop" String="%1" dynamic="true" />
       </context>
 
       <!-- Comments -->
@@ -736,21 +736,18 @@
       </context>
       <context name="CommentLine" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context name="CommentBlock" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context name="CommentNested" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
         <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       
       
@@ -766,7 +763,7 @@
         <DetectIdentifier attribute="Ddoc"/>
         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
       
       <context name="DdocBlock" attribute="Ddoc" lineEndContext="#stay">
@@ -777,7 +774,7 @@
         
         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         
         <!-- Avoid matching this; do it this way since (^|\s)-* always matches .- and \s-* never
              matches .- (spaces have already been matched); however -*($|\s) matches just fine.
@@ -796,7 +793,7 @@
         
         <Detect2Chars attribute="Macros" context="DdocMacro" char="$" char1="(" />
         <RegExpr attribute="DdocSection" context="#stay" String="[\w_]+:($|\s)" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         
         <!-- As above. -->
         <RegExpr attribute="Ddoc" context="#stay" String="[^-]-{3,}" />
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="5" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="6" kateversion="5.0" 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.
@@ -60,8 +60,7 @@
   <context name="Template Comment" attribute="Template Comment" lineEndContext="#stay">
     <RegExpr attribute="Template Comment" context="#pop" String="\{%\s*endcomment\s*%\}" endRegion="templatecomment" />
     <DetectSpaces />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
   </context>
 
   <context name="Template Var" attribute="Template Var" lineEndContext="#stay">
@@ -172,9 +171,8 @@
 
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces/>
-    <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Comments" />
     <IncludeRules context="FindTemplate" />
-    <IncludeRules context="##Modelines" />
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
@@ -275,7 +273,7 @@
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
     <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
     <IncludeRules context="FindTemplate" />
-    <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Comments" />
   </context>
 
   <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
diff --git a/xml/dockerfile.xml b/xml/dockerfile.xml
--- a/xml/dockerfile.xml
+++ b/xml/dockerfile.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Dockerfile syntaxfile v1.0 by James Turnbull <james@lovedthanlost.net> -->
-<language name="Dockerfile" section="Other" version="7" kateversion="3.4" extensions="Dockerfile" author="James Turnbull (james@lovedthanlost.net)" license="MIT">
+<language name="Dockerfile" section="Other" version="9" kateversion="3.4" extensions="Dockerfile" author="James Turnbull (james@lovedthanlost.net)" license="MIT">
   <highlighting>
     <list name="keywords">
       <item>ADD</item>
@@ -36,7 +36,7 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <LineContinue attribute="Comment" context="#stay" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="string&quot;" attribute="String" lineEndContext="#pop">
diff --git a/xml/dot.xml b/xml/dot.xml
--- a/xml/dot.xml
+++ b/xml/dot.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->
-<language name="dot" version="4" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
+<language name="dot" version="5" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
 
   <highlighting>
 
@@ -134,15 +134,13 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="CommentSL">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="CommentML">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
     </contexts>
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="7"
+          version="11"
           kateversion="5.0"
           section="Markup"
           extensions="*.dox;*.doxygen"
@@ -230,7 +230,7 @@
       <context attribute="Comment" lineEndContext="#pop" name="LineComment">
         <LineContinue attribute="Comment" context="#stay" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />
         <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />
@@ -239,7 +239,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="BlockComment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="Comment" context="ML_StartTag" char="\" lookAhead="true" />
         <DetectChar attribute="Comment" context="ML_StartTag" char="@" lookAhead="true" />
@@ -335,7 +335,7 @@
       <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
       </context>
@@ -354,7 +354,7 @@
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
-      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#pop" 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" />
@@ -382,16 +382,16 @@
 
       <context name="ML_Formula" attribute="Formulas" lineEndContext="ML_FindNextLine">
         <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
-        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
-        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
 
       <context name="ML_FormulaShort" attribute="Formulas" lineEndContext="ML_FindNextLine">
         <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
-        <WordDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
-        <WordDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
@@ -401,7 +401,7 @@
         <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
       </context>
 
-      <context name="ML_FormulaEnvStart" attribute="Formulas" lineEndContext="ML_FindNextLine" fallthroughContext="#pop!ML_FormulaEnvFormula">
+      <context name="ML_FormulaEnvStart" attribute="Formulas" lineEndContext="ML_FindNextLine" fallthrough="true" fallthroughContext="#pop!ML_FormulaEnvFormula">
         <DetectSpaces attribute="Comment" />
         <DetectChar attribute="Tags" context="#pop!ML_FormulaEnvFormula" char="{" />
         <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
@@ -409,8 +409,8 @@
 
       <context name="ML_FormulaEnvFormula" attribute="Formulas" lineEndContext="ML_FindNextLine">
         <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
-        <WordDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
-        <WordDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
@@ -498,7 +498,7 @@
       </context>
       <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
       </context>
@@ -514,7 +514,7 @@
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
-      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
         <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="///" />
         <StringDetect attribute="Comment" context="#pop" String="//!" />
@@ -532,8 +532,8 @@
       </context>
 
       <context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">
-        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
-        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
@@ -549,7 +549,7 @@
         <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />
       </context>
 
-      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthroughContext="#pop!SL_FormulaEnvFormula">
+      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthrough="true" fallthroughContext="#pop!SL_FormulaEnvFormula">
         <DetectSpaces attribute="Comment" />
         <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />
       </context>
@@ -594,7 +594,7 @@
         <DetectChar attribute="Comment" context="#pop" char="@" />
       </context>
 
-      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthroughContext="#pop">
+      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <DetectIdentifier />
       </context>
 
diff --git a/xml/dtd.xml b/xml/dtd.xml
--- a/xml/dtd.xml
+++ b/xml/dtd.xml
@@ -3,7 +3,7 @@
   <!ENTITY nmtoken "[\-\w\d\.:_]+">
   <!ENTITY entref  "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
 ]>
-<language name="DTD" version="3" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
+<language name="DTD" version="4" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
   <highlighting>
 
     <list name="Category">
@@ -45,8 +45,7 @@
       <context name="Comment" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
@@ -78,7 +77,7 @@
       <context name="InlineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="-" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
diff --git a/xml/eiffel.xml b/xml/eiffel.xml
--- a/xml/eiffel.xml
+++ b/xml/eiffel.xml
@@ -10,7 +10,7 @@
 
 Author of version 1.02: Sebastian Vuorinen
 -->
-<language name="Eiffel" version="3" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
+<language name="Eiffel" version="4" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
 	<highlighting>
 		<list name="keywords">
 			<item>agent</item>
@@ -99,8 +99,7 @@
 
 			<context name = "Documentation" attribute="Comment" lineEndContext="#pop">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 		</contexts>
 
diff --git a/xml/elixir.xml b/xml/elixir.xml
--- a/xml/elixir.xml
+++ b/xml/elixir.xml
@@ -24,13 +24,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.53"
+          kateversion="5.62"
           license="LGPLv2+"
           mimetype="text/x-elixir"
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="6">
+          version="9">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
@@ -127,7 +127,7 @@
         <!-- regexp hack -->
         <RegExpr String="\s!" attribute="Operator" context="#stay"/>
         <RegExpr String="/=\s" attribute="Operator" context="#stay" insensitive="0"/>
-        <StringDetect String="%=" attribute="Operator" context="#stay" insensitive="0"/>
+        <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"/>
@@ -135,7 +135,7 @@
         <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"/>
-        <StringDetect String="?#" attribute="Normal Text" context="#stay"/>
+        <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"/>
@@ -157,15 +157,15 @@
         <StringDetect String="&quot;&quot;&quot;" attribute="String" context="#pop"/>
       </context>
       <context attribute="String" lineEndContext="#stay" name="Quoted String">
-        <StringDetect String="\\" attribute="String" context="#stay"/>
-        <RegExpr String="\\\&quot;" attribute="String" context="#stay"/>
+        <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>
+        <Detect2Chars char="\" char1="&quot;" attribute="String" context="#stay"/>
         <RegExpr String="#@{1,2}" attribute="Substitution" context="Short Subst"/>
         <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
         <DetectChar attribute="String" char="&quot;" context="#pop"/>
       </context>
       <context attribute="Raw String" lineEndContext="#stay" name="Apostrophed String">
-        <StringDetect String="\\" attribute="String" context="#stay"/>
-        <RegExpr String="\\\'" attribute="String" context="#stay"/>
+        <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>
+        <Detect2Chars char="\" char1="'" attribute="String" context="#stay"/>
         <DetectChar attribute="Raw String" char="'" context="#pop"/>
       </context>
       <!-- Substitutions can be nested -->
@@ -181,8 +181,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="General Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="MarkdownCode" lineEndContext="#stay" name="Markdown Code">
         <RegExpr String="^\s*\`\`\`\s*$" attribute="MarkdownCode" context="#pop"/>
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="4" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
+<language name="Elm" version="6" 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>
@@ -66,26 +66,24 @@
 
         <RegExpr    attribute="Char"    context="#stay" String="'(.|\\'|\\n|\\r|\\t|\\&quot;|\\\\|\\u\{(10|0?[0-9])[0-9a-fA-F]{4}\})'" />
         <DetectChar attribute="String"  context="string" char="&quot;" />
-        <RegExpr attribute="String"     context="multilineString" String="&quot;&quot;&quot;"/>
+        <StringDetect attribute="String"     context="multilineString" String="&quot;&quot;&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comments">
         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="string">
         <RegExpr attribute="String" context="#stay" String="\\." />
         <DetectChar attribute="String" context="#pop" char="&quot;" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="multilineString">
-        <RegExpr attribute="String" context="#stay" String="\s*" />
+        <DetectSpaces attribute="String" context="#stay" />
         <RegExpr attribute="String" context="#stay" String="\.*" />
         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" />
       </context>
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="4" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
+<language name="Erlang" version="5" 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 ===== -->
@@ -219,8 +219,7 @@
       <!-- finish off the comment (allows for alerts) -->
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
diff --git a/xml/fasm.xml b/xml/fasm.xml
--- a/xml/fasm.xml
+++ b/xml/fasm.xml
@@ -12,7 +12,7 @@
 
     <!ENTITY number "[0-9]*+(?:to[0-9]+|(?=d?))">
 ]>
-<language name="Intel x86 (FASM)" section="Assembler" version="4" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">
+<language name="Intel x86 (FASM)" section="Assembler" version="5" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">
   <highlighting>
     <list name="registers">
       <!-- General purpose registers -->
@@ -1714,8 +1714,7 @@
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces attribute="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
         <DetectIdentifier attribute="Comment"/>
       </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,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Fortran (Fixed Format)" version="7" 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">
+<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">
 <!-- by Franchin Matteo, fnch@libero.it -->
 <!-- NOTE: Keep in sync with the "Fortran (Free Format)" highlighter! (fortran-free.xml) -->
   <highlighting>
@@ -412,8 +412,7 @@
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="comment">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
 <!-- This context highlights symbols -->
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="3" 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="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">
 <!-- Original author: Franchin Matteo (fnch@libero.it).
      Adaptation to free & fixed format: Janus Weil.
 -->
@@ -148,8 +148,7 @@
         <DetectChar attribute="Comment" context="comment" char="!"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment">
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
 <!-- This context highlights items inside the parentesis of a function -->
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="6" 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="8" 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">
@@ -192,16 +192,14 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
         <!-- Support for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="String" lineEndContext="#stay" name="String Constant">
@@ -241,7 +239,7 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="ModuleEnv2">
         <RegExpr attribute="Module" context="#stay" String="&MIDENT;"/>
         <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <StringDetect attribute="Keyword" context="#pop" String="."/>
+        <DetectChar attribute="Keyword" context="#pop" char="."/>
       </context>
 
       <!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor.           -->
diff --git a/xml/glsl.xml b/xml/glsl.xml
--- a/xml/glsl.xml
+++ b/xml/glsl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="6" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="7" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
 	<highlighting>
 		<list name="keywords">
 			<item>break</item>
@@ -1176,14 +1176,12 @@
 			</context>
 			<context name="Commentar 1" attribute="Comment" lineEndContext="#pop">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 			<context name="Commentar 2" attribute="Comment" lineEndContext="#stay">
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 			<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">
 			</context>
diff --git a/xml/gnuassembler.xml b/xml/gnuassembler.xml
--- a/xml/gnuassembler.xml
+++ b/xml/gnuassembler.xml
@@ -43,7 +43,7 @@
 
 -->
 
-<language name="GNU Assembler" version="4" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
+<language name="GNU Assembler" version="5" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
   <highlighting>
     <list name="keywords">
       <item>.abort</item>
@@ -257,13 +257,11 @@
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 1">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 2" >
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="String" lineEndContext="#pop" name="String">
         <LineContinue  attribute="String" context="Some Context" />
diff --git a/xml/go.xml b/xml/go.xml
--- a/xml/go.xml
+++ b/xml/go.xml
@@ -26,7 +26,7 @@
 -->
 
 
-<language name="Go" version="5" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
+<language name="Go" version="6" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
     <highlighting>
     <list name="keywords">
 <!-- Keywords have been taken from The Go Programming Language Specification -> Keywords section -->
@@ -125,16 +125,14 @@
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
diff --git a/xml/graphql.xml b/xml/graphql.xml
--- a/xml/graphql.xml
+++ b/xml/graphql.xml
@@ -5,7 +5,7 @@
   Synatx: https://github.com/graphql/graphql-spec/blob/master/spec/Section%202%20- -%20Language.md
      and: https://github.com/graphql/graphql-spec/blob/master/spec/Appendix%20B%20- -%20Grammar%20Summary.md
 -->
-<language name="GraphQL" section="Other" version="2" kateversion="2.4" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
+<language name="GraphQL" section="Other" version="3" kateversion="2.4" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
   <highlighting>
     <list name="listKeywords">
       <item>enum</item>
@@ -63,8 +63,7 @@
 
       <context name="ctxComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
 
diff --git a/xml/groovy.xml b/xml/groovy.xml
--- a/xml/groovy.xml
+++ b/xml/groovy.xml
@@ -3,7 +3,7 @@
 <!--
     Based on the java syntax file 1.19 by Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)
 -->
-<language name="Groovy" version="8" kateversion="5.0" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
+<language name="Groovy" version="9" kateversion="5.0" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
@@ -3853,14 +3853,12 @@
 			</context>
 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
 				<DetectSpaces />
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 		</contexts>
 		<itemDatas>
diff --git a/xml/hamlet.xml b/xml/hamlet.xml
--- a/xml/hamlet.xml
+++ b/xml/hamlet.xml
@@ -5,19 +5,19 @@
   word character *or* a number, hence the lookahead -->
   <!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
 ]>
-<language name="Hamlet" version="4" kateversion="2.4" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">
+<language name="Hamlet" version="5" kateversion="2.4" 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" >
     <RegExpr attribute="Element" context="element" String="&lt;&name;\b" />
     <!-- A widget -->
-    <StringDetect attribute="Code" context="Code" String="^{"/>
+    <Detect2Chars attribute="Code" context="Code" char="^" char1="{"/>
     <!-- Something implementing ToHtml -->
-    <StringDetect attribute="Code" context="Code" String="#{"/>
+    <Detect2Chars attribute="Code" context="Code" char="#" char1="{"/>
     <!-- An URL -->
-    <StringDetect attribute="Code" context="Code" String="@{"/>
+    <Detect2Chars attribute="Code" context="Code" char="@" char1="{"/>
     <!-- A Message -->
-    <StringDetect attribute="Code" context="Code" String="_{"/>
+    <Detect2Chars attribute="Code" context="Code" char="_" char1="{"/>
     <DetectChar attribute="Logic" context="Logic" firstNonSpace="true" char="$"/>
   </context>
 
@@ -50,7 +50,7 @@
   </context>
 
   <context name="Assignment" attribute="Normal Text" lineEndContext="#pop">
-    <StringDetect attribute="Assignment" context="Codeline" String="&lt;-"/>
+    <Detect2Chars attribute="Assignment" context="Codeline" char="&lt;" char1="-"/>
     <IncludeRules context="##Haskell" />
   </context>
 
@@ -63,8 +63,8 @@
   <context attribute="Value" lineEndContext="#stay" name="Value">
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
-    <StringDetect attribute="Code" context="Value Code" String="@{"/>
-    <StringDetect attribute="Code" context="Value Code" String="#{"/>
+    <Detect2Chars attribute="Code" context="Value Code" char="@" char1="{"/>
+    <Detect2Chars attribute="Code" context="Value Code" char="#" char1="{"/>
     <RegExpr attribute="Value" context="#pop#pop" String="[^&quot;&apos;&gt;\s]+"/>
     <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,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Haskell" version="14" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
+<language name="Haskell" version="16" kateversion="5.0" 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>
@@ -492,7 +492,7 @@
       <AnyChar      attribute="EnumFromTo" context="#stay" String="‥" />
 
       <RegExpr attribute="Normal" context="Hamlet" String="\[[wxs]?hamlet\|" />
-      <RegExpr attribute="Normal" context="Julius" String="\[julius\|" />
+      <StringDetect attribute="Normal" context="Julius" String="[julius|" />
       <RegExpr attribute="Normal" context="QuasiQuote" String="\[[a-zA-Z_'](\w|[_'])*\|" />
     </context>
     <context attribute="Normal" lineEndContext="#stay" name="QuasiQuote">
@@ -512,15 +512,13 @@
     </context>
     <context attribute="Comment" lineEndContext="#pop" name="comment">
       <IncludeRules context="Haddock" />
-      <IncludeRules context="##Alerts" />
-      <IncludeRules context="##Modelines" />
+      <IncludeRules context="##Comments" />
     </context>
     <context attribute="Comment" lineEndContext="#stay" name="comments">
       <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />
       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
       <IncludeRules context="Haddock" />
-      <IncludeRules context="##Alerts" />
-      <IncludeRules context="##Modelines" />
+      <IncludeRules context="##Comments" />
     </context>
     <context attribute="Char" lineEndContext="#pop" name="char">
       <RegExpr attribute="Char" context="#stay" String="\\." />
@@ -575,14 +573,14 @@
     <context attribute="C2HS Directive" lineEndContext="#stay" name="c2hs directive">
       <Detect2Chars attribute="C2HS Directive" context="#pop" char="#" char1="}" />
       <keyword attribute="Keyword" context="#stay"          String="c2hs_keywords" />
-      <RegExpr attribute="Keyword" context="#stay"          String="context" />
-      <RegExpr attribute="Keyword" context="#stay"          String="call" />
-      <RegExpr attribute="Keyword" context="#stay"          String="sizeof" />
-      <RegExpr attribute="Keyword" context="#stay"          String="alignof" />
-      <RegExpr attribute="Keyword" context="c2hs fun"       String="fun" />
-      <RegExpr attribute="Keyword" context="c2hs pointer"   String="pointer" />
-      <RegExpr attribute="Keyword" context="c2hs enum"      String="enum" />
-      <RegExpr attribute="Keyword" context="c2hs import"    String="import" />
+      <StringDetect attribute="Keyword" context="#stay"          String="context" />
+      <StringDetect attribute="Keyword" context="#stay"          String="call" />
+      <StringDetect attribute="Keyword" context="#stay"          String="sizeof" />
+      <StringDetect attribute="Keyword" context="#stay"          String="alignof" />
+      <StringDetect attribute="Keyword" context="c2hs fun"       String="fun" />
+      <StringDetect attribute="Keyword" context="c2hs pointer"   String="pointer" />
+      <StringDetect attribute="Keyword" context="c2hs enum"      String="enum" />
+      <StringDetect attribute="Keyword" context="c2hs import"    String="import" />
     </context>
     <context attribute="C2HS Directive" lineEndContext="#stay" name="c2hs import">
       <RegExpr attribute="Type"    context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
@@ -590,7 +588,7 @@
     </context>
     <context attribute="C2HS Directive" lineEndContext="#stay" name="c2hs pointer">
       <keyword attribute="Keyword" context="#stay" String="c2hs_keywords" />
-      <RegExpr attribute="Keyword" context="#stay" String="newtype" />
+      <StringDetect attribute="Keyword" context="#stay" String="newtype" />
       <RegExpr attribute="Type"    context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
       <Detect2Chars attribute="C2HS Directive" context="#pop#pop" char="#" char1="}" />
     </context>
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="3" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">
+<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="4" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">
   <highlighting>
     <list name="keywords">
     
@@ -148,14 +148,12 @@
       <!-- Comments -->
       <context attribute="Comment" lineEndContext="#pop" name="CommentLine">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="CommentBlock">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
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="12" 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="13" 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>
@@ -92,8 +92,7 @@
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces/>
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
     <DetectIdentifier/>
     <RegExpr attribute="Error" context="#stay" String="-(?:-(?!-&gt;))+" />
   </context>
@@ -195,7 +194,7 @@
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
     <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
     <DetectSpaces />
-    <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Comments" />
   </context>
 
   <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
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="3" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
+<language name="Idris" version="5" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
   <highlighting>
   <list name="keywords">
     <item>abstract</item>
@@ -137,19 +137,17 @@
      </context>
      <context attribute="String" lineEndContext="#stay" name="string">
         <RegExpr attribute="String" context="#stay" String="\\." />
-        <RegExpr attribute="String" context="#pop" String="&quot;" />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="line comment">
          <DetectSpaces />
-         <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+         <IncludeRules context="##Comments" />
      </context>
      <context attribute="Comment" lineEndContext="#stay" name="block comment">
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
         <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
      </context>
   </contexts>
   <itemDatas>
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="6" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="7" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <list name="keywords">
@@ -48,8 +48,7 @@
 
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
-  <IncludeRules context="##Alerts" />
-  <IncludeRules context="##Modelines" />
+  <IncludeRules context="##Comments" />
   <DetectIdentifier />
  </context>
 </contexts>
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -24,7 +24,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="20"
+    version="21"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -595,8 +595,7 @@
       <context name="Comment 1" attribute="Comment" lineEndContext="#pop">
         <LineContinue attribute="Error" context="#stay" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
@@ -604,8 +603,7 @@
         <DetectSpaces />
         <LineContinue attribute="Comment" context="#stay" />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
@@ -736,8 +734,7 @@
 
       <context name="Outscoped Common" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <!-- prevent incorrect highlighting in case of not closed properly comment block -->
         <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
@@ -781,8 +778,7 @@
 
       <context name="Outscoped intern" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <!-- prevent incorrect highlighting in case of not closed properly comment block -->
         <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
diff --git a/xml/j.xml b/xml/j.xml
--- a/xml/j.xml
+++ b/xml/j.xml
@@ -62,7 +62,7 @@
 -->
 <language name="J"
           section="Scripts"
-          version="3"
+          version="4"
           kateversion="3.4"
           extensions="*.ijs;*.ijt;*.IJS;*.IJT"
           mimetype="text/x-j;text/x-jsrc"
@@ -92,8 +92,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment line">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/java.xml b/xml/java.xml
--- a/xml/java.xml
+++ b/xml/java.xml
@@ -4,7 +4,7 @@
 	<!ENTITY int "[0-9]([0-9_]*[0-9])?">
 	<!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
 ]>
-<language name="Java" version="7" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Java" version="8" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
@@ -3827,14 +3827,12 @@
 			</context>
 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
 				<DetectSpaces />
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 		</contexts>
 		<itemDatas>
diff --git a/xml/javadoc.xml b/xml/javadoc.xml
--- a/xml/javadoc.xml
+++ b/xml/javadoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Javadoc" version="3" kateversion="5.0" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Javadoc" version="5" kateversion="5.0" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<contexts>
 			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
@@ -29,7 +29,7 @@
 				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
 				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
 				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
-				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Comments"/>
 				<IncludeRules context="##HTML"/>
 			</context>
 			<context attribute="Javadoc" lineEndContext="#stay" name="Javadocar">
@@ -72,14 +72,14 @@
 				<StringDetect attribute="InlineTag" context="#stay" String="{@value}" />
 				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value " />
 				<StringDetect attribute="InlineTag" context="InlineTagar" String="{@value&#009;" />
-				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Comments"/>
 				<IncludeRules context="##HTML"/>
 			</context>
 			<context attribute="Javadoc" lineEndContext="#pop" name="JavadocParam">
 				<DetectSpaces />
 				<RegExpr attribute="JavadocParam" context="#pop#pop" String="\S*(?=\*/)" />
 				<RegExpr attribute="JavadocParam" context="#pop" String="\S*(\s|$)" />
-				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 			<context attribute="InlineTag" name="InlineTagar" lineEndContext="#stay">
 				<DetectChar attribute="InlineTag" context="#pop" char="}" />
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="16" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+<language name="JavaScript" version="17" kateversion="5.0" 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="">
 
@@ -1865,14 +1865,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Region Marker" lineEndContext="#pop" name="region_marker" />
 
diff --git a/xml/jsp.xml b/xml/jsp.xml
--- a/xml/jsp.xml
+++ b/xml/jsp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="6" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
+<language version="8" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
   <highlighting>
 
     <list name="jsp-reserved-words">
@@ -63,7 +63,7 @@
       </context>
       <context name="JS comment close" attribute="Jsp Comment" lineEndContext="#stay">
         <DetectSpaces/>
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier/>
         <StringDetect attribute="Normal Text" context="#pop#pop#pop" String="&lt;/script" endRegion="script" />
       </context>
@@ -88,8 +88,7 @@
       <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
         <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop" endRegion="JspComment"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
@@ -209,7 +208,7 @@
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
-        <RegExpr String="\s+" attribute="Types" context="#pop#pop"/>
+        <DetectSpaces attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
@@ -217,8 +216,7 @@
         <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop" endRegion="HtmlComment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
     </contexts>
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="8" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" section="Sources" version="9" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="block_begin">
@@ -654,15 +654,13 @@
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="block-comment" lineEndContext="#stay" attribute="Comment">
         <DetectSpaces />
         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
     </contexts>
diff --git a/xml/kotlin.xml b/xml/kotlin.xml
--- a/xml/kotlin.xml
+++ b/xml/kotlin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- kotlin language syntax http://kotlinlang.org -->
-<language name="Kotlin" version="6" kateversion="5.0" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
+<language name="Kotlin" version="8" kateversion="5.0" 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>
@@ -134,7 +134,7 @@
 
             <context attribute="Normal Text" lineEndContext="#pop" name="Imports">
                 <DetectChar attribute="Symbol" context="#pop" char=";" />
-                <StringDetect attribute="Keyword" context="TypeName" String="as" />
+                <Detect2Chars attribute="Keyword" context="TypeName" char="a" char1="s" />
 
                 <RegExpr attribute="Imports" context="#stay" String="\b[_\w][_\w\d]*(\.[_\w][_\w\d]*)*(\.\*)?"/>
             </context>
@@ -198,15 +198,15 @@
             <context name="TypeName" lineEndContext="#stay" attribute="Normal Text">
                 <DetectChar attribute="Symbol" context="#pop" char="*" />
                 <DetectChar attribute="Symbol" context="FunctionType" char="(" />
-                <StringDetect attribute="Symbol" context="#stay" String="-&gt;" />
+                <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
                 <RegExpr attribute="Data Type" context="#pop" String="[_\w][_\w\d]*[?]?" />
             </context>
 
             <context name="FunctionType" lineEndContext="#stay" attribute="Normal Text">
                 <DetectChar attribute="Symbol" context="#pop" char=")" />
                 <RegExpr attribute="Data Type" context="#stay" String="[_\w][_\w\d]*[?]?" />
-                <StringDetect attribute="Symbol" context="#stay" String="-&gt;" />
-                <StringDetect attribute="Symbol" context="#stay" String="," />
+                <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
+                <DetectChar attribute="Symbol" context="#stay" char="," />
             </context>
 
             <context name="Expression" lineEndContext="#stay" attribute="Normal Text">
@@ -261,14 +261,12 @@
 
             <context attribute="Comment" lineEndContext="#pop" name="CommentSingleLine">
                 <DetectSpaces />
-                <IncludeRules context="##Alerts"/>
-                <IncludeRules context="##Modelines"/>
+                <IncludeRules context="##Comments"/>
             </context>
             <context attribute="Comment" lineEndContext="#stay" name="CommentMultiline">
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
                 <DetectSpaces />
-                <IncludeRules context="##Alerts"/>
-                <IncludeRules context="##Modelines"/>
+                <IncludeRules context="##Comments"/>
             </context>
 
         </contexts>
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="15" 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="16" 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
@@ -800,8 +800,6 @@
         <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
         <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
         <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <!-- keywords in MathEnvParam and MathEnv. Do not use keyword to avoid autocomplete -->
-        <RegExpr String="(?:equation|IEEEeqnarray(?:box)?|(?:[BVvbp]|small)matrix|(?:fl)?align|x{0,2}alignat|cases|displaymath|gather|math|multline|(?:sub)?eqnarray)(?=[^a-zA-Z]|$)\*?" attribute="Error" context="#pop"/>
         <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
         <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
@@ -969,8 +967,7 @@
       <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier/>
         <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
       </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="3" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Lex/Flex" version="5" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -47,8 +47,7 @@
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
     <DetectSpaces />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
   </context>
 
   <context name="Definition RegExpr" attribute="RegExpr" lineEndContext="#pop">
@@ -60,7 +59,7 @@
     <RegExpr attribute="Content-Type Delimiter" context="Start Conditions Scope" String="\{$" beginRegion="SCscope" />  
     <IncludeRules context="RegExpr Base" />
     <RegExpr attribute="RegExpr" context="#stay" String="\S" />  
-    <RegExpr attribute="Normal Text" context="Action" String="\s+" />  
+    <DetectSpaces attribute="Normal Text" context="Action" />  
   </context>
   <context name="RegExpr (" attribute="RegExpr" lineEndContext="#stay">
     <IncludeRules context="RegExpr Base" />
@@ -92,7 +91,7 @@
   
   <context name="Start Conditions Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
     <RegExpr attribute="Content-Type Delimiter" context="#pop" String="\s*\}" endRegion="SCscope" />
-    <RegExpr attribute="Normal Text" context="Rule RegExpr" String="\s*" />
+    <DetectSpaces attribute="Normal Text" context="Rule RegExpr" />
   </context>
   
   <context name="Action" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="Action 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="7" kateversion="3.3"
+          version="8" kateversion="3.3"
           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"
           mimetype="text/x-lilypond"
           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">
@@ -104,7 +104,7 @@
     Changes:
     - better recognition of being inside lyrics, drums, notes, chords and markup sections
     - detect block comments %{  %}
-    - links to ##Alerts in comments (e.g. TODO, FIXME)
+    - links to ##Comments in comments (e.g. TODO, FIXME)
     - detect lilypond inside scheme #{ #}
     - detect \score inside \markup, etc.
     - helps with some often made errors like forgetting spaces around lyric extenders and hyphens
@@ -821,15 +821,13 @@
 
       <context name="commentline" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="commentblock" attribute="Comment" lineEndContext="#stay">
         <Detect2Chars char="%" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="string" attribute="Quoted Text" lineEndContext="#stay">
@@ -896,13 +894,13 @@
 
       <context name="schemecommentline" attribute="Scheme Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="schemecommentblock" attribute="Scheme Comment" lineEndContext="#stay">
         <Detect2Chars char="!" char1="#" attribute="Scheme Comment" context="#pop" endRegion="schemecomment"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="schemesub" attribute="Scheme Subst" lineEndContext="#pop"
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="3" kateversion="3.4"
+<language name="Literate Curry" version="5" kateversion="3.4"
           section="Sources" extensions="*.lcurry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
           indenter="haskell">
@@ -31,7 +31,7 @@
     <context attribute="Comment" lineEndContext="lineend" name="multiline" >
       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />
       <DetectSpaces />
-      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Comments" />
     </context>
 
     <context attribute="Text" lineEndContext="#stay" name="lineend">
diff --git a/xml/literate-haskell.xml b/xml/literate-haskell.xml
--- a/xml/literate-haskell.xml
+++ b/xml/literate-haskell.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Haskell" version="6" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
+<language name="Literate Haskell" version="8" kateversion="3.4" 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">
@@ -21,7 +21,7 @@
     <context attribute="Comment" lineEndContext="uncomments" name="comments'" >
       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />
       <DetectSpaces />
-      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Comments" />
     </context>
     <context attribute="Text" lineEndContext="#stay" name="uncomments">
       <DetectChar attribute="BirdTrack" context="recomments" char="&gt;" column="0"/>
diff --git a/xml/llvm.xml b/xml/llvm.xml
--- a/xml/llvm.xml
+++ b/xml/llvm.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="LLVM" section="Sources"
-          version="3" kateversion="5.0"
+          version="4" kateversion="5.0"
           extensions="*.ll"
           mimetype=""
           author="LLVM Team"
@@ -226,8 +226,7 @@
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <!-- TODO: Add FileCheck syntax highlighting -->
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
     </contexts>
diff --git a/xml/lua.xml b/xml/lua.xml
--- a/xml/lua.xml
+++ b/xml/lua.xml
@@ -48,7 +48,7 @@
     - NOTE, FIXME, TODO alerts added on comments
     - improved highlighting
 -->
-<language name="Lua" version="12" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+<language name="Lua" version="14" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
   <highlighting>
     <list name="keywords">
       <item>and</item>
@@ -500,7 +500,7 @@
         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />
       </context>
 
-      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <IncludeRules context="##DoxygenLua" />
         <RegExpr attribute="Comment" context="#pop!BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" />
         <Detect2Chars attribute="Comment" context="#pop!Comment" char="-" char1="-" />
@@ -509,14 +509,12 @@
       <context name="BlockComment" attribute="Comment" lineEndContext="#stay" dynamic="true">
         <RegExpr attribute="Comment" context="#stay" String="[^\]]*" />
         <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="Comment"       attribute="Comment"     lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">
@@ -525,19 +523,19 @@
         <IncludeRules context="Normal" />
       </context>
 
-      <context name="NumberSuffix" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">
+      <context name="NumberSuffix" attribute="Normal Text"  lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <!-- some syntax like a=32print(a) are valid, but ugly -->
         <DetectIdentifier attribute="Error" context="#pop" />
       </context>
 
-      <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">
+      <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
         <RegExpr          attribute="Constant" context="LocalVariable" String="\b[A-Z_][A-Z0-9_]*\b" />
         <DetectIdentifier attribute="Variable" context="LocalVariable" />
       </context>
 
-      <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+      <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
         <DetectChar   attribute="Symbols"   context="#pop" char="," />
diff --git a/xml/m4.xml b/xml/m4.xml
--- a/xml/m4.xml
+++ b/xml/m4.xml
@@ -38,7 +38,7 @@
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 -->
-<language name="GNU M4" version="4" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">
+<language name="GNU M4" version="5" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">
   <highlighting>
     <list name="optbuiltins">
       <item>__gnu__</item>
@@ -172,8 +172,7 @@
       </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -9,8 +9,10 @@
      improve comments handling -->
 <!-- v4 by Alex Richardson <arichardson.kde@gmail.com>
      added bmake support -->
+<!-- v10 by Peter J. Mello <admin@petermello.net>
+     Add recognition of POSIX 2013 '::=' operator for variable assignment -->
 <language name="Makefile" section="Other"
-          version="9" kateversion="3.4"
+          version="11" kateversion="3.4"
           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"
           mimetype="text/x-makefile" priority="11"
           author="Per Wigren (wigren@home.se)" license="">
@@ -177,7 +179,7 @@
 
         <keyword attribute="Keyword"  context="#stay" String="keywords"/>
         <keyword attribute="Keyword"  context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/>
-        <RegExpr attribute="Variable" context="assign" String="[^\s+:?+]*\s*(?=:=|=|\+=|\?=)"/>
+        <RegExpr attribute="Variable" context="assign" String="[^\s+:?+]*\s*(?=::=|:=|=|\+=|\?=)"/>
         <keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/>
         <RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/>
@@ -475,8 +477,7 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <LineContinue attribute="Comment" context="#stay" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
     </contexts>
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -90,7 +90,7 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="13" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="15" kateversion="5.62" 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 -->
@@ -293,8 +293,7 @@
       <!-- Comments -->
       <context name="comment" attribute="Comment" lineEndContext="#stay">
         <StringDetect attribute="Comment" context="#pop" String="&endcomment;" endRegion="comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <!-- Fenced Code Blocks -->
@@ -336,7 +335,7 @@
       <context name="code" attribute="Code" lineEndContext="#stay"> <!-- Unknown language -->
         <RegExpr attribute="Fenced Code" context="#pop" String="%1[~`]*(?=&end;)" firstNonSpace="true" dynamic="true" endRegion="code-block"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="bash-code">
+      <context attribute="Normal Text" lineEndContext="#stay" name="bash-code" fallthroughContext="Command##Bash">
         <IncludeRules context="code"/>
         <IncludeRules context="##Bash" includeAttrib="true"/>
       </context>
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="10" kateversion="5.0" section="Scientific"
+<language name="Mathematica" version="11" 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>
@@ -3265,8 +3265,7 @@
         <WordDetect attribute="Comment: File Title" String="Wolfram Notebook File" context="#stay" insensitive="true"/>
         <WordDetect attribute="Comment: File Title" String="http://www.wolfram.com/nb" context="#stay" insensitive="true"/>
 
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="CommentCreatedBy" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <RegExpr attribute="String" context="#pop" String="'(?:[^'\*]|\*+[^'\*\)])*\*?'"/>
diff --git a/xml/matlab.xml b/xml/matlab.xml
--- a/xml/matlab.xml
+++ b/xml/matlab.xml
@@ -57,7 +57,7 @@
 
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- low priority to let Objective-C win for .m files per default -->
-<language name="Matlab" version="6" kateversion="5.0" section="Scientific" extensions="*.m;*.M" priority="-9" mimetype="text/mfile" casesensitive="1">
+<language name="Matlab" version="8" kateversion="5.0" section="Scientific" extensions="*.m;*.M" priority="-9" mimetype="text/mfile" casesensitive="1">
   <highlighting>
 
     <!-- Reserved keywords in MATLAB -->
@@ -113,16 +113,16 @@
 
         <!-- Three and two-character operators -->
         <StringDetect context="#stay" attribute="Operator" String="..."/>
-        <StringDetect context="#stay" attribute="Operator" String="=="/>
-        <StringDetect context="#stay" attribute="Operator" String="~="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String="||"/>
-        <StringDetect context="#stay" attribute="Operator" String=".*"/>
-        <StringDetect context="#stay" attribute="Operator" String=".^"/>
-        <StringDetect context="#stay" attribute="Operator" String="./"/>
-        <StringDetect context="#stay" attribute="Operator" String=".'"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="~" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>
 
         <!-- Single-character operators -->
         <AnyChar context="#stay" attribute="Operator" String="*+-/\&amp;|&lt;&gt;~^=,;:@"/>
@@ -136,8 +136,7 @@
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="System" attribute="System" lineEndContext="#pop"/>
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="5" 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="6" 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">
@@ -1868,8 +1868,7 @@
             <context attribute="Comment" lineEndContext="#stay" name="Comment">
                 <DetectSpaces/>
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment"/>
-                <IncludeRules context="##Alerts"/>
-                <IncludeRules context="##Modelines"/>
+                <IncludeRules context="##Comments"/>
             </context>
         </contexts>
 
diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml
--- a/xml/mediawiki.xml
+++ b/xml/mediawiki.xml
@@ -6,7 +6,7 @@
   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">
   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]">
 ]>
-<language name="MediaWiki" section="Markup" version="8" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="10" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
@@ -144,8 +144,7 @@
       <context attribute="Comment" lineEndContext="#stay" name="comment" >
         <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Link" lineEndContext="#stay" name="DelimitedURL" >
         <DetectChar char="]" context="#pop" attribute="WikiTag" />
@@ -257,7 +256,7 @@
       </context>
       <context name="WikiLinkDescriptionBold" attribute="Bold" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
-        <StringDetect String="''" context="BoldItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="BoldItalic" attribute="WikiTag" />
         <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldUnderlined" />
       </context>
       <context name="WikiLinkDescriptionItalic" attribute="Italic" lineEndContext="#stay" >
@@ -268,7 +267,7 @@
       <context name="WikiLinkDescriptionUnderlined" attribute="Underlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
         <StringDetect String="'''" context="UnderlinedBold" attribute="WikiTag" />
-        <StringDetect String="''" context="UnderlinedItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="UnderlinedItalic" attribute="WikiTag" />
       </context>
       <context name="WikiLinkDescriptionBoldItalic" attribute="BoldItalic" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
@@ -276,7 +275,7 @@
       </context>
       <context name="WikiLinkDescriptionBoldUnderlined" attribute="BoldUnderlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
-        <StringDetect String="''" context="BoldUnderlinedItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
       </context>
       <context name="WikiLinkDescriptionItalicUnderlined" attribute="ItalicUnderlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
@@ -287,7 +286,7 @@
       </context>
 
       <context attribute="TemplateName" lineEndContext="#stay" name="Template" >
-        <StringDetect String="|" context="TemplateParameterSlot" attribute="WikiTag" />
+        <DetectChar char="|" context="TemplateParameterSlot" attribute="WikiTag" />
         <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" endRegion="template" />
       </context>
       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlot" >
@@ -306,13 +305,13 @@
         <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <StringDetect String="|" context="#pop" attribute="WikiTag" lookAhead="true" />
+        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
         <RegExpr String="[^{}|=]+(?=[=])" attribute="Parameter" context="TemplateParameterSlotEqual" />
       </context>
       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlotEqual" >
         <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <StringDetect String="|" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <StringDetect String="=" context="TemplateParameterSlotValue" attribute="WikiTag" />
+        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
+        <DetectChar char="=" context="TemplateParameterSlotValue" attribute="WikiTag" />
       </context>
       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlotValue" >
         <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
@@ -330,7 +329,7 @@
         <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
         <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
         <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <StringDetect String="|" context="#pop" attribute="WikiTag" lookAhead="true" />
+        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
       </context>
       <context attribute="Parameter" lineEndContext="#stay" name="TemplateParameter" >
         <StringDetect String="}}}" context="#pop" attribute="WikiTag" />
@@ -433,27 +432,27 @@
       <context attribute="Bold" lineEndContext="#pop" name="Bold" >
         <IncludeRules context="FindTemplate" />
         <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <StringDetect String="''" context="BoldItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="BoldItalic" attribute="WikiTag" />
         <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldUnderlined" />
         <IncludeRules context="FindWikiLinkBeingBold" />
       </context>
       <context attribute="Italic" lineEndContext="#pop" name="Italic" >
         <IncludeRules context="FindTemplate" />
         <StringDetect String="'''" attribute="WikiTag" context="ItalicBold" />
-        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
         <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="ItalicUnderlined" />
         <IncludeRules context="FindWikiLinkBeingItalic" />
       </context>
       <context attribute="Underlined" name="Underlined" lineEndContext="#stay" >
         <IncludeRules context="FindTemplate" />
         <StringDetect String="'''" context="UnderlinedBold" attribute="WikiTag" />
-        <StringDetect String="''" context="UnderlinedItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="UnderlinedItalic" attribute="WikiTag" />
         <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
         <IncludeRules context="FindWikiLinkBeingUnderlined" />
       </context>
       <context name="BoldItalic" attribute="BoldItalic" lineEndContext="#pop" >
         <IncludeRules context="FindTemplate" />
-        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
         <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
         <IncludeRules context="FindWikiLinkBeingBoldItalic" />
       </context>
@@ -466,13 +465,13 @@
       <context name="BoldUnderlined" attribute="BoldUnderlined" lineEndContext="#pop" >
         <IncludeRules context="FindTemplate" />
         <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
-        <StringDetect String="''" context="BoldUnderlinedItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
         <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
       </context>
       <context name="UnderlinedBold" attribute="BoldUnderlined" lineEndContext="#pop" >
         <IncludeRules context="FindTemplate" />
         <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <StringDetect String="''" context="BoldUnderlinedItalic" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
         <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
       </context>
       <context name="ItalicUnderlined" attribute="ItalicUnderlined" lineEndContext="#pop" >
@@ -483,7 +482,7 @@
       </context>
       <context name="UnderlinedItalic" attribute="ItalicUnderlined" lineEndContext="#pop" >
         <IncludeRules context="FindTemplate" />
-        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
         <StringDetect String="'''" context="ItalicUnderlinedBold" attribute="WikiTag" />
         <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />
       </context>
@@ -494,7 +493,7 @@
       </context>
       <context name="BoldUnderlinedItalic" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
         <IncludeRules context="FindTemplate" />
-        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
         <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
       </context>
       <context name="ItalicUnderlinedBold" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
@@ -534,12 +533,12 @@
 
       <context name="FindTextDecorations" attribute="Normal" lineEndContext="#stay">
         <StringDetect String="'''" attribute="WikiTag" context="Bold" />
-        <StringDetect String="''" attribute="WikiTag" context="Italic" />
+        <Detect2Chars char="'" char1="'" attribute="WikiTag" context="Italic" />
         <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="Underlined" />
       </context>
       <context attribute="Normal" lineEndContext="#stay" name="FindTextDecorationsInHeader" >
         <StringDetect String="'''" attribute="WikiTag" context="Bold" />
-        <StringDetect String="''" attribute="WikiTag" context="BoldItalic" />
+        <Detect2Chars char="'" char1="'" attribute="WikiTag" context="BoldItalic" />
       </context>
 
       <context attribute="Normal" lineEndContext="#stay" name="FindUrl" >
diff --git a/xml/metafont.xml b/xml/metafont.xml
--- a/xml/metafont.xml
+++ b/xml/metafont.xml
@@ -6,7 +6,7 @@
 -->
 
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Metapost/Metafont" section="Markup" version="7" kateversion="5.0"
+<language name="Metapost/Metafont" section="Markup" version="9" kateversion="5.0"
 extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost" 
 author="Yedvilun (yedvilun@gmail.com)" license="LGPL">
   <highlighting>
@@ -903,7 +903,7 @@
         <DetectChar char="\" attribute="Keyword" context="ContrSeq"/>
         <DetectChar char="$" attribute="Math" context="MathMode" beginRegion="mathMode" />
 
-        <StringDetect String="\(" attribute="Math" context="MathMode" beginRegion="mathMode" />
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathMode" beginRegion="mathMode" />
         <RegExpr String="\betex\b" insensitive="1" attribute="Identifier" context="#pop" endRegion="TeXblock"/>
       </context>
       <context name="ContrSeq" attribute="Keyword" lineEndContext="#pop">
@@ -925,7 +925,7 @@
 
       <!-- math mode: starting with $ or \( -->
       <context name="MathMode" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />
         <DetectChar char="\" attribute="Keyword Mathmode" context="MathContrSeq"/>
         <DetectChar char="$" attribute="Math" context="#pop" endRegion="mathMode" />
         <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" endRegion="mathMode" />
@@ -941,9 +941,8 @@
       <!-- comment -->
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <IncludeRules context="##Modelines" />
       </context>
 
 </contexts>
diff --git a/xml/mips.xml b/xml/mips.xml
--- a/xml/mips.xml
+++ b/xml/mips.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="MIPS Assembler" version="5" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">
+<language name="MIPS Assembler" version="6" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">
   <highlighting>
     <list name="type">
       <item>.align</item>
@@ -331,8 +331,7 @@
       </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
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="6"
+<language name="Modula-2" mimetype="text/x-modula2" version="7"
   kateversion="2.2" section="Sources" priority="5" extensions="*.mod;*.def"
   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT">
 <!--
@@ -1112,8 +1112,7 @@
       <!-- Line Comment Body -->
       <context name="LineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <!-- Block Comment Body -->
@@ -1126,8 +1125,7 @@
           char="*" char1=")" endRegion="FoldableComment"/>
 
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
 
diff --git a/xml/modula-3.xml b/xml/modula-3.xml
--- a/xml/modula-3.xml
+++ b/xml/modula-3.xml
@@ -6,7 +6,7 @@
 <!-- 04.03.2005 ik mailed version 1.01 with fixed/implemented nested comments to Dominik -->
 <!-- known bug: notation Regexp( [0-9]*\. ) should be not interpreted as neither Integer neither Real -->
 <!-- known bug: notation Regexp ( "  \" " ) is not properly interpreted -->
-<language name="Modula-3" version="3" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
+<language name="Modula-3" version="4" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
   <highlighting>
     <list name="keywords">
 <!--      <item>AND</item> -->
@@ -286,8 +286,7 @@
         <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Pragma" lineEndContext="#stay" name="Prep1">
         <Detect2Chars attribute="Pragma" context="#pop" char="*" char1="&gt;"/>
diff --git a/xml/monobasic.xml b/xml/monobasic.xml
--- a/xml/monobasic.xml
+++ b/xml/monobasic.xml
@@ -10,7 +10,7 @@
     License: GNU General Public License
 -->
 
-<language name="MonoBasic" section="Sources" version="4" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">
+<language name="MonoBasic" section="Sources" version="5" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">
   <highlighting>
      <list name="keywords">
         <item>Option</item>
@@ -194,8 +194,7 @@
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
          <DetectSpaces />
-         <IncludeRules context="##Alerts"/>
-         <IncludeRules context="##Modelines"/>
+         <IncludeRules context="##Comments"/>
       </context>
     </contexts>
 
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="5" kateversion="5.44"
+<language name="Mustache/Handlebars (HTML)" version="6" kateversion="5.44"
           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)"
@@ -165,14 +165,12 @@
 		<context name="HandlebarsInlineComment" attribute="Comment" lineEndContext="#stay">
 			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="HandlebarsInlineComment" />
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 		<context name="MustacheInlineComment" attribute="Comment" lineEndContext="#stay">
 			<Detect2Chars context="#pop" attribute="Comment" char="}" char1="}" endRegion="MustacheInlineComment" />
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 
 		<!-- Tags -->
@@ -280,8 +278,7 @@
 			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
 			<IncludeRules context="MustacheVariables" />
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 
 		<context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
@@ -388,7 +385,7 @@
 		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop">
 			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Comments" />
 		</context>
 
 		<!-- Overwrite some rules of 'javascript.xml' to add Mustache variables -->
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="6" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
+<language name="Intel x86 (NASM)" section="Assembler" version="7" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
   <highlighting>
     <list name="registers">
       <!-- General purpose registers -->
@@ -2726,8 +2726,7 @@
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces attribute="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
         <DetectIdentifier attribute="Comment"/>
       </context>
 
diff --git a/xml/nim.xml b/xml/nim.xml
--- a/xml/nim.xml
+++ b/xml/nim.xml
@@ -20,7 +20,7 @@
 
 <language
 	name="Nim"
-	version="2"
+	version="3"
 	kateversion="5.0"
 	section="Sources"
 	extensions="*.nim"
@@ -247,8 +247,7 @@
 
 			<context name="Comment1" attribute="Comment" lineEndContext="#pop">
 				<LineContinue attribute="Comment" context="#stay"/>
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 
 			<context name="DocComment1" attribute="DocComment" lineEndContext="#pop">
@@ -265,8 +264,7 @@
 				<LineContinue attribute="Comment" context="#stay"/>
 				<Detect2Chars attribute="Comment" context="Comment2" char="#" char1="[" beginRegion="Comment"/>
 				<Detect2Chars attribute="Comment" context="#pop" char="]" char1="#" endRegion="Comment"/>
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 
 			<context name="Start-Typetar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Typetar">
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="3" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
+<language name="noweb" version="4" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
 <!-- 
 #########################################################################
 # First version added to repository was 0.4, added as 1.0 .
@@ -37,7 +37,7 @@
         <IncludeRules context="##C++" includeAttrib="true" />
       </context>
       <context name="SectionNames" attribute="Prose" lineEndContext="#stay">
-        <RegExpr String="@&lt;&lt;" context="#stay" />
+        <StringDetect String="@&lt;&lt;" context="#stay" />
         <RegExpr String="&lt;&lt;.*[^@]&gt;&gt;(?!=)" minimal="true" attribute="SectionName" />
       </context>
     </contexts>
diff --git a/xml/objectivec.xml b/xml/objectivec.xml
--- a/xml/objectivec.xml
+++ b/xml/objectivec.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C" version="5" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
+<language name="Objective-C" version="6" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -97,14 +97,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Preprocessor" lineEndContext="Default" name="Preprocessor">
         <LineContinue attribute="Preprocessor" context="#stay"/>
diff --git a/xml/objectivecpp.xml b/xml/objectivecpp.xml
--- a/xml/objectivecpp.xml
+++ b/xml/objectivecpp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C++" version="7" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
+<language name="Objective-C++" version="8" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -222,14 +222,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
@@ -253,7 +251,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
@@ -263,7 +261,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
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="7"
+          version="8"
           priority="10"
           kateversion="2.4"
           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
@@ -433,8 +433,7 @@
         <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />
 
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
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="8" 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="10" 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>
 
@@ -2773,22 +2773,22 @@
 
         <!-- Three- and two-character operators -->
         <StringDetect context="#stay" attribute="Operator" String="..."/>
-        <StringDetect context="#stay" attribute="Operator" String="=="/>
-        <StringDetect context="#stay" attribute="Operator" String="~="/>
-        <StringDetect context="#stay" attribute="Operator" String="!="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&amp;&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String="||"/>
-        <StringDetect context="#stay" attribute="Operator" String="++"/>
-        <StringDetect context="#stay" attribute="Operator" String="--"/>
-        <StringDetect context="#stay" attribute="Operator" String="**"/>
-        <StringDetect context="#stay" attribute="Operator" String=".*"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="~" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&gt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="+"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="-" char1="-"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="*" char1="*"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>
         <StringDetect context="#stay" attribute="Operator" String=".**"/>
-        <StringDetect context="#stay" attribute="Operator" String=".^"/>
-        <StringDetect context="#stay" attribute="Operator" String="./"/>
-        <StringDetect context="#stay" attribute="Operator" String=".'"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>
 
         <!-- Single-character operators -->
         <AnyChar context="#stay" attribute="Operator" String="!&quot;%(*+,/;=>[]|~#&amp;)-:&lt;&gt;\^"/>
@@ -2804,8 +2804,7 @@
 
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
 
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="6" kateversion="5.0"
+          version="7" kateversion="5.0"
           indenter="cstyle"
           extensions="*.cl"
           mimetype="text/x-clsrc"
@@ -182,15 +182,13 @@
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
@@ -215,7 +213,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
@@ -226,7 +224,7 @@
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
diff --git a/xml/pascal.xml b/xml/pascal.xml
--- a/xml/pascal.xml
+++ b/xml/pascal.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="Pascal"
           section="Sources" 
-          version="3"
+          version="4"
           kateversion="3.3"
           extensions="*.p;*.pas;*.pp"
           mimetype="text/x-pascal" 
@@ -181,19 +181,16 @@
       <context attribute="Comment" lineEndContext="#stay" name="Comment1">
         <DetectSpaces />
         <DetectChar attribute="Comment" context="#pop" char="}"              endRegion="Region2"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Comment2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")"   endRegion="Region3"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment3">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
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="13" 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="15" 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>
@@ -465,7 +465,7 @@
         <IncludeRules context="ipstring_internal" />
       </context>
       <context name="ip_string_6" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />
+        <StringDetect attribute="String (interpolated)" context="#stay" String="\%1" dynamic="true" />
         <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true"  endRegion="String"/>
         <IncludeRules context="ipstring_internal" />
       </context>
@@ -508,7 +508,7 @@
       <context name="string_6" attribute="String" lineEndContext="#stay" dynamic="true">
         <DetectIdentifier />
         <Detect2Chars attribute="String Special Character" context="#stay" char="\" char1="\" />
-        <RegExpr attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>
+        <StringDetect attribute="String Special Character" context="#stay" String="\%1" dynamic="true"/>
         <DetectChar attribute="Operator" context="#pop#pop" char="1" dynamic="true" endRegion="String" />
       </context>
 
@@ -767,7 +767,7 @@
       <context name="quote_word" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
         <DetectSpaces />
         <DetectIdentifier />
-        <RegExpr attribute="Normal Text" context="#stay" String="\\%1" dynamic="true" />
+        <StringDetect attribute="Normal Text" context="#stay" String="\%1" dynamic="true" />
         <DetectChar attribute="Operator" context="#pop#pop#pop" char="1" dynamic="true" endRegion="Wordlist" />
       </context>
       <context name="quote_word_paren" attribute="Normal Text" lineEndContext="#stay">
@@ -803,7 +803,7 @@
         <DetectSpaces />
       </context>
       <context name="here_document_dumb" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
+        <StringDetect attribute="Keyword" context="#pop#pop" String="%1" column="0" dynamic="true" endRegion="HereDocument"/>
         <DetectSpaces />
         <DetectIdentifier />
       </context>
@@ -847,8 +847,7 @@
 
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
 
diff --git a/xml/php.xml b/xml/php.xml
--- a/xml/php.xml
+++ b/xml/php.xml
@@ -73,7 +73,7 @@
   <!ENTITY types "int|integer|bool|boolean|float|double|real|string|array|object">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="12" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="17" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <list name="control structures">
@@ -5656,6 +5656,7 @@
       <item>com_load_typelib</item>
       <item>com_message_pump</item>
       <item>com_print_typeinfo</item>
+      <item>compact</item>
       <item>connection_aborted</item>
       <item>connection_status</item>
       <item>constant</item>
@@ -10833,11 +10834,11 @@
       <!-- JGM:  Added fallthrough so it will handle snippets that don't begin with <?php -->
       <context name="start" lineEndContext="#stay" attribute="Normal Text" fallthrough="true" fallthroughContext="phpsource">
         <RegExpr context="phpsource" attribute="Keyword" String="&lt;\?(?:=|php)?" insensitive="true" />
-        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" />
+        <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" />
       </context>
       <context name="phpsource" attribute="PHP Text" lineEndContext="#stay">
         <DetectSpaces />
-        <StringDetect attribute="Keyword" context="#pop" String="?&gt;" lookAhead="true" />
+        <Detect2Chars attribute="Keyword" context="#pop" char="?" char1="&gt;" lookAhead="true" />
 
         <!-- Alternate PHP Block Syntax
           -  http://www.php.net/manual/en/control-structures.alternative-syntax.php
@@ -10859,7 +10860,7 @@
         <RegExpr attribute="Keyword" context="case"  String="(case|default)(\s|:|$)" />
         <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
         <DetectChar attribute="Normal Text" context="#stay" char=":" beginRegion="Alternate Block" />
-        <RegExpr attribute="Control Structures" context="#stay" String="endif|endwhile|endfor|endforeach|endswitch" endRegion="Alternate Block" />
+        <RegExpr attribute="Control Structures" context="#stay" String="(endif|endwhile|endfor|endforeach|endswitch)\b" endRegion="Alternate Block" />
         <!--/ Alternate PHP Block Syntax -->
 
         <DetectChar attribute="Comment" context="onelinecomment" char="#" />
@@ -10929,13 +10930,13 @@
 
       <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <StringDetect attribute="Keyword" context="#pop" lookAhead="true" String="?&gt;" />
-        <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Keyword" context="#pop" lookAhead="true" char="?" char1="&gt;" />
+        <IncludeRules context="##Comments" />
       </context>
       <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
       <context name="doublebackquotestringcommon" attribute="String" lineEndContext="#stay">
         <!-- Common rules for double quoted strings and backticks (execution operator) URL:
diff --git a/xml/pike.xml b/xml/pike.xml
--- a/xml/pike.xml
+++ b/xml/pike.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- FIXME: Find a way to prevent ranges (e.g. [1..] or [0..99]) from matching as floats. -pp -->
-<language name="Pike" version="3" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">
+<language name="Pike" version="4" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -67,14 +67,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Line Comment">
 	<DetectSpaces />
-	<IncludeRules context="##Alerts"/>
-	<IncludeRules context="##Modelines"/>
+	<IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Block Comment">
 	<DetectSpaces />
 	<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-	<IncludeRules context="##Alerts"/>
-	<IncludeRules context="##Modelines"/>
+	<IncludeRules context="##Comments"/>
       </context>
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
 	<RangeDetect attribute="Preprocessor Lib" context="#stay" char="&quot;" char1="&quot;"/>
@@ -87,7 +85,7 @@
 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>
 	<RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true"/>
 	<RegExpr attribute="Preprocessor" context="#pop" String="#\s*(endif|elif|else)" endRegion="Outscoped" firstNonSpace="true"/>
-	<IncludeRules context="##Alerts" />
+	<IncludeRules context="##Comments" />
       </context>         
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>
diff --git a/xml/postscript.xml b/xml/postscript.xml
--- a/xml/postscript.xml
+++ b/xml/postscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="PostScript" version="3" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
+<language name="PostScript" version="4" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
 <highlighting>
 	<list name="keywords">
 		<item>abs</item>
@@ -410,8 +410,7 @@
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Comment">
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 		<context attribute="Header" lineEndContext="#pop" name="Header"/>
 		<context attribute="String" lineEndContext="#stay" name="String">
diff --git a/xml/povray.xml b/xml/povray.xml
--- a/xml/povray.xml
+++ b/xml/povray.xml
@@ -5,7 +5,7 @@
 <!-- features full POV-Ray 3.6 syntax with special highlighting -->
 <!-- of variable and macro declarations                         -->
 <!-- v1.1: added MegaPOV 1.2.1 keywords (Febuary 2006)          -->
-<language name="POV-Ray" version="7" kateversion="5.0" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2">
+<language name="POV-Ray" version="8" kateversion="5.0" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2">
 	<highlighting>
 		<list name="keywords">
 			<item>aa_threshold</item>
@@ -924,15 +924,13 @@
 
 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
 				<DetectSpaces />
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 		</contexts>
 
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,9 +1,9 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
   name="PowerShell"
-  version="7"
+  version="9"
   kateversion="5.0"
-  extensions="*.ps1;*.ps1m;*.ps1d"
+  extensions="*.ps1;*.psm1;*.psd1"
   section="Scripts"
   author="Motoki Kashihara (motoki8791@gmail.com); Michael Lombardi (Michael.T.Lombardi@outlook.com)"
   casesensitive="0"
@@ -908,14 +908,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="#" char1="&gt;" endRegion="CommentRegion"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Cmdlets" lineEndContext="#stay" name="Cmdlet">
         <keyword attribute="Function" context="#stay" String="cmdlets"/>
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="11" kateversion="3.4"
+	  version="13" kateversion="5.62"
 	  mimetype="text/x-prolog"
 	  extensions="*.prolog;*.dcg;*.pro"
 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
@@ -502,11 +502,10 @@
 	    clause      := layout term_seq fullstop | term_seq fullstop
 	-->
 	    <!-- shebang: ("#!") Detect shebang and fallthrough to clause_seq -->
-	    <context name="shebang" lineEndContext="clause" lineEmptyContext="clause" attribute="Syntax Error" >
+	    <context name="shebang" lineEndContext="clause" lineEmptyContext="clause" attribute="Syntax Error" fallthroughContext="clause">
 		<!-- no way: fallthrough="1" fallthroughContext="clause_seq" > -->
 		<Detect2Chars column="0" char="#" char1="!" context="1-comment" attribute="% italic predicates: w/ side effects" />
 		<!-- else fallthrough (workaround broken fallthrough) -->
-		<RegExpr String="&any;" lookAhead="true" context="clause" attribute="Syntax Error" />
 	    </context>
 
 	    <!-- syntax error (Test & Debug Aid, too): it's enough to highlight next token -->
@@ -777,8 +776,7 @@
 		<Detect2Chars char="*" char1="/" context="#pop" endRegion="comment"
 			    attribute="% italic predicates: w/ side effects" />
 		<DetectSpaces />
-		<IncludeRules context="##Alerts" />
-		<IncludeRules context="##Modelines" />
+		<IncludeRules context="##Comments" />
 		<DetectIdentifier />
 	    </context>
 
@@ -786,8 +784,7 @@
 	    <!-- Folding for consecutive 1-line comments: let indentation-based auto-folding work -->
 	    <context name="1-comment" lineEndContext="#pop" attribute="% italic predicates: w/ side effects" >
 		<DetectSpaces />
-		<IncludeRules context="##Alerts" />
-		<IncludeRules context="##Modelines" />
+		<IncludeRules context="##Comments" />
 		<DetectIdentifier />
 	    </context>
 	    <context name="region_marker" lineEndContext="#pop" attribute="%BEGIN folding region" noIndentationBasedFolding="true" >
diff --git a/xml/protobuf.xml b/xml/protobuf.xml
--- a/xml/protobuf.xml
+++ b/xml/protobuf.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Protobuf" version="8" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
+<language name="Protobuf" version="9" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
   <highlighting>
     <list name="keywords">
       <item>message</item>
@@ -83,15 +83,13 @@
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
     </contexts>
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="3" kateversion="2.4" section="Sources" extensions="*.pure">
+<language name="Pure" version="4" kateversion="2.4" section="Sources" extensions="*.pure">
   <highlighting>
     <list name="blockstarters">
       <item>case</item>
@@ -121,13 +121,11 @@
       <context attribute="Comment" lineEndContext="#stay" name="Comment1">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment2">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/purebasic.xml b/xml/purebasic.xml
--- a/xml/purebasic.xml
+++ b/xml/purebasic.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">
-<language name="PureBasic" version="8" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >
+<language name="PureBasic" version="9" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >
   <highlighting>
     <list name="keywords">
       <item>Break</item>
@@ -1739,8 +1739,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment1">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -19,7 +19,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="12" 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="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="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -448,32 +448,31 @@
 
 			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<IncludeRules context="stringescape"/>
 				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<IncludeRules context="stringescape"/>
 				<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="Single A-comment" attribute="Comment" lineEndContext="#stay">
 				<IncludeRules context="stringescape"/>
 				<DetectChar attribute="Comment" char="'" context="#pop"/>
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="Single Q-comment" attribute="Comment" lineEndContext="#stay">
 				<IncludeRules context="stringescape"/>
 				<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<!-- Strings -->
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="9" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="10" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -92,13 +92,11 @@
 		</context>
 		<context attribute="Headline" lineEndContext="#pop" name="Headline">
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Comment">
 			<DetectSpaces />
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 
 		<!-- This context is not really used, but contains the common rules -->
diff --git a/xml/relaxng.xml b/xml/relaxng.xml
--- a/xml/relaxng.xml
+++ b/xml/relaxng.xml
@@ -16,7 +16,7 @@
    - Namespace rules
 -->
 
-<language version="4"
+<language version="6"
           kateversion="2.4"
           name="RELAX NG"
           section="Markup"
@@ -68,7 +68,7 @@
 
       <context name="tagname" attribute="Tag" lineEndContext="#stay">
          <keyword attribute="RELAX NG Tag" context="attributes" String="relaxngnames" />
-         <RegExpr attribute="Attribute" context="attributes" String="\s*" />
+         <DetectSpaces attribute="Attribute" context="attributes" />
          <DetectChar attribute="Tag" context="#pop" char="&gt;" />
       </context>
 
@@ -93,8 +93,7 @@
         <DetectSpaces/>
         <StringDetect attribute="Comment" context="#pop"  String="--&gt;" endRegion="comment"/>
         <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
         <DetectIdentifier/>
       </context>
     </contexts>
diff --git a/xml/relaxngcompact.xml b/xml/relaxngcompact.xml
--- a/xml/relaxngcompact.xml
+++ b/xml/relaxngcompact.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="RelaxNG-Compact" version="2" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">
+<language name="RelaxNG-Compact" version="3" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">
   <highlighting>
     <list name="Keywords">
       <item>default</item>
@@ -82,8 +82,7 @@
       </context>
       <context attribute="Comments" lineEndContext="#pop" name="Comments" >
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="String" >
         <DetectChar attribute="String" context="#pop" char="&quot;" />
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -14,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="7" kateversion="5.0" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="8" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -69,8 +69,7 @@
       <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true">
         <RegExpr attribute="Code" String="^%1   " context="#stay" column="0" dynamic="true"/>
         <RegExpr attribute="Normal" String="^(.|$)" lookAhead="true" column="0" context="#pop"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="CodeBlock" attribute="Code" lineEndContext="#stay">
diff --git a/xml/rhtml.xml b/xml/rhtml.xml
--- a/xml/rhtml.xml
+++ b/xml/rhtml.xml
@@ -44,7 +44,7 @@
 -->
 	
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language name="Ruby/Rails/RHTML" version="11" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
+<language name="Ruby/Rails/RHTML" version="13" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
 	
 	<highlighting>
 	
@@ -372,8 +372,7 @@
 			<context name="Comment" attribute="Comment" lineEndContext="#stay">
 				<DetectSpaces/>
 				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 				<DetectIdentifier/>
 				<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
 			</context>
@@ -487,7 +486,7 @@
 			
 			<context name="JS comment close" attribute="Comment" lineEndContext="#pop">
 				<RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 			
 			<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
@@ -738,14 +737,12 @@
 				<StringDetect context="#pop" String="-%&gt;" lookAhead="true" />
 				<Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />
 				<RegExpr attribute="Ruby Comment" String="\w\:\:\s" context="RDoc Label"/>
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 			
 			<context name="General Comment" attribute="Ruby Comment" lineEndContext="#pop">
 				<DetectSpaces/>
-				<IncludeRules context="##Alerts"/>
-				<IncludeRules context="##Modelines"/>
+				<IncludeRules context="##Comments"/>
 			</context>
 			
 			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
@@ -968,7 +965,7 @@
 			
 			<!-- rules to be included in all token_array contexts -->
 			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
-				<StringDetect attribute="String" String="\\" context="#stay"/>
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
 			</context>
 			
 			<!-- apostrophed string specific contexts -->
diff --git a/xml/roff.xml b/xml/roff.xml
--- a/xml/roff.xml
+++ b/xml/roff.xml
@@ -7,7 +7,7 @@
   <!ENTITY argsep1 "([^\\]|\\[&#37; |\^{}'`\-!?@)/,&amp;:~0E_acdeprtu])">
   <!ENTITY argsep2 "([^\\0-9]|\\[&#37;:{}'`\-_!@/cep])">
 ]>
-<language name="Roff" section="Markup" version="4" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
+<language name="Roff" section="Markup" version="6" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
 
   <highlighting>
 
@@ -80,8 +80,7 @@
       <!-- comment -->
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <!-- error -->
@@ -111,18 +110,18 @@
 
       <!-- escape argument -->
       <context name="Argument" attribute="String" lineEndContext="Error" dynamic="true">
-        <RegExpr attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/>
+        <StringDetect attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/>
         <IncludeRules context="DetectOthers"/>
       </context>
 
       <!-- glyph escape argument -->
       <context name="GlyphArgument" attribute="Glyph" lineEndContext="Error" dynamic="true">
-        <RegExpr attribute="Glyph" context="#pop#pop" String="%1" dynamic="true"/>
+        <StringDetect attribute="Glyph" context="#pop#pop" String="%1" dynamic="true"/>
       </context>
 
       <!-- measurement (or expression) escape argument -->
       <context name="Measurement" attribute="Error" lineEndContext="Error" dynamic="true">
-        <RegExpr attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/>
+        <StringDetect attribute="Escape" context="#pop#pop" String="%1" dynamic="true"/>
         <!-- TODO -->
       </context>
 
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="12" kateversion="3.3"
+	  version="14" kateversion="3.3"
 	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"
 	  mimetype="application/x-ruby"
 	  style="ruby" indenter="ruby"
@@ -320,20 +320,20 @@
 
 			<!-- A slash is always a division operator, even if preceeded by whitespace -->
 			<context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
-				<RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
 				<AnyChar attribute="Operator" String="/%" context="#pop"/>
 			</context>
 
 			<!-- Same as check_div_1, but with double pop to exit the surrounding context -->
 			<context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
-				<RegExpr attribute="Normal Text" String="\s*" context="#stay"/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
 				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
 			</context>
 
 			<!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
 			<context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
 				<AnyChar attribute="Operator" String="/%" context="#pop"/>
-				<RegExpr attribute="Normal Text" String="\s+" context="check_div_2_internal"/>
+				<DetectSpaces attribute="Normal Text" context="check_div_2_internal"/>
 			</context>
 
 			<!-- Internal context used by check_div_2 -->
@@ -345,7 +345,7 @@
 			<!-- Same as check_div_2, but with double pop to exit the surrounding context -->
 			<context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
 				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
-				<RegExpr attribute="Normal Text" String="\s+" context="check_div_2_pop_internal"/>
+				<DetectSpaces attribute="Normal Text" context="check_div_2_pop_internal"/>
 			</context>
 
 			<!-- Internal context used by check_div_2_pop -->
@@ -390,7 +390,7 @@
 			<context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">
 				<RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
@@ -433,8 +433,7 @@
 
 			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
 				<DetectSpaces />
-				<IncludeRules context="##Alerts" />
-				<IncludeRules context="##Modelines" />
+				<IncludeRules context="##Comments" />
 			</context>
 
 			<!-- HEREDOC support
@@ -602,7 +601,7 @@
 			 -->
 			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="dq_string_rules" />
-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 			<!-- rules to be included in all dq_string contexts -->
@@ -667,7 +666,7 @@
 			 -->
 			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="token_array_rules" />
-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 
@@ -731,7 +730,7 @@
 			 -->
 			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="apostrophed_rules" />
-				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>
+				<StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 
@@ -795,7 +794,7 @@
 			 -->
 			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="shell_command_rules" />
-				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 
@@ -861,7 +860,7 @@
 			 -->
 			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="regexpr_rules" />
-				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
 			</context>
 
diff --git a/xml/rust.xml b/xml/rust.xml
--- a/xml/rust.xml
+++ b/xml/rust.xml
@@ -33,7 +33,7 @@
 	<!ENTITY commonEscape "(?:[trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">
 	<!ENTITY unicodeEscape "u\{(?:[0-9a-fA-F]_*){1,6}\}">
 ]>
-<language name="Rust" version="9" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" version="10" 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>
@@ -452,15 +452,13 @@
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 			<DetectSpaces/>
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 		<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
 			<DetectSpaces/>
 			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
 			<Detect2Chars char="*" char1="/" attribute="Comment" context="#pop" endRegion="Comment"/>
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 		</context>
 	</contexts>
 	<itemDatas>
diff --git a/xml/scala.xml b/xml/scala.xml
--- a/xml/scala.xml
+++ b/xml/scala.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Scala" version="8" kateversion="2.3" section="Sources"
+<language name="Scala" version="9" kateversion="2.3" section="Sources"
           extensions="*.scala;*.sbt" mimetype="text/x-scala" license="LGPL"
           author="Stephane Micheloud (stephane.micheloud@epfl.ch)">
 <!--
@@ -3471,14 +3471,12 @@
 -->
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/scheme.xml b/xml/scheme.xml
--- a/xml/scheme.xml
+++ b/xml/scheme.xml
@@ -17,7 +17,7 @@
   https://www.gnu.org/software/kawa/Syntax.html
   https://www.gnu.org/software/guile/manual/html_node/Scheme-Syntax.html
 -->
-<language version="10" kateversion="5.62" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
+<language version="11" kateversion="5.62" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
   <highlighting>
     <list name="operators">
       <item>&lt;=</item>
@@ -870,8 +870,7 @@
       </context>
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
         <DetectIdentifier/>
       </context>
 
@@ -1089,8 +1088,7 @@
         <DetectSpaces/>
         <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="comment"/>
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
         <DetectIdentifier/>
       </context>
 
diff --git a/xml/sci.xml b/xml/sci.xml
--- a/xml/sci.xml
+++ b/xml/sci.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="scilab" version="5" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">
+<language name="scilab" version="6" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">
   <highlighting>
     <list name="Structure-keywords">
       <item>do</item>
@@ -1169,8 +1169,7 @@
      </context>
      <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
      </context>
    </contexts>
     <itemDatas>
diff --git a/xml/sed.xml b/xml/sed.xml
--- a/xml/sed.xml
+++ b/xml/sed.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="sed" section="Scripts" version="3" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
+<language name="sed" section="Scripts" version="5" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
         <highlighting>
                 <contexts>
                         <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">
@@ -19,8 +19,8 @@
 
                         <context name="FirstAddressRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1" attribute="Regex Escape" context="#stay"             dynamic="true"/>
-                                <RegExpr String="%1"   attribute="Separator"    context="AfterFirstAddress" dynamic="true"/>
+                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"             dynamic="true"/>
+                                <StringDetect String="%1"   attribute="Separator"    context="AfterFirstAddress" dynamic="true"/>
                                 <IncludeRules                                   context="Regex"/>
                         </context>
 
@@ -50,8 +50,8 @@
 
                         <context name="SecondAddressRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1" attribute="Regex Escape" context="#stay"              dynamic="true"/>
-                                <RegExpr String="%1"   attribute="Separator"    context="AfterSecondAddress" dynamic="true"/>
+                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"              dynamic="true"/>
+                                <StringDetect String="%1"   attribute="Separator"    context="AfterSecondAddress" dynamic="true"/>
                                 <IncludeRules                                   context="Regex"/>
                         </context>
 
@@ -89,15 +89,15 @@
 
                         <context name="SRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1" attribute="Regex Escape" context="#stay"        dynamic="true"/>
+                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"        dynamic="true"/>
                                 <RegExpr String="(%1)" attribute="Separator"    context="SReplacement" dynamic="true"/>
                                 <IncludeRules                                   context="Regex"/>
                         </context>
 
                         <context name="SReplacement" attribute="Replacement" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1"                attribute="Repl Escape" context="#stay"  dynamic="true"/>
-                                <RegExpr String="%1"                  attribute="Separator"   context="SFlags" dynamic="true"/>
+                                <StringDetect String="\%1"                attribute="Repl Escape" context="#stay"  dynamic="true"/>
+                                <StringDetect String="%1"                  attribute="Separator"   context="SFlags" dynamic="true"/>
                                 <RegExpr String="\\[0-9LlUuE\\&amp;]" attribute="Repl Escape" context="#stay"/>
                                 <DetectChar char="&amp;"              attribute="Repl Escape" context="#stay"/>
                         </context>
@@ -122,7 +122,7 @@
 
                         <context name="YSourceList" attribute="Char List" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1"           attribute="Char List Escape" context="#stay"     dynamic="true"/>
+                                <StringDetect String="\%1"           attribute="Char List Escape" context="#stay"     dynamic="true"/>
                                 <RegExpr String="(%1)"           attribute="Separator"        context="YDestList" dynamic="true"/>
                                 <Detect2Chars char="\" char1="n" attribute="Char List Escape" context="#stay"/>
                                 <Detect2Chars char="\" char1="\" attribute="Char List Escape" context="#stay"/>
@@ -130,8 +130,8 @@
 
                         <context name="YDestList" attribute="Char List" lineEndContext="Error" dynamic="true">
                                 <DetectSpaces/>
-                                <RegExpr String="\\%1"           attribute="Char List Escape" context="#stay"        dynamic="true"/>
-                                <RegExpr String="%1"             attribute="Separator"        context="AfterCommand" dynamic="true"/>
+                                <StringDetect String="\%1"           attribute="Char List Escape" context="#stay"        dynamic="true"/>
+                                <StringDetect String="%1"             attribute="Separator"        context="AfterCommand" dynamic="true"/>
                                 <Detect2Chars char="\" char1="n" attribute="Char List Escape" context="#stay"/>
                                 <Detect2Chars char="\" char1="\" attribute="Char List Escape" context="#stay"/>
                         </context>
@@ -222,8 +222,7 @@
 
                         <context name="Comment" attribute="Comment" lineEndContext="#pop">
                                 <DetectSpaces />
-                                <IncludeRules context="##Alerts"/>
-                                <IncludeRules context="##Modelines"/>
+                                <IncludeRules context="##Comments"/>
                         </context>
                         <context name="Error"   attribute="Error"   lineEndContext="BeginningOfLine"/>
                 </contexts>
diff --git a/xml/sgml.xml b/xml/sgml.xml
--- a/xml/sgml.xml
+++ b/xml/sgml.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="SGML" version="3" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">
+<language name="SGML" version="4" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">
   <highlighting>
     <contexts>
        <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
@@ -27,8 +27,7 @@
        <context attribute="Comment" lineEndContext="#stay" name="Comment" >
          <DetectSpaces />
          <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="Comment"/>
-         <IncludeRules context="##Alerts"/>
-         <IncludeRules context="##Modelines"/>
+         <IncludeRules context="##Comments"/>
        </context>
 
     </contexts>
diff --git a/xml/sml.xml b/xml/sml.xml
--- a/xml/sml.xml
+++ b/xml/sml.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="SML" version="5" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">
+<language name="SML" version="6" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">
   <highlighting>
     <list name="keywords">
       <item>abstype</item>
@@ -79,8 +79,7 @@
       <context attribute="Comment" lineEndContext="#stay" name="Multiline/Inline Comment">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="String">
         <HlCStringChar attribute="String Char" context="#stay"/>
diff --git a/xml/spdx-comments.xml b/xml/spdx-comments.xml
new file mode 100644
--- /dev/null
+++ b/xml/spdx-comments.xml
@@ -0,0 +1,557 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language
+    version="1"
+    kateversion="3.1"
+    name="SPDX-Comments"
+    section="Other"
+    extensions=""
+    mimetype=""
+    author="Alex Turbov (i.zaufi@gmail.com)"
+    license="MIT"
+    hidden="true"
+  >
+  <highlighting>
+    <list name="tags">
+      <item>SPDX-License-Identifier:</item>
+      <item>SPDX-FileContributor:</item>
+      <item>SPDX-FileCopyrightText:</item>
+      <item>SPDX-LicenseInfoInFile:</item>
+    </list>
+
+    <list name="operators">
+      <item>AND</item>
+      <item>OR</item>
+      <item>WITH</item>
+    </list>
+
+    <list name="licenses">
+      <item>0BSD</item>
+      <item>AAL</item>
+      <item>ADSL</item>
+      <item>AFL-1.1</item>
+      <item>AFL-1.2</item>
+      <item>AFL-2.0</item>
+      <item>AFL-2.1</item>
+      <item>AFL-3.0</item>
+      <item>AGPL-1.0-only</item>
+      <item>AGPL-1.0-or-later</item>
+      <item>AGPL-3.0-only</item>
+      <item>AGPL-3.0-or-later</item>
+      <item>AMDPLPA</item>
+      <item>AML</item>
+      <item>AMPAS</item>
+      <item>ANTLR-PD</item>
+      <item>APAFML</item>
+      <item>APL-1.0</item>
+      <item>APSL-1.0</item>
+      <item>APSL-1.1</item>
+      <item>APSL-1.2</item>
+      <item>APSL-2.0</item>
+      <item>Abstyles</item>
+      <item>Adobe-2006</item>
+      <item>Adobe-Glyph</item>
+      <item>Afmparse</item>
+      <item>Aladdin</item>
+      <item>Apache-1.0</item>
+      <item>Apache-1.1</item>
+      <item>Apache-2.0</item>
+      <item>Artistic-1.0</item>
+      <item>Artistic-1.0-Perl</item>
+      <item>Artistic-1.0-cl8</item>
+      <item>Artistic-2.0</item>
+      <item>BSD-1-Clause</item>
+      <item>BSD-2-Clause</item>
+      <item>BSD-2-Clause-Patent</item>
+      <item>BSD-2-Clause-Views</item>
+      <item>BSD-3-Clause</item>
+      <item>BSD-3-Clause-Attribution</item>
+      <item>BSD-3-Clause-Clear</item>
+      <item>BSD-3-Clause-LBNL</item>
+      <item>BSD-3-Clause-No-Nuclear-License</item>
+      <item>BSD-3-Clause-No-Nuclear-License-2014</item>
+      <item>BSD-3-Clause-No-Nuclear-Warranty</item>
+      <item>BSD-3-Clause-Open-MPI</item>
+      <item>BSD-4-Clause</item>
+      <item>BSD-4-Clause-UC</item>
+      <item>BSD-Protection</item>
+      <item>BSD-Source-Code</item>
+      <item>BSL-1.0</item>
+      <item>Bahyph</item>
+      <item>Barr</item>
+      <item>Beerware</item>
+      <item>BitTorrent-1.0</item>
+      <item>BitTorrent-1.1</item>
+      <item>BlueOak-1.0.0</item>
+      <item>Borceux</item>
+      <item>CAL-1.0</item>
+      <item>CAL-1.0-Combined-Work-Exception</item>
+      <item>CATOSL-1.1</item>
+      <item>CC-BY-1.0</item>
+      <item>CC-BY-2.0</item>
+      <item>CC-BY-2.5</item>
+      <item>CC-BY-3.0</item>
+      <item>CC-BY-3.0-AT</item>
+      <item>CC-BY-4.0</item>
+      <item>CC-BY-NC-1.0</item>
+      <item>CC-BY-NC-2.0</item>
+      <item>CC-BY-NC-2.5</item>
+      <item>CC-BY-NC-3.0</item>
+      <item>CC-BY-NC-4.0</item>
+      <item>CC-BY-NC-ND-1.0</item>
+      <item>CC-BY-NC-ND-2.0</item>
+      <item>CC-BY-NC-ND-2.5</item>
+      <item>CC-BY-NC-ND-3.0</item>
+      <item>CC-BY-NC-ND-3.0-IGO</item>
+      <item>CC-BY-NC-ND-4.0</item>
+      <item>CC-BY-NC-SA-1.0</item>
+      <item>CC-BY-NC-SA-2.0</item>
+      <item>CC-BY-NC-SA-2.5</item>
+      <item>CC-BY-NC-SA-3.0</item>
+      <item>CC-BY-NC-SA-4.0</item>
+      <item>CC-BY-ND-1.0</item>
+      <item>CC-BY-ND-2.0</item>
+      <item>CC-BY-ND-2.5</item>
+      <item>CC-BY-ND-3.0</item>
+      <item>CC-BY-ND-4.0</item>
+      <item>CC-BY-SA-1.0</item>
+      <item>CC-BY-SA-2.0</item>
+      <item>CC-BY-SA-2.5</item>
+      <item>CC-BY-SA-3.0</item>
+      <item>CC-BY-SA-3.0-AT</item>
+      <item>CC-BY-SA-4.0</item>
+      <item>CC-PDDC</item>
+      <item>CC0-1.0</item>
+      <item>CDDL-1.0</item>
+      <item>CDDL-1.1</item>
+      <item>CDLA-Permissive-1.0</item>
+      <item>CDLA-Sharing-1.0</item>
+      <item>CECILL-1.0</item>
+      <item>CECILL-1.1</item>
+      <item>CECILL-2.0</item>
+      <item>CECILL-2.1</item>
+      <item>CECILL-B</item>
+      <item>CECILL-C</item>
+      <item>CERN-OHL-1.1</item>
+      <item>CERN-OHL-1.2</item>
+      <item>CERN-OHL-P-2.0</item>
+      <item>CERN-OHL-S-2.0</item>
+      <item>CERN-OHL-W-2.0</item>
+      <item>CNRI-Jython</item>
+      <item>CNRI-Python</item>
+      <item>CNRI-Python-GPL-Compatible</item>
+      <item>CPAL-1.0</item>
+      <item>CPL-1.0</item>
+      <item>CPOL-1.02</item>
+      <item>CUA-OPL-1.0</item>
+      <item>Caldera</item>
+      <item>ClArtistic</item>
+      <item>Condor-1.1</item>
+      <item>Crossword</item>
+      <item>CrystalStacker</item>
+      <item>Cube</item>
+      <item>D-FSL-1.0</item>
+      <item>DOC</item>
+      <item>DSDP</item>
+      <item>Dotseqn</item>
+      <item>ECL-1.0</item>
+      <item>ECL-2.0</item>
+      <item>EFL-1.0</item>
+      <item>EFL-2.0</item>
+      <item>EPICS</item>
+      <item>EPL-1.0</item>
+      <item>EPL-2.0</item>
+      <item>EUDatagrid</item>
+      <item>EUPL-1.0</item>
+      <item>EUPL-1.1</item>
+      <item>EUPL-1.2</item>
+      <item>Entessa</item>
+      <item>ErlPL-1.1</item>
+      <item>Eurosym</item>
+      <item>FSFAP</item>
+      <item>FSFUL</item>
+      <item>FSFULLR</item>
+      <item>FTL</item>
+      <item>Fair</item>
+      <item>Frameworx-1.0</item>
+      <item>FreeImage</item>
+      <item>GFDL-1.1-invariants-only</item>
+      <item>GFDL-1.1-invariants-or-later</item>
+      <item>GFDL-1.1-no-invariants-only</item>
+      <item>GFDL-1.1-no-invariants-or-later</item>
+      <item>GFDL-1.1-only</item>
+      <item>GFDL-1.1-or-later</item>
+      <item>GFDL-1.2-invariants-only</item>
+      <item>GFDL-1.2-invariants-or-later</item>
+      <item>GFDL-1.2-no-invariants-only</item>
+      <item>GFDL-1.2-no-invariants-or-later</item>
+      <item>GFDL-1.2-only</item>
+      <item>GFDL-1.2-or-later</item>
+      <item>GFDL-1.3-invariants-only</item>
+      <item>GFDL-1.3-invariants-or-later</item>
+      <item>GFDL-1.3-no-invariants-only</item>
+      <item>GFDL-1.3-no-invariants-or-later</item>
+      <item>GFDL-1.3-only</item>
+      <item>GFDL-1.3-or-later</item>
+      <item>GL2PS</item>
+      <item>GLWTPL</item>
+      <item>GPL-1.0-only</item>
+      <item>GPL-1.0-or-later</item>
+      <item>GPL-2.0-only</item>
+      <item>GPL-2.0-or-later</item>
+      <item>GPL-3.0-only</item>
+      <item>GPL-3.0-or-later</item>
+      <item>Giftware</item>
+      <item>Glide</item>
+      <item>Glulxe</item>
+      <item>HPND</item>
+      <item>HPND-sell-variant</item>
+      <item>HaskellReport</item>
+      <item>Hippocratic-2.1</item>
+      <item>IBM-pibs</item>
+      <item>ICU</item>
+      <item>IJG</item>
+      <item>IPA</item>
+      <item>IPL-1.0</item>
+      <item>ISC</item>
+      <item>ImageMagick</item>
+      <item>Imlib2</item>
+      <item>Info-ZIP</item>
+      <item>Intel</item>
+      <item>Intel-ACPI</item>
+      <item>Interbase-1.0</item>
+      <item>JPNIC</item>
+      <item>JSON</item>
+      <item>JasPer-2.0</item>
+      <item>LAL-1.2</item>
+      <item>LAL-1.3</item>
+      <item>LGPL-2.0-only</item>
+      <item>LGPL-2.0-or-later</item>
+      <item>LGPL-2.1-only</item>
+      <item>LGPL-2.1-or-later</item>
+      <item>LGPL-3.0-only</item>
+      <item>LGPL-3.0-or-later</item>
+      <item>LGPLLR</item>
+      <item>LPL-1.0</item>
+      <item>LPL-1.02</item>
+      <item>LPPL-1.0</item>
+      <item>LPPL-1.1</item>
+      <item>LPPL-1.2</item>
+      <item>LPPL-1.3a</item>
+      <item>LPPL-1.3c</item>
+      <item>Latex2e</item>
+      <item>Leptonica</item>
+      <item>LiLiQ-P-1.1</item>
+      <item>LiLiQ-R-1.1</item>
+      <item>LiLiQ-Rplus-1.1</item>
+      <item>Libpng</item>
+      <item>Linux-OpenIB</item>
+      <item>MIT</item>
+      <item>MIT-0</item>
+      <item>MIT-CMU</item>
+      <item>MIT-advertising</item>
+      <item>MIT-enna</item>
+      <item>MIT-feh</item>
+      <item>MITNFA</item>
+      <item>MPL-1.0</item>
+      <item>MPL-1.1</item>
+      <item>MPL-2.0</item>
+      <item>MPL-2.0-no-copyleft-exception</item>
+      <item>MS-PL</item>
+      <item>MS-RL</item>
+      <item>MTLL</item>
+      <item>MakeIndex</item>
+      <item>MirOS</item>
+      <item>Motosoto</item>
+      <item>MulanPSL-1.0</item>
+      <item>MulanPSL-2.0</item>
+      <item>Multics</item>
+      <item>Mup</item>
+      <item>NASA-1.3</item>
+      <item>NBPL-1.0</item>
+      <item>NCGL-UK-2.0</item>
+      <item>NCSA</item>
+      <item>NGPL</item>
+      <item>NIST-PD</item>
+      <item>NIST-PD-fallback</item>
+      <item>NLOD-1.0</item>
+      <item>NLPL</item>
+      <item>NOSL</item>
+      <item>NPL-1.0</item>
+      <item>NPL-1.1</item>
+      <item>NPOSL-3.0</item>
+      <item>NRL</item>
+      <item>NTP</item>
+      <item>NTP-0</item>
+      <item>Naumen</item>
+      <item>Net-SNMP</item>
+      <item>NetCDF</item>
+      <item>Newsletr</item>
+      <item>Nokia</item>
+      <item>Noweb</item>
+      <item>O-UDA-1.0</item>
+      <item>OCCT-PL</item>
+      <item>OCLC-2.0</item>
+      <item>ODC-By-1.0</item>
+      <item>ODbL-1.0</item>
+      <item>OFL-1.0</item>
+      <item>OFL-1.0-RFN</item>
+      <item>OFL-1.0-no-RFN</item>
+      <item>OFL-1.1</item>
+      <item>OFL-1.1-RFN</item>
+      <item>OFL-1.1-no-RFN</item>
+      <item>OGC-1.0</item>
+      <item>OGL-Canada-2.0</item>
+      <item>OGL-UK-1.0</item>
+      <item>OGL-UK-2.0</item>
+      <item>OGL-UK-3.0</item>
+      <item>OGTSL</item>
+      <item>OLDAP-1.1</item>
+      <item>OLDAP-1.2</item>
+      <item>OLDAP-1.3</item>
+      <item>OLDAP-1.4</item>
+      <item>OLDAP-2.0</item>
+      <item>OLDAP-2.0.1</item>
+      <item>OLDAP-2.1</item>
+      <item>OLDAP-2.2</item>
+      <item>OLDAP-2.2.1</item>
+      <item>OLDAP-2.2.2</item>
+      <item>OLDAP-2.3</item>
+      <item>OLDAP-2.4</item>
+      <item>OLDAP-2.5</item>
+      <item>OLDAP-2.6</item>
+      <item>OLDAP-2.7</item>
+      <item>OLDAP-2.8</item>
+      <item>OML</item>
+      <item>OPL-1.0</item>
+      <item>OSET-PL-2.1</item>
+      <item>OSL-1.0</item>
+      <item>OSL-1.1</item>
+      <item>OSL-2.0</item>
+      <item>OSL-2.1</item>
+      <item>OSL-3.0</item>
+      <item>OpenSSL</item>
+      <item>PDDL-1.0</item>
+      <item>PHP-3.0</item>
+      <item>PHP-3.01</item>
+      <item>PSF-2.0</item>
+      <item>Parity-6.0.0</item>
+      <item>Parity-7.0.0</item>
+      <item>Plexus</item>
+      <item>PolyForm-Noncommercial-1.0.0</item>
+      <item>PolyForm-Small-Business-1.0.0</item>
+      <item>PostgreSQL</item>
+      <item>Python-2.0</item>
+      <item>QPL-1.0</item>
+      <item>Qhull</item>
+      <item>RHeCos-1.1</item>
+      <item>RPL-1.1</item>
+      <item>RPL-1.5</item>
+      <item>RPSL-1.0</item>
+      <item>RSA-MD</item>
+      <item>RSCPL</item>
+      <item>Rdisc</item>
+      <item>Ruby</item>
+      <item>SAX-PD</item>
+      <item>SCEA</item>
+      <item>SGI-B-1.0</item>
+      <item>SGI-B-1.1</item>
+      <item>SGI-B-2.0</item>
+      <item>SHL-0.5</item>
+      <item>SHL-0.51</item>
+      <item>SISSL</item>
+      <item>SISSL-1.2</item>
+      <item>SMLNJ</item>
+      <item>SMPPL</item>
+      <item>SNIA</item>
+      <item>SPL-1.0</item>
+      <item>SSH-OpenSSH</item>
+      <item>SSH-short</item>
+      <item>SSPL-1.0</item>
+      <item>SWL</item>
+      <item>Saxpath</item>
+      <item>Sendmail</item>
+      <item>Sendmail-8.23</item>
+      <item>SimPL-2.0</item>
+      <item>Sleepycat</item>
+      <item>Spencer-86</item>
+      <item>Spencer-94</item>
+      <item>Spencer-99</item>
+      <item>SugarCRM-1.1.3</item>
+      <item>TAPR-OHL-1.0</item>
+      <item>TCL</item>
+      <item>TCP-wrappers</item>
+      <item>TMate</item>
+      <item>TORQUE-1.1</item>
+      <item>TOSL</item>
+      <item>TU-Berlin-1.0</item>
+      <item>TU-Berlin-2.0</item>
+      <item>UCL-1.0</item>
+      <item>UPL-1.0</item>
+      <item>Unicode-DFS-2015</item>
+      <item>Unicode-DFS-2016</item>
+      <item>Unicode-TOU</item>
+      <item>Unlicense</item>
+      <item>VOSTROM</item>
+      <item>VSL-1.0</item>
+      <item>Vim</item>
+      <item>W3C</item>
+      <item>W3C-19980720</item>
+      <item>W3C-20150513</item>
+      <item>WTFPL</item>
+      <item>Watcom-1.0</item>
+      <item>Wsuipa</item>
+      <item>X11</item>
+      <item>XFree86-1.1</item>
+      <item>XSkat</item>
+      <item>Xerox</item>
+      <item>Xnet</item>
+      <item>YPL-1.0</item>
+      <item>YPL-1.1</item>
+      <item>ZPL-1.1</item>
+      <item>ZPL-2.0</item>
+      <item>ZPL-2.1</item>
+      <item>Zed</item>
+      <item>Zend-2.0</item>
+      <item>Zimbra-1.3</item>
+      <item>Zimbra-1.4</item>
+      <item>Zlib</item>
+      <item>blessing</item>
+      <item>bzip2-1.0.5</item>
+      <item>bzip2-1.0.6</item>
+      <item>copyleft-next-0.3.0</item>
+      <item>copyleft-next-0.3.1</item>
+      <item>curl</item>
+      <item>diffmark</item>
+      <item>dvipdfm</item>
+      <item>eGenix</item>
+      <item>etalab-2.0</item>
+      <item>gSOAP-1.3b</item>
+      <item>gnuplot</item>
+      <item>iMatix</item>
+      <item>libpng-2.0</item>
+      <item>libselinux-1.0</item>
+      <item>libtiff</item>
+      <item>mpich2</item>
+      <item>psfrag</item>
+      <item>psutils</item>
+      <item>xinetd</item>
+      <item>xpp</item>
+      <item>zlib-acknowledgement</item>
+    </list>
+
+    <list name="deprecated-licenses">
+      <item>AGPL-1.0</item>
+      <item>AGPL-3.0</item>
+      <item>BSD-2-Clause-FreeBSD</item>
+      <item>BSD-2-Clause-NetBSD</item>
+      <item>GFDL-1.1</item>
+      <item>GFDL-1.2</item>
+      <item>GFDL-1.3</item>
+      <item>GPL-1.0</item>
+      <item>GPL-2.0</item>
+      <item>GPL-2.0-with-GCC-exception</item>
+      <item>GPL-2.0-with-autoconf-exception</item>
+      <item>GPL-2.0-with-bison-exception</item>
+      <item>GPL-2.0-with-classpath-exception</item>
+      <item>GPL-2.0-with-font-exception</item>
+      <item>GPL-3.0</item>
+      <item>GPL-3.0-with-GCC-exception</item>
+      <item>GPL-3.0-with-autoconf-exception</item>
+      <item>LGPL-2.0</item>
+      <item>LGPL-2.1</item>
+      <item>LGPL-3.0</item>
+      <item>Nunit</item>
+      <item>StandardML-NJ</item>
+      <item>eCos-2.0</item>
+      <item>wxWindows</item>
+    </list>
+
+    <list name="exceptions">
+      <item>GCC-exception-2.0</item>
+      <item>openvpn-openssl-exception</item>
+      <item>GPL-3.0-linking-exception</item>
+      <item>Fawkes-Runtime-exception</item>
+      <item>u-boot-exception-2.0</item>
+      <item>PS-or-PDF-font-exception-20170817</item>
+      <item>gnu-javamail-exception</item>
+      <item>LGPL-3.0-linking-exception</item>
+      <item>DigiRule-FOSS-exception</item>
+      <item>LLVM-exception</item>
+      <item>Linux-syscall-note</item>
+      <item>GPL-3.0-linking-source-exception</item>
+      <item>Qwt-exception-1.0</item>
+      <item>389-exception</item>
+      <item>mif-exception</item>
+      <item>eCos-exception-2.0</item>
+      <item>CLISP-exception-2.0</item>
+      <item>Bison-exception-2.2</item>
+      <item>Libtool-exception</item>
+      <item>LZMA-exception</item>
+      <item>OpenJDK-assembly-exception-1.0</item>
+      <item>Font-exception-2.0</item>
+      <item>OCaml-LGPL-linking-exception</item>
+      <item>GCC-exception-3.1</item>
+      <item>Bootloader-exception</item>
+      <item>SHL-2.0</item>
+      <item>Classpath-exception-2.0</item>
+      <item>Swift-exception</item>
+      <item>Autoconf-exception-2.0</item>
+      <item>FLTK-exception</item>
+      <item>freertos-exception-2.0</item>
+      <item>Universal-FOSS-exception-1.0</item>
+      <item>WxWindows-exception-3.1</item>
+      <item>OCCT-exception-1.0</item>
+      <item>Autoconf-exception-3.0</item>
+      <item>i2p-gpl-java-exception</item>
+      <item>GPL-CC-1.0</item>
+      <item>Qt-LGPL-exception-1.1</item>
+      <item>SHL-2.1</item>
+      <item>Qt-GPL-exception-1.0</item>
+    </list>
+
+    <list name="deprecated-exceptions">
+      <item>Nokia-Qt-exception-1.1</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="SPDX Tag" lineEndContext="#pop">
+        <WordDetect String="SPDX-License-Identifier:" attribute="SPDX Tag" context="license-expression" />
+        <keyword String="tags" context="value" attribute="SPDX Tag" />
+      </context>
+
+      <context name="value" attribute="SPDX Value" lineEndContext="#pop">
+      </context>
+
+      <context name="license-expression" attribute="SPDX Value" lineEndContext="#pop">
+        <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" />
+        <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" />
+        <keyword String="deprecated-exceptions" context="#stay" attribute="SPDX Deprecated License Exception" />
+        <keyword String="operators" context="#stay" attribute="SPDX License Expression Operator" />
+        <RegExpr attribute="SPDX License" context="#stay" String="\bLicenseRef-[^\s]+" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="SPDX Tag" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX Value" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX License" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX License Exception" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX Deprecated License" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX Deprecated License Exception" defStyleNum="dsAnnotation" italic="true" />
+      <itemData name="SPDX License Expression Operator" defStyleNum="dsOperator" italic="true" />
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <keywords casesensitive="1" weakDeliminator=":-." />
+  </general>
+
+</language>
+<!-- kate: indent-width 2; -->
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="6" 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="7" 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>
@@ -445,15 +445,13 @@
       <!-- comments -->
       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <LineContinue attribute="Comment" context="#pop"/>
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <!-- preprocessor -->
       <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
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="10" 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="11" 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>
@@ -1038,15 +1038,13 @@
       </context>
       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <LineContinue attribute="Comment" context="#pop"/>
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="Identifier" attribute="Identifier" lineEndContext="#pop">
         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
diff --git a/xml/sql.xml b/xml/sql.xml
--- a/xml/sql.xml
+++ b/xml/sql.xml
@@ -5,7 +5,7 @@
      v3 fix comments by Gene Thomas <gene@genethomas.com>
   -->
 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
-<language name="SQL" version="6" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
+<language name="SQL" version="7" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -917,14 +917,12 @@
       </context>
       <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="Multiline C-style comment" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
       <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop">
         <IncludeRules context="Singleline PL/SQL-style comment"/>
diff --git a/xml/stata.xml b/xml/stata.xml
--- a/xml/stata.xml
+++ b/xml/stata.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Stata" version="11" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
+<language name="Stata" version="12" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
  casesensitive="1" priority="5" author="Larry Radbill (Larry.Radbill gmail com)" license="LGPL" >
 
   <highlighting>
@@ -3176,15 +3176,13 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context attribute="String" lineEndContext="#stay" name="string">
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="5" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
+<language name="Tcl/Tk" version="7" kateversion="5.62" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
   <highlighting>
     <list name="keywords">
       <item>after</item>
@@ -534,13 +534,12 @@
 
       <context name = "Comment" attribute = "Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
-      <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay">
-        <RegExpr String = "\s*#" attribute="Comment" context="Comment" />
-        <RegExpr String = "." attribute="Normal Text" context="#pop" lookAhead="true" />
+      <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar char="#" attribute="Comment" context="Comment" />
       </context>
     </contexts>
 
diff --git a/xml/tcsh.xml b/xml/tcsh.xml
--- a/xml/tcsh.xml
+++ b/xml/tcsh.xml
@@ -8,7 +8,7 @@
         <!ENTITY noword   "(?![\w$+-])">		<!-- no word, $, + or - following -->
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
 ]>
-<language name="Tcsh" version="7" kateversion="5.0" 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="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">
 
 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
@@ -92,343 +92,11 @@
     </list>
 
     <list name="unixcommands">
-      <!-- /bin -->
-      <item>arch</item>
-      <item>awk</item>
-      <item>bash</item>
-      <item>bunzip2</item>
-      <item>bzcat</item>
-      <item>bzcmp</item>
-      <item>bzdiff</item>
-      <item>bzegrep</item>
-      <item>bzfgrep</item>
-      <item>bzgrep</item>
-      <item>bzip2</item>
-      <item>bzip2recover</item>
-      <item>bzless</item>
-      <item>bzmore</item>
-      <item>cat</item>
-      <item>chattr</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chvt</item>
-      <item>cp</item>
-      <item>date</item>
-      <item>dd</item>
-      <item>deallocvt</item>
-      <item>df</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>dmesg</item>
-      <item>dnsdomainname</item>
-      <item>domainname</item>
-      <item>du</item>
-      <item>dumpkeys</item>
-      <item>echo</item>
-      <item>ed</item>
-      <item>egrep</item>
-      <item>false</item>
-      <item>fgconsole</item>
-      <item>fgrep</item>
-      <item>fuser</item>
-      <item>gawk</item>
-      <item>getkeycodes</item>
-      <item>gocr</item>
-      <item>grep</item>
-      <item>groff</item>
-      <item>groups</item>
-      <item>gunzip</item>
-      <item>gzexe</item>
-      <item>gzip</item>
-      <item>hostname</item>
-      <item>igawk</item>
-      <item>install</item>
-      <item>kbd_mode</item>
-      <item>kbdrate</item>
-      <item>killall</item>
-      <item>last</item>
-      <item>lastb</item>
-      <item>link</item>
-      <item>ln</item>
-      <item>loadkeys</item>
-      <item>loadunimap</item>
-      <item>login</item>
-      <item>ls</item>
-      <item>lsattr</item>
-      <item>lsmod</item>
-      <item>lsmod.old</item>
-      <item>mapscrn</item>
-      <item>mesg</item>
-      <item>mkdir</item>
-      <item>mkfifo</item>
-      <item>mknod</item>
-      <item>mktemp</item>
-      <item>more</item>
-      <item>mount</item>
-      <item>mv</item>
-      <item>nano</item>
-      <item>netstat</item>
-      <item>nisdomainname</item>
-      <item>nroff</item>
-      <item>openvt</item>
-      <item>pgawk</item>
-      <item>pidof</item>
-      <item>ping</item>
-      <item>ps</item>
-      <item>pstree</item>
+      <include>unixcommands##Bash</include>
+      <item>command</item>
       <item>pwd</item>
-      <item>rbash</item>
-      <item>readlink</item>
-      <item>red</item>
-      <item>resizecons</item>
-      <item>rm</item>
-      <item>rmdir</item>
-      <item>run-parts</item>
-      <item>sash</item>
-      <item>sed</item>
-      <item>setfont</item>
-      <item>setkeycodes</item>
-      <item>setleds</item>
-      <item>setmetamode</item>
-      <item>setserial</item>
-      <item>sh</item>
-      <item>showkey</item>
-      <item>shred</item>
-      <item>sleep</item>
-      <item>ssed</item>
-      <item>stat</item>
-      <item>stty</item>
-      <item>su</item>
-      <item>sync</item>
-      <item>tar</item>
-      <item>tempfile</item>
-      <item>touch</item>
-      <item>troff</item>
-      <item>true</item>
-      <item>umount</item>
-      <item>uname</item>
-      <item>unicode_start</item>
-      <item>unicode_stop</item>
-      <item>unlink</item>
-      <item>utmpdump</item>
-      <item>uuidgen</item>
-      <item>vdir</item>
-      <item>wall</item>
-      <item>wc</item>
-      <item>ypdomainname</item>
-      <item>zcat</item>
-      <item>zcmp</item>
-      <item>zdiff</item>
-      <item>zegrep</item>
-      <item>zfgrep</item>
-      <item>zforce</item>
-      <item>zgrep</item>
-      <item>zless</item>
-      <item>zmore</item>
-      <item>znew</item>
-      <item>zsh</item>
-
-      <!-- some from /usr/bin -->
-      <item>aclocal</item>
-      <item>aconnect</item>
-      <item>aplay</item>
-      <item>apm</item>
-      <item>apmsleep</item>
-      <item>apropos</item>
-      <item>ar</item>
-      <item>arecord</item>
-      <item>as</item>
-      <item>as86</item>
-      <item>autoconf</item>
-      <item>autoheader</item>
-      <item>automake</item>
-      <item>awk</item>
-      <item>basename</item>
-      <item>bc</item>
-      <item>bison</item>
-      <item>c++</item>
-      <item>cal</item>
-      <item>cat</item>
-      <item>cc</item>
-      <item>cdda2wav</item>
-      <item>cdparanoia</item>
-      <item>cdrdao</item>
-      <item>cd-read</item>
-      <item>cdrecord</item>
-      <item>chfn</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chroot</item>
-      <item>chsh</item>
-      <item>clear</item>
-      <item>cmp</item>
-      <item>co</item>
-      <item>col</item>
-      <item>comm</item>
-      <item>cp</item>
-      <item>cpio</item>
-      <item>cpp</item>
-      <item>cut</item>
-      <item>dc</item>
-      <item>dd</item>
-      <item>df</item>
-      <item>diff</item>
-      <item>diff3</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>directomatic</item>
-      <item>dirname</item>
-      <item>du</item>
-      <item>env</item>
-      <item>expr</item>
-      <item>fbset</item>
-      <item>file</item>
-      <item>find</item>
-      <item>flex</item>
-      <item>flex++</item>
-      <item>fmt</item>
-      <item>free</item>
-      <item>ftp</item>
-      <item>funzip</item>
-      <item>fuser</item>
-      <item>g++</item>
-      <item>gawk</item>
-      <item>gc</item>
-      <item>gcc</item>
-      <item>gdb</item>
-      <item>getent</item>
-      <item>getopt</item>
-      <item>gettext</item>
-      <item>gettextize</item>
-      <item>gimp</item>
-      <item>gimp-remote</item>
-      <item>gimptool</item>
-      <item>gmake</item>
-      <item>gs</item>
-      <item>head</item>
-      <item>hexdump</item>
-      <item>id</item>
-      <item>install</item>
-      <item>join</item>
-      <item>kill</item>
-      <item>killall</item>
-      <item>ld</item>
-      <item>ld86</item>
-      <item>ldd</item>
-      <item>less</item>
-      <item>lex</item>
-      <item>ln</item>
-      <item>locate</item>
-      <item>lockfile</item>
-      <item>logname</item>
-      <item>lp</item>
-      <item>lpr</item>
-      <item>ls</item>
-      <item>lynx</item>
-      <item>m4</item>
-      <item>make</item>
-      <item>man</item>
-      <item>mkdir</item>
-      <item>mknod</item>
-      <item>msgfmt</item>
-      <item>mv</item>
-      <item>namei</item>
-      <item>nasm</item>
-      <item>nawk</item>
-      <item>nice</item>
-      <item>nl</item>
-      <item>nm</item>
-      <item>nm86</item>
-      <item>nmap</item>
-      <item>nohup</item>
-      <item>nop</item>
-      <item>od</item>
-      <item>passwd</item>
-      <item>patch</item>
-      <item>pcregrep</item>
-      <item>pcretest</item>
-      <item>perl</item>
-      <item>perror</item>
-      <item>pidof</item>
-      <item>pr</item>
       <item>printf</item>
-      <item>procmail</item>
-      <item>prune</item>
-      <item>ps2ascii</item>
-      <item>ps2epsi</item>
-      <item>ps2frag</item>
-      <item>ps2pdf</item>
-      <item>ps2ps</item>
-      <item>psbook</item>
-      <item>psmerge</item>
-      <item>psnup</item>
-      <item>psresize</item>
-      <item>psselect</item>
-      <item>pstops</item>
-      <item>rcs</item>
-      <item>rev</item>
-      <item>rm</item>
-      <item>scp</item>
-      <item>sed</item>
-      <item>seq</item>
-      <item>setterm</item>
-      <item>shred</item>
-      <item>size</item>
-      <item>size86</item>
-      <item>skill</item>
-      <item>slogin</item>
-      <item>snice</item>
-      <item>sort</item>
-      <item>sox</item>
-      <item>split</item>
-      <item>ssh</item>
-      <item>ssh-add</item>
-      <item>ssh-agent</item>
-      <item>ssh-keygen</item>
-      <item>ssh-keyscan</item>
-      <item>stat</item>
-      <item>strings</item>
-      <item>strip</item>
-      <item>sudo</item>
-      <item>suidperl</item>
-      <item>sum</item>
-      <item>tac</item>
-      <item>tail</item>
-      <item>tee</item>
       <item>test</item>
-      <item>tr</item>
-      <item>uniq</item>
-      <item>unlink</item>
-      <item>unzip</item>
-      <item>updatedb</item>
-      <item>updmap</item>
-      <item>uptime</item>
-      <item>users</item>
-      <item>vmstat</item>
-      <item>w</item>
-      <item>wc</item>
-      <item>wget</item>
-      <item>whatis</item>
-      <item>whereis</item>
-      <item>which</item>
-      <item>who</item>
-      <item>whoami</item>
-      <item>write</item>
-      <item>xargs</item>
-      <item>yacc</item>
-      <item>yes</item>
-      <item>zip</item>
-      <item>zsoelim</item>
-
-      <!-- others -->
-      <item>dcop</item>
-      <item>kdialog</item>
-      <item>kfile</item>
-      <item>xhost</item>
-      <item>xmodmap</item>
-      <item>xset</item>
     </list>
 
 
@@ -463,8 +131,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
@@ -474,7 +141,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
         <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context> -->
 
       <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
@@ -484,7 +151,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
         <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
 
 
diff --git a/xml/texinfo.xml b/xml/texinfo.xml
--- a/xml/texinfo.xml
+++ b/xml/texinfo.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="2" kateversion="2.4">
+<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="3" kateversion="2.4">
 
   <highlighting>
     <!--
@@ -27,15 +27,13 @@
 
       <context name="singleLineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="multiLineComment" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="@end ignore" endRegion="ignore" />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <context name="nodeFolding" attribute="Normal Text" lineEndContext="#stay">
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="6" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="7" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
 <highlighting>
 	<list name="bools">
 		<item>true</item>
@@ -59,8 +59,7 @@
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Comment">
 			<DetectSpaces/>
-			<IncludeRules context="##Alerts" />
-			<IncludeRules context="##Modelines" />
+			<IncludeRules context="##Comments" />
 			<DetectIdentifier/>
 		</context>
 		<!-- Quoted keys and Strings -->
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="5" kateversion="2.4" 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="6" kateversion="2.4" 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>
@@ -188,14 +188,12 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
         <LineContinue attribute="Preprocessor" context="Some Context"/>
@@ -207,7 +205,7 @@
       <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Some Context"/>
 
diff --git a/xml/vhdl.xml b/xml/vhdl.xml
--- a/xml/vhdl.xml
+++ b/xml/vhdl.xml
@@ -8,7 +8,7 @@
   <!ENTITY label     "((&varname;)\s*:\s*)?">
 
 ]>
-<language name="VHDL" version="10" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
+<language name="VHDL" version="11" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
   <highlighting>
     <list name="keywordsToplevel">
       <item>file</item>
@@ -600,8 +600,7 @@
 <!-- other environments -->
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##Alerts"/>
-        <IncludeRules context="##Modelines"/>
+        <IncludeRules context="##Comments"/>
       </context>
 
       <context name="string" attribute="Vector" lineEndContext="#stay">
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="10" kateversion="3.4" 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="11" kateversion="3.4" 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>
@@ -41,8 +41,7 @@
     <DetectSpaces />
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(?:\-(?!-&gt;))+" />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
     <DetectIdentifier />
   </context>
 
diff --git a/xml/xorg.xml b/xml/xorg.xml
--- a/xml/xorg.xml
+++ b/xml/xorg.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="3" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="4" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -35,8 +35,7 @@
 
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
-  <IncludeRules context="##Alerts" />
-  <IncludeRules context="##Modelines" />
+  <IncludeRules context="##Comments" />
   <DetectIdentifier />
  </context>
 </contexts>
diff --git a/xml/xslt.xml b/xml/xslt.xml
--- a/xml/xslt.xml
+++ b/xml/xslt.xml
@@ -52,7 +52,7 @@
 
 -->
 
-<language version="6" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
+<language version="8" 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>
@@ -313,7 +313,7 @@
        <context name="tagname" attribute="Tag" lineEndContext="#stay">
          <keyword attribute="XSLT Tag" context="xattributes" String="keytags" />
          <keyword attribute="XSLT 2.0 Tag" context="xattributes" String="keytags_2.0" />
-         <RegExpr attribute="Attribute" context="attributes" String="\s*" />
+         <DetectSpaces attribute="Attribute" context="attributes" />
          <DetectChar attribute="Tag" context="#pop" char="&gt;" />
        </context>
        
@@ -362,8 +362,7 @@
        <context name="comment" attribute="Comment" lineEndContext="#stay">
          <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
          <RegExpr attribute="Invalid" context="#stay" String="-(-(?!-&gt;))+" />
-         <IncludeRules context="##Alerts" />
-         <IncludeRules context="##Modelines" />
+         <IncludeRules context="##Comments" />
        </context>
 
        <context name="xpath" attribute="XPath" lineEndContext="#stay">
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="7" 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="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">
 
 <highlighting>
    <list name="keywords">
@@ -425,8 +425,7 @@
     <DetectSpaces />
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
     <DetectIdentifier />
   </context>
 
@@ -521,8 +520,7 @@
      <DetectChar attribute="String" context="String 1" char="'"/>
      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/"/>
      <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment"/>
-     <AnyChar attribute="Normal Text" context="(Internal regex catch)" String="=?:" />
-     <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />
+     <AnyChar attribute="Normal Text" context="(Internal regex catch)" String="=?:(" />
      <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
      <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
      <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?[]|~^&#59;"/>
@@ -541,13 +539,13 @@
 
   <context attribute="Comment" lineEndContext="#pop" name="JSComment">
      <DetectSpaces />
-     <IncludeRules context="##Alerts" />
+     <IncludeRules context="##Comments" />
      <DetectIdentifier />
   </context>
   <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
      <DetectSpaces />
      <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="JSBlockComment"/>
-     <IncludeRules context="##Alerts" />
+     <IncludeRules context="##Comments" />
   </context>
   
   <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
@@ -561,7 +559,7 @@
      <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
   </context>
   <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
-     <RegExpr attribute="Normal Text" context="#stay" String="\s*" />
+     <DetectSpaces attribute="Normal Text" context="#stay" />
      <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/" />
      <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment" />
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="7" 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="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">
 
 <highlighting>
 <contexts>
@@ -201,13 +201,11 @@
   <context name="CommentStar" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces />
     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
   </context>
   <context name="CommentSlash" attribute="Comment" lineEndContext="#pop">
     <DetectSpaces />
-    <IncludeRules context="##Alerts" />
-    <IncludeRules context="##Modelines" />
+    <IncludeRules context="##Comments" />
   </context>
 
   <context name="StringOrChar" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/yaml.xml b/xml/yaml.xml
--- a/xml/yaml.xml
+++ b/xml/yaml.xml
@@ -37,7 +37,7 @@
 <!-- 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="8" kateversion="5.0" section="Markup"
+<language name="YAML" version="9" 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>
@@ -323,8 +323,7 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <!-- Values -->
diff --git a/xml/zsh.xml b/xml/zsh.xml
--- a/xml/zsh.xml
+++ b/xml/zsh.xml
@@ -8,7 +8,7 @@
         <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
 ]>
-<language name="Zsh" version="5" kateversion="2.4" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">
+<language name="Zsh" version="8" kateversion="5.53" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">
 
 <!-- (c) 2011 by Jonathan Kolberg (bulldog98@kubuntu-de.org)
   modified for zsh -->
@@ -149,358 +149,7 @@
     </list>
 
     <list name="unixcommands">
-      <!-- /bin -->
-      <item>arch</item>
-      <item>awk</item>
-      <item>bash</item>
-      <item>bunzip2</item>
-      <item>bzcat</item>
-      <item>bzcmp</item>
-      <item>bzdiff</item>
-      <item>bzegrep</item>
-      <item>bzfgrep</item>
-      <item>bzgrep</item>
-      <item>bzip2</item>
-      <item>bzip2recover</item>
-      <item>bzless</item>
-      <item>bzmore</item>
-      <item>cat</item>
-      <item>chattr</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chvt</item>
-      <item>cp</item>
-      <item>date</item>
-      <item>dd</item>
-      <item>deallocvt</item>
-      <item>df</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>dmesg</item>
-      <item>dnsdomainname</item>
-      <item>domainname</item>
-      <item>du</item>
-      <item>dumpkeys</item>
-      <item>echo</item>
-      <item>ed</item>
-      <item>egrep</item>
-      <item>false</item>
-      <item>fgconsole</item>
-      <item>fgrep</item>
-      <item>fuser</item>
-      <item>gawk</item>
-      <item>getkeycodes</item>
-      <item>gocr</item>
-      <item>grep</item>
-      <item>groff</item>
-      <item>groups</item>
-      <item>gunzip</item>
-      <item>gzexe</item>
-      <item>gzip</item>
-      <item>hostname</item>
-      <item>igawk</item>
-      <item>install</item>
-      <item>kbd_mode</item>
-      <item>kbdrate</item>
-      <item>killall</item>
-      <item>last</item>
-      <item>lastb</item>
-      <item>link</item>
-      <item>ln</item>
-      <item>loadkeys</item>
-      <item>loadunimap</item>
-      <item>login</item>
-      <item>ls</item>
-      <item>lsattr</item>
-      <item>lsmod</item>
-      <item>lsmod.old</item>
-      <item>lzcat</item>
-      <item>lzcmp</item>
-      <item>lzdiff</item>
-      <item>lzegrep</item>
-      <item>lzfgrep</item>
-      <item>lzgrep</item>
-      <item>lzless</item>
-      <item>lzcat</item>
-      <item>lzma</item>
-      <item>lzmainfo</item>
-      <item>lzmore</item>
-      <item>mapscrn</item>
-      <item>mesg</item>
-      <item>mkdir</item>
-      <item>mkfifo</item>
-      <item>mknod</item>
-      <item>mktemp</item>
-      <item>more</item>
-      <item>mount</item>
-      <item>mv</item>
-      <item>nano</item>
-      <item>netstat</item>
-      <item>nisdomainname</item>
-      <item>nroff</item>
-      <item>openvt</item>
-      <item>pgawk</item>
-      <item>pidof</item>
-      <item>ping</item>
-      <item>ps</item>
-      <item>pstree</item>
-      <item>pwd</item>
-      <item>rbash</item>
-      <item>readlink</item>
-      <item>red</item>
-      <item>resizecons</item>
-      <item>rm</item>
-      <item>rmdir</item>
-      <item>run-parts</item>
-      <item>sash</item>
-      <item>sed</item>
-      <item>setfont</item>
-      <item>setkeycodes</item>
-      <item>setleds</item>
-      <item>setmetamode</item>
-      <item>setserial</item>
-      <item>sh</item>
-      <item>showkey</item>
-      <item>shred</item>
-      <item>sleep</item>
-      <item>ssed</item>
-      <item>stat</item>
-      <item>stty</item>
-      <item>su</item>
-      <item>sync</item>
-      <item>tar</item>
-      <item>tempfile</item>
-      <item>touch</item>
-      <item>troff</item>
-      <item>true</item>
-      <item>umount</item>
-      <item>uname</item>
-      <item>unicode_start</item>
-      <item>unicode_stop</item>
-      <item>unlink</item>
-      <item>unlzma</item>
-      <item>unxz</item>
-      <item>utmpdump</item>
-      <item>uuidgen</item>
-      <item>vdir</item>
-      <item>wall</item>
-      <item>wc</item>
-      <item>xz</item>
-      <item>xzcat</item>
-      <item>ypdomainname</item>
-      <item>zcat</item>
-      <item>zcmp</item>
-      <item>zdiff</item>
-      <item>zegrep</item>
-      <item>zfgrep</item>
-      <item>zforce</item>
-      <item>zgrep</item>
-      <item>zless</item>
-      <item>zmore</item>
-      <item>znew</item>
-      <item>zsh</item>
-
-      <!-- some from /usr/bin -->
-      <item>aclocal</item>
-      <item>aconnect</item>
-      <item>aplay</item>
-      <item>apm</item>
-      <item>apmsleep</item>
-      <item>apropos</item>
-      <item>ar</item>
-      <item>arecord</item>
-      <item>as</item>
-      <item>as86</item>
-      <item>autoconf</item>
-      <item>autoheader</item>
-      <item>automake</item>
-      <item>awk</item>
-      <item>basename</item>
-      <item>bc</item>
-      <item>bison</item>
-      <item>c++</item>
-      <item>cal</item>
-      <item>cat</item>
-      <item>cc</item>
-      <item>cdda2wav</item>
-      <item>cdparanoia</item>
-      <item>cdrdao</item>
-      <item>cd-read</item>
-      <item>cdrecord</item>
-      <item>chfn</item>
-      <item>chgrp</item>
-      <item>chmod</item>
-      <item>chown</item>
-      <item>chroot</item>
-      <item>chsh</item>
-      <item>clear</item>
-      <item>cmp</item>
-      <item>co</item>
-      <item>col</item>
-      <item>comm</item>
-      <item>cp</item>
-      <item>cpio</item>
-      <item>cpp</item>
-      <item>cut</item>
-      <item>dc</item>
-      <item>dd</item>
-      <item>df</item>
-      <item>diff</item>
-      <item>diff3</item>
-      <item>dir</item>
-      <item>dircolors</item>
-      <item>directomatic</item>
-      <item>dirname</item>
-      <item>du</item>
-      <item>env</item>
-      <item>expr</item>
-      <item>fbset</item>
-      <item>file</item>
-      <item>find</item>
-      <item>flex</item>
-      <item>flex++</item>
-      <item>fmt</item>
-      <item>free</item>
-      <item>ftp</item>
-      <item>funzip</item>
-      <item>fuser</item>
-      <item>g++</item>
-      <item>gawk</item>
-      <item>gc</item>
-      <item>gcc</item>
-      <item>gdb</item>
-      <item>getent</item>
-      <item>getopt</item>
-      <item>gettext</item>
-      <item>gettextize</item>
-      <item>gimp</item>
-      <item>gimp-remote</item>
-      <item>gimptool</item>
-      <item>gmake</item>
-      <item>gs</item>
-      <item>head</item>
-      <item>hexdump</item>
-      <item>id</item>
-      <item>install</item>
-      <item>join</item>
-      <item>kill</item>
-      <item>killall</item>
-      <item>ld</item>
-      <item>ld86</item>
-      <item>ldd</item>
-      <item>less</item>
-      <item>lex</item>
-      <item>ln</item>
-      <item>locate</item>
-      <item>lockfile</item>
-      <item>logname</item>
-      <item>lp</item>
-      <item>lpr</item>
-      <item>ls</item>
-      <item>lynx</item>
-      <item>m4</item>
-      <item>make</item>
-      <item>man</item>
-      <item>mkdir</item>
-      <item>mknod</item>
-      <item>msgfmt</item>
-      <item>mv</item>
-      <item>namei</item>
-      <item>nasm</item>
-      <item>nawk</item>
-      <item>nice</item>
-      <item>nl</item>
-      <item>nm</item>
-      <item>nm86</item>
-      <item>nmap</item>
-      <item>nohup</item>
-      <item>nop</item>
-      <item>od</item>
-      <item>passwd</item>
-      <item>patch</item>
-      <item>pcregrep</item>
-      <item>pcretest</item>
-      <item>perl</item>
-      <item>perror</item>
-      <item>pidof</item>
-      <item>pr</item>
-      <item>printf</item>
-      <item>procmail</item>
-      <item>prune</item>
-      <item>ps2ascii</item>
-      <item>ps2epsi</item>
-      <item>ps2frag</item>
-      <item>ps2pdf</item>
-      <item>ps2ps</item>
-      <item>psbook</item>
-      <item>psmerge</item>
-      <item>psnup</item>
-      <item>psresize</item>
-      <item>psselect</item>
-      <item>pstops</item>
-      <item>rcs</item>
-      <item>rev</item>
-      <item>rm</item>
-      <item>scp</item>
-      <item>sed</item>
-      <item>seq</item>
-      <item>setterm</item>
-      <item>shred</item>
-      <item>size</item>
-      <item>size86</item>
-      <item>skill</item>
-      <item>slogin</item>
-      <item>snice</item>
-      <item>sort</item>
-      <item>sox</item>
-      <item>split</item>
-      <item>ssh</item>
-      <item>ssh-add</item>
-      <item>ssh-agent</item>
-      <item>ssh-keygen</item>
-      <item>ssh-keyscan</item>
-      <item>stat</item>
-      <item>strings</item>
-      <item>strip</item>
-      <item>sudo</item>
-      <item>suidperl</item>
-      <item>sum</item>
-      <item>tac</item>
-      <item>tail</item>
-      <item>tee</item>
-      <item>test</item>
-      <item>tr</item>
-      <item>uniq</item>
-      <item>unlink</item>
-      <item>unzip</item>
-      <item>updatedb</item>
-      <item>updmap</item>
-      <item>uptime</item>
-      <item>users</item>
-      <item>vmstat</item>
-      <item>w</item>
-      <item>wc</item>
-      <item>wget</item>
-      <item>whatis</item>
-      <item>whereis</item>
-      <item>which</item>
-      <item>who</item>
-      <item>whoami</item>
-      <item>write</item>
-      <item>xargs</item>
-      <item>yacc</item>
-      <item>yes</item>
-      <item>zip</item>
-      <item>zsoelim</item>
-
-      <!-- others -->
-      <item>dcop</item>
-      <item>kdialog</item>
-      <item>kfile</item>
-      <item>xhost</item>
-      <item>xmodmap</item>
-      <item>xset</item>
+      <include>unixcommands##Bash</include>
     </list>
 
 
@@ -535,8 +184,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <DetectSpaces />
-        <IncludeRules context="##Alerts" />
-        <IncludeRules context="##Modelines" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
@@ -546,7 +194,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="CommentParen">
         <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
 
       <!-- FindCommentsBackq consumes shell comments till EOL or a backquote -->
@@ -556,7 +204,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
         <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" />
-        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Comments" />
       </context>
 
 
@@ -900,7 +548,7 @@
         <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
         <RegExpr attribute="Redirection" context="HereDocQ"   String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
         <RegExpr attribute="Redirection" context="HereDocNQ"  String="(&lt;&lt;\s*(&word;))" lookAhead="true" />
-        <StringDetect attribute="Redirection" context="#pop"  String="&lt;&lt;" /><!-- always met -->
+        <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;" /><!-- always met -->
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder">
@@ -908,23 +556,23 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%2\b" dynamic="true" column="0"/>
         <IncludeRules context="FindSubstitutions" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
         <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true">
-        <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" />
         <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2\b" dynamic="true" column="0"/>
         <IncludeRules context="FindSubstitutions" />
       </context>
