diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,17 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.8.3 -- 2019-11-26
+
+  * Update XML syntax definitions for c, cmake, coffee, cpp, css,
+    diff, djangotemplate, elixir, elm, glsl, haskell, html, isocpp,
+    javascript-react, javascript, json, jsp, julia, latex, lua,
+    markdown, matlab, mediawiki, modelines, mustache, perl, php,
+    powershell, qml, rest, rust, typescript, vhdl.
+
+  * Fix highlighting errors with non-ASCII characters in JSON (#90).
+    This error was due to an optimization that made some incorrect
+    assumptions.
+
 ## 0.8.2.3 -- 2019-10-03
 
   * Tests: ensure we read test files as UTF-8.
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.8.2.3
+version:             0.8.3
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Skylighting/Tokenizer.hs b/src/Skylighting/Tokenizer.hs
--- a/src/Skylighting/Tokenizer.hs
+++ b/src/Skylighting/Tokenizer.hs
@@ -390,15 +390,15 @@
 normalChunk :: TokenizerM Text
 normalChunk = do
   inp <- gets input
-  case BS.uncons inp of
+  case UTF8.uncons inp of
     Nothing -> mzero
     Just (c, _)
       | c == ' ' ->
         let bs = BS.takeWhile (==' ') inp
         in  takeChars (BS.length bs)
       | isAscii c && isAlphaNum c ->
-        let bs = BS.takeWhile isAlphaNum inp
-        in  takeChars (BS.length bs)
+        let (bs, _) = UTF8.span isAlphaNum inp
+        in  takeChars (UTF8.length bs)
       | otherwise -> takeChars 1
 
 includeRules :: Maybe TokenType -> ContextName -> ByteString
diff --git a/test/expected/abc.julia.native b/test/expected/abc.julia.native
--- a/test/expected/abc.julia.native
+++ b/test/expected/abc.julia.native
@@ -1,35 +1,53 @@
 [ [ ( KeywordTok , "function" )
-  , ( NormalTok , " abc (str, list)" )
+  , ( NormalTok , " abc (str" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " list)" )
   ]
-, [ ( NormalTok , "  isempty(str) && " )
+, [ ( NormalTok , "  isempty(str) " )
+  , ( OperatorTok , "&&" )
+  , ( NormalTok , " " )
   , ( KeywordTok , "return" )
-  , ( NormalTok , " true" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "true" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "for" )
-  , ( NormalTok , " i = " )
+  , ( NormalTok , " i " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
   , ( FloatTok , "1" )
-  , ( NormalTok , ":length(list)" )
+  , ( OperatorTok , ":" )
+  , ( NormalTok , "length(list)" )
   ]
 , [ ( NormalTok , "    str[" )
   , ( KeywordTok , "end" )
   , ( NormalTok , "] " )
   , ( KeywordTok , "in" )
-  , ( NormalTok , " list[i] && " )
+  , ( NormalTok , " list[i] " )
+  , ( OperatorTok , "&&" )
+  , ( NormalTok , " " )
   ]
 , [ ( NormalTok , "    any([abc(str[" )
   , ( FloatTok , "1" )
-  , ( NormalTok , ":" )
+  , ( OperatorTok , ":" )
   , ( KeywordTok , "end" )
-  , ( NormalTok , "-" )
+  , ( OperatorTok , "-" )
   , ( FloatTok , "1" )
-  , ( NormalTok , "], deleteat!(copy(list), i))]) &&" )
+  , ( NormalTok , "]" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " deleteat" )
+  , ( OperatorTok , "!" )
+  , ( NormalTok , "(copy(list)" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " i))]) " )
+  , ( OperatorTok , "&&" )
   ]
 , [ ( NormalTok , "    " )
   , ( KeywordTok , "return" )
-  , ( NormalTok , " true" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "true" )
   ]
 , [ ( NormalTok , "  " ) , ( KeywordTok , "end" ) ]
-, [ ( NormalTok , "  false" ) ]
+, [ ( NormalTok , "  " ) , ( ExtensionTok , "false" ) ]
 , [ ( KeywordTok , "end" ) ]
 ]
diff --git a/test/expected/abc.matlab.native b/test/expected/abc.matlab.native
--- a/test/expected/abc.matlab.native
+++ b/test/expected/abc.matlab.native
@@ -1,111 +1,307 @@
-[ [ ( NormalTok , "function testABC" ) ]
-, [ ( NormalTok , "    combos = [" )
-  , ( StringTok , "'BO'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'XK'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'DQ'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'CP'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'NA'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'GT'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'RE'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'TG'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'QD'" )
-  , ( NormalTok , " ; ..." )
+[ [ ( KeywordTok , "function" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "testABC" )
   ]
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " [" )
+  , ( SpecialStringTok , "'BO'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'XK'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'DQ'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'CP'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'NA'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'GT'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'RE'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'TG'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'QD'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "..." )
+  ]
 , [ ( NormalTok , "        " )
-  , ( StringTok , "'FS'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'JW'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'HU'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'VI'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'AN'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'OB'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'ER'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'FS'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'LY'" )
-  , ( NormalTok , " ; ..." )
+  , ( SpecialStringTok , "'FS'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'JW'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'HU'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'VI'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'AN'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'OB'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'ER'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'FS'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'LY'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "..." )
   ]
 , [ ( NormalTok , "        " )
-  , ( StringTok , "'PC'" )
-  , ( NormalTok , " ; " )
-  , ( StringTok , "'ZM'" )
-  , ( NormalTok , "];" )
+  , ( SpecialStringTok , "'PC'" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ";" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'ZM'" )
+  , ( NormalTok , "]" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    words = {" )
-  , ( StringTok , "'A'" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "words" )
   , ( NormalTok , " " )
-  , ( StringTok , "'BARK'" )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " {" )
+  , ( SpecialStringTok , "'A'" )
   , ( NormalTok , " " )
-  , ( StringTok , "'BOOK'" )
+  , ( SpecialStringTok , "'BARK'" )
   , ( NormalTok , " " )
-  , ( StringTok , "'TREAT'" )
+  , ( SpecialStringTok , "'BOOK'" )
   , ( NormalTok , " " )
-  , ( StringTok , "'COMMON'" )
+  , ( SpecialStringTok , "'TREAT'" )
   , ( NormalTok , " " )
-  , ( StringTok , "'SQUAD'" )
+  , ( SpecialStringTok , "'COMMON'" )
   , ( NormalTok , " " )
-  , ( StringTok , "'CONFUSE'" )
-  , ( NormalTok , "};" )
+  , ( SpecialStringTok , "'SQUAD'" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "'CONFUSE'" )
+  , ( NormalTok , "}" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    for k = " )
+, [ ( NormalTok , "    " )
+  , ( KeywordTok , "for" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "k" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
   , ( FloatTok , "1" )
-  , ( NormalTok , ":length(words)" )
+  , ( OperatorTok , ":" )
+  , ( VariableTok , "length" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "words" )
+  , ( NormalTok , ")" )
   ]
-, [ ( NormalTok
-    , "        possible = canMakeWord(words{k}, combos);"
-    )
+, [ ( NormalTok , "        " )
+  , ( VariableTok , "possible" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "canMakeWord" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "words" )
+  , ( NormalTok , "{" )
+  , ( VariableTok , "k" )
+  , ( NormalTok , "}" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "        fprintf(" )
-  , ( StringTok , "'Can%s make word %s.\\n'" )
-  , ( NormalTok , ", char(~possible.*" )
-  , ( StringTok , "'NOT'" )
-  , ( NormalTok , "), words{k})" )
+, [ ( NormalTok , "        " )
+  , ( VariableTok , "fprintf" )
+  , ( NormalTok , "(" )
+  , ( SpecialStringTok , "'Can%s make word %s.\\n'" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( VariableTok , "char" )
+  , ( NormalTok , "(" )
+  , ( OperatorTok , "~" )
+  , ( VariableTok , "possible" )
+  , ( OperatorTok , ".*" )
+  , ( SpecialStringTok , "'NOT'" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( VariableTok , "words" )
+  , ( NormalTok , "{" )
+  , ( VariableTok , "k" )
+  , ( NormalTok , "})" )
   ]
-, [ ( NormalTok , "    end" ) ]
-, [ ( NormalTok , "end" ) ]
+, [ ( NormalTok , "    " ) , ( KeywordTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
-, [ ( NormalTok
-    , "function isPossible = canMakeWord(word, combos)"
-    )
+, [ ( KeywordTok , "function" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "isPossible" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "canMakeWord" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "word" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , ")" )
   ]
-, [ ( NormalTok , "    word = lower(word);" ) ]
-, [ ( NormalTok , "    combos = lower(combos);" ) ]
-, [ ( NormalTok , "    isPossible = true;" ) ]
-, [ ( NormalTok , "    k = " )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "word" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "lower" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "word" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , ";" )
+  ]
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "lower" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , ";" )
+  ]
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "isPossible" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "true" )
+  , ( OperatorTok , ";" )
+  ]
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "k" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
   , ( FloatTok , "1" )
-  , ( NormalTok , ";" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    while isPossible && k <= length(word)" ) ]
-, [ ( NormalTok , "        [r, c] = find(combos == word(k), " )
+, [ ( NormalTok , "    " )
+  , ( KeywordTok , "while" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "isPossible" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "&&" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "k" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "<=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "length" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "word" )
+  , ( NormalTok , ")" )
+  ]
+, [ ( NormalTok , "        [" )
+  , ( VariableTok , "r" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( VariableTok , "c" )
+  , ( NormalTok , "] " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "find" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "==" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "word" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "k" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
   , ( FloatTok , "1" )
-  , ( NormalTok , ");" )
+  , ( NormalTok , ")" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "        if ~isempty(r)" ) ]
-, [ ( NormalTok , "            combos(r, :) = " )
-  , ( StringTok , "''" )
-  , ( NormalTok , ";" )
+, [ ( NormalTok , "        " )
+  , ( KeywordTok , "if" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "~" )
+  , ( VariableTok , "isempty" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "r" )
+  , ( NormalTok , ")" )
   ]
-, [ ( NormalTok , "        else" ) ]
-, [ ( NormalTok , "            isPossible = false;" ) ]
-, [ ( NormalTok , "        end" ) ]
-, [ ( NormalTok , "        k = k+" )
+, [ ( NormalTok , "            " )
+  , ( VariableTok , "combos" )
+  , ( NormalTok , "(" )
+  , ( VariableTok , "r" )
+  , ( OperatorTok , "," )
+  , ( NormalTok , " " )
+  , ( OperatorTok , ":" )
+  , ( NormalTok , ") " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( SpecialStringTok , "''" )
+  , ( OperatorTok , ";" )
+  ]
+, [ ( NormalTok , "        " ) , ( KeywordTok , "else" ) ]
+, [ ( NormalTok , "            " )
+  , ( VariableTok , "isPossible" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "false" )
+  , ( OperatorTok , ";" )
+  ]
+, [ ( NormalTok , "        " ) , ( KeywordTok , "end" ) ]
+, [ ( NormalTok , "        " )
+  , ( VariableTok , "k" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "k" )
+  , ( OperatorTok , "+" )
   , ( FloatTok , "1" )
-  , ( NormalTok , ";" )
+  , ( OperatorTok , ";" )
   ]
-, [ ( NormalTok , "    end" ) ]
-, [ ( NormalTok , "end" ) ]
+, [ ( NormalTok , "    " ) , ( KeywordTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 ]
diff --git a/test/expected/life.lua.native b/test/expected/life.lua.native
--- a/test/expected/life.lua.native
+++ b/test/expected/life.lua.native
@@ -58,7 +58,7 @@
   , ( KeywordTok , "<i" )
   , ( OtherTok , ") do end" )
   ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( KeywordTok , "function" )
   , ( NormalTok , " ARRAY2D" )
@@ -124,7 +124,7 @@
   , ( ControlFlowTok , "return" )
   , ( NormalTok , " t" )
   ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( ConstantTok , "_CELLS" )
   , ( NormalTok , " " )
@@ -205,7 +205,7 @@
   ]
 , [ ( NormalTok , "    " ) , ( ControlFlowTok , "end" ) ]
 , [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( CommentTok
     , "-- run the CA and produce the next generation"
@@ -442,7 +442,7 @@
   , ( DecValTok , "1" )
   ]
 , [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( CommentTok , "-- output the array to screen" ) ]
 , [ ( KeywordTok , "function" )
@@ -521,7 +521,7 @@
   , ( NormalTok , "out" )
   , ( OperatorTok , ")" )
   ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( CommentTok , "-- constructor" ) ]
 , [ ( KeywordTok , "function" )
@@ -574,7 +574,7 @@
   , ( ControlFlowTok , "return" )
   , ( NormalTok , " c" )
   ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( CommentTok , "--" ) ]
 , [ ( CommentTok
@@ -976,7 +976,7 @@
   , ( CommentTok , "--delay()\t\t-- no delay" )
   ]
 , [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ]
-, [ ( ControlFlowTok , "end" ) ]
+, [ ( KeywordTok , "end" ) ]
 , []
 , [ ( NormalTok , "LIFE" )
   , ( OperatorTok , "(" )
diff --git a/xml/c.xml b/xml/c.xml
--- a/xml/c.xml
+++ b/xml/c.xml
@@ -5,9 +5,12 @@
     <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]+)*)">
     <!ENTITY exp_float "(?:[eE][+-]?&int;)">
     <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)">
+
+    <!ENTITY ispphash "(?:#|&#37;\:|\?\?=)">
+    <!ENTITY pphash "&ispphash;\s*">
 ]>
 <language name="C" section="Sources"
-          version="6" kateversion="5.0"
+          version="7" kateversion="5.0"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -116,8 +119,8 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
-        <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
+	<RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr context="AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
@@ -126,6 +129,8 @@
         <DetectIdentifier />
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
+        <Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
 
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
@@ -158,19 +163,19 @@
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
-        <RegExpr attribute="Preprocessor" context="Include" String="#\s*(?:include|include_next)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Include" String="&pphash;(?:include|include_next)" insensitive="true" firstNonSpace="true" />
 
         <!-- define, elif, else, endif, error, if, ifdef, ifndef, line, pragma, undef, warning -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Define" String="&pphash;define.*((?=\\))" insensitive="true" firstNonSpace="true" />
 
         <!-- folding for apple style #pragma mark - label -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
 
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="#\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;(?:el(?:se|if)|define|undef|line|error|warning|pragma)" insensitive="true" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&ispphash;\s+[0-9]+" insensitive="true" firstNonSpace="true" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Include">
@@ -203,9 +208,9 @@
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
         <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if)" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
@@ -216,8 +221,8 @@
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
         <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -9,7 +9,7 @@
   Copyright 2004 Alexander Neundorf (neundorf@kde.org)
   Copyright 2005 Dominik Haumann (dhdev@gmx.de)
   Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
-  Copyright 2013-2015,2017-2018 Alex Turbov (i.zaufi@gmail.com)
+  Copyright 2013-2015,2017-2019 Alex Turbov (i.zaufi@gmail.com)
 
  **********************************************************************
  * This library is free software; you can redistribute it and/or      *
@@ -31,7 +31,7 @@
 
 <language
     name="CMake"
-    version="12"
+    version="17"
     kateversion="2.4"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -133,6 +133,7 @@
         <item>target_link_directories</item>
         <item>target_link_libraries</item>
         <item>target_link_options</item>
+        <item>target_precompile_headers</item>
         <item>target_sources</item>
         <item>try_compile</item>
         <item>try_run</item>
@@ -248,6 +249,7 @@
     </list>
     <list name="execute_process_nargs">
       <item>COMMAND</item>
+      <item>COMMAND_ECHO</item>
       <item>ENCODING</item>
       <item>ERROR_FILE</item>
       <item>ERROR_QUIET</item>
@@ -268,6 +270,8 @@
       <item>AUTO</item>
       <item>NONE</item>
       <item>OEM</item>
+      <item>STDERR</item>
+      <item>STDOUT</item>
       <item>UTF8</item>
     </list>
     <list name="file_nargs">
@@ -287,7 +291,9 @@
       <item>FILES_MATCHING</item>
       <item>FILE_PERMISSIONS</item>
       <item>FOLLOW_SYMLINKS</item>
+      <item>FOLLOW_SYMLINK_CHAIN</item>
       <item>GENERATE</item>
+      <item>GET_RUNTIME_DEPENDENCIES</item>
       <item>GLOB</item>
       <item>GLOB_RECURSE</item>
       <item>GUARD</item>
@@ -567,6 +573,8 @@
       <item>LENGTH</item>
       <item>ORDER</item>
       <item>OUTPUT_VARIABLE</item>
+      <item>POP_BACK</item>
+      <item>POP_FRONT</item>
       <item>PREPEND</item>
       <item>REGEX</item>
       <item>REMOVE_AT</item>
@@ -602,10 +610,14 @@
     </list>
     <list name="message_nargs">
       <item>AUTHOR_WARNING</item>
+      <item>DEBUG</item>
       <item>DEPRECATION</item>
       <item>FATAL_ERROR</item>
+      <item>NOTICE</item>
       <item>SEND_ERROR</item>
       <item>STATUS</item>
+      <item>TRACE</item>
+      <item>VERBOSE</item>
       <item>WARNING</item>
     </list>
     <list name="separate_arguments_nargs">
@@ -671,6 +683,7 @@
       <item>RANDOM</item>
       <item>RANDOM_SEED</item>
       <item>REGEX</item>
+      <item>REPEAT</item>
       <item>REPLACE</item>
       <item>REVERSE</item>
       <item>SHA1</item>
@@ -737,6 +750,7 @@
       <item>DEPENDS</item>
       <item>DEPFILE</item>
       <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
       <item>MAIN_DEPENDENCY</item>
       <item>OUTPUT</item>
       <item>POST_BUILD</item>
@@ -757,6 +771,7 @@
       <item>DEPENDS</item>
       <item>DEPFILE</item>
       <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
       <item>SOURCES</item>
       <item>USES_TERMINAL</item>
       <item>VERBATIM</item>
@@ -787,6 +802,7 @@
     </list>
     <list name="add_test_nargs">
       <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
       <item>CONFIGURATIONS</item>
       <item>NAME</item>
       <item>WORKING_DIRECTORY</item>
@@ -1047,6 +1063,12 @@
       <item>PRIVATE</item>
       <item>PUBLIC</item>
     </list>
+    <list name="target_precompile_headers_nargs">
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+      <item>REUSE_FROM</item>
+    </list>
     <list name="target_sources_nargs">
       <item>INTERFACE</item>
       <item>PRIVATE</item>
@@ -1135,6 +1157,7 @@
       <item>TRACK</item>
     </list>
     <list name="ctest_submit_nargs">
+      <item>BUILD_ID</item>
       <item>CDASH_UPLOAD</item>
       <item>CDASH_UPLOAD_TYPE</item>
       <item>FILES</item>
@@ -1144,6 +1167,7 @@
       <item>RETRY_COUNT</item>
       <item>RETRY_DELAY</item>
       <item>RETURN_VALUE</item>
+      <item>SUBMIT_URL</item>
     </list>
     <list name="ctest_test_nargs">
       <item>APPEND</item>
@@ -1214,13 +1238,13 @@
       <item>CMAKE_AR</item>
       <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item>
       <item>CMAKE_ARGC</item>
-      <item>CMAKE_ARGV0</item>
       <item>CMAKE_AUTOGEN_ORIGIN_DEPENDS</item>
       <item>CMAKE_AUTOGEN_PARALLEL</item>
       <item>CMAKE_AUTOGEN_VERBOSE</item>
       <item>CMAKE_AUTOMOC</item>
       <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item>
       <item>CMAKE_AUTOMOC_MOC_OPTIONS</item>
+      <item>CMAKE_AUTOMOC_PATH_PREFIX</item>
       <item>CMAKE_AUTOMOC_RELAXED_MODE</item>
       <item>CMAKE_AUTORCC</item>
       <item>CMAKE_AUTORCC_OPTIONS</item>
@@ -1256,6 +1280,7 @@
       <item>CMAKE_CROSSCOMPILING_EMULATOR</item>
       <item>CMAKE_CTEST_COMMAND</item>
       <item>CMAKE_CUDA_EXTENSIONS</item>
+      <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>
       <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item>
       <item>CMAKE_CUDA_STANDARD</item>
       <item>CMAKE_CUDA_STANDARD_REQUIRED</item>
@@ -1282,16 +1307,19 @@
       <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item>
       <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item>
       <item>CMAKE_ECLIPSE_MAKE_ARGUMENTS</item>
+      <item>CMAKE_ECLIPSE_RESOURCE_ENCODING</item>
       <item>CMAKE_ECLIPSE_VERSION</item>
       <item>CMAKE_EDIT_COMMAND</item>
       <item>CMAKE_ENABLE_EXPORTS</item>
       <item>CMAKE_ERROR_DEPRECATED</item>
       <item>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
       <item>CMAKE_EXECUTABLE_SUFFIX</item>
+      <item>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</item>
       <item>CMAKE_EXE_LINKER_FLAGS</item>
       <item>CMAKE_EXE_LINKER_FLAGS_INIT</item>
       <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
       <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item>
+      <item>CMAKE_EXPORT_PACKAGE_REGISTRY</item>
       <item>CMAKE_EXTRA_GENERATOR</item>
       <item>CMAKE_EXTRA_INCLUDE_FILES</item>
       <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item>
@@ -1305,6 +1333,7 @@
       <item>CMAKE_FIND_PACKAGE_NAME</item>
       <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>
       <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_PACKAGE_PREFER_CONFIG</item>
       <item>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</item>
       <item>CMAKE_FIND_PACKAGE_SORT_DIRECTION</item>
       <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item>
@@ -1314,7 +1343,14 @@
       <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item>
       <item>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</item>
       <item>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</item>
+      <item>CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</item>
+      <item>CMAKE_FIND_USE_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</item>
       <item>CMAKE_FOLDER</item>
+      <item>CMAKE_FRAMEWORK</item>
       <item>CMAKE_FRAMEWORK_PATH</item>
       <item>CMAKE_Fortran_FORMAT</item>
       <item>CMAKE_Fortran_MODDIR_DEFAULT</item>
@@ -1387,6 +1423,7 @@
       <item>CMAKE_INSTALL_OPENMP_LIBRARIES</item>
       <item>CMAKE_INSTALL_PREFIX</item>
       <item>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</item>
+      <item>CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
       <item>CMAKE_INSTALL_RPATH</item>
       <item>CMAKE_INSTALL_RPATH_USE_LINK_PATH</item>
       <item>CMAKE_INSTALL_RUNSTATEDIR</item>
@@ -1426,12 +1463,15 @@
       <item>CMAKE_MAKE_PROGRAM</item>
       <item>CMAKE_MATCH_COUNT</item>
       <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>
+      <item>CMAKE_MESSAGE_INDENT</item>
       <item>CMAKE_MFC_FLAG</item>
       <item>CMAKE_MINIMUM_REQUIRED_VERSION</item>
       <item>CMAKE_MINOR_VERSION</item>
       <item>CMAKE_MODULE_LINKER_FLAGS</item>
       <item>CMAKE_MODULE_LINKER_FLAGS_INIT</item>
       <item>CMAKE_MODULE_PATH</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_MSVC_RUNTIME_LIBRARY</item>
       <item>CMAKE_NETRC</item>
       <item>CMAKE_NETRC_FILE</item>
       <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item>
@@ -1454,6 +1494,8 @@
       <item>CMAKE_PROGRAM_PATH</item>
       <item>CMAKE_PROJECT_DESCRIPTION</item>
       <item>CMAKE_PROJECT_HOMEPAGE_URL</item>
+      <item>CMAKE_PROJECT_INCLUDE</item>
+      <item>CMAKE_PROJECT_INCLUDE_BEFORE</item>
       <item>CMAKE_PROJECT_NAME</item>
       <item>CMAKE_PROJECT_VERSION</item>
       <item>CMAKE_PROJECT_VERSION_MAJOR</item>
@@ -1465,6 +1507,7 @@
       <item>CMAKE_REQUIRED_FLAGS</item>
       <item>CMAKE_REQUIRED_INCLUDES</item>
       <item>CMAKE_REQUIRED_LIBRARIES</item>
+      <item>CMAKE_REQUIRED_LINK_OPTIONS</item>
       <item>CMAKE_REQUIRED_QUIET</item>
       <item>CMAKE_ROOT</item>
       <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item>
@@ -1509,6 +1552,7 @@
       <item>CMAKE_SYSTEM_PROGRAM_PATH</item>
       <item>CMAKE_SYSTEM_VERSION</item>
       <item>CMAKE_Swift_LANGUAGE_VERSION</item>
+      <item>CMAKE_Swift_MODULE_DIRECTORY</item>
       <item>CMAKE_THREAD_LIBS_INIT</item>
       <item>CMAKE_THREAD_PREFER_PTHREAD</item>
       <item>CMAKE_TOOLCHAIN_FILE</item>
@@ -1516,6 +1560,8 @@
       <item>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</item>
       <item>CMAKE_TRY_COMPILE_TARGET_TYPE</item>
       <item>CMAKE_TWEAK_VERSION</item>
+      <item>CMAKE_UNITY_BUILD</item>
+      <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item>
       <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item>
       <item>CMAKE_USE_PTHREADS_INIT</item>
       <item>CMAKE_USE_RELATIVE_PATHS</item>
@@ -1529,6 +1575,7 @@
       <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item>
       <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item>
       <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>
+      <item>CMAKE_VS_JUST_MY_CODE_DEBUGGING</item>
       <item>CMAKE_VS_MSBUILD_COMMAND</item>
       <item>CMAKE_VS_NsightTegra_VERSION</item>
       <item>CMAKE_VS_PLATFORM_NAME</item>
@@ -1552,6 +1599,7 @@
       <item>CMAKE_XCODE_PLATFORM_TOOLSET</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
+      <item>CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
       <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
       <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
@@ -1658,6 +1706,7 @@
       <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item>
       <item>CPACK_IFW_PACKAGE_RESOURCES</item>
       <item>CPACK_IFW_PACKAGE_START_MENU_DIRECTORY</item>
+      <item>CPACK_IFW_PACKAGE_STYLE_SHEET</item>
       <item>CPACK_IFW_PACKAGE_TITLE</item>
       <item>CPACK_IFW_PACKAGE_TITLE_COLOR</item>
       <item>CPACK_IFW_PACKAGE_WATERMARK</item>
@@ -1674,10 +1723,12 @@
       <item>CPACK_IFW_VERBOSE</item>
       <item>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</item>
       <item>CPACK_INSTALLED_DIRECTORIES</item>
+      <item>CPACK_INSTALL_CMAKE_CONFIGURATIONS</item>
       <item>CPACK_INSTALL_CMAKE_PROJECTS</item>
       <item>CPACK_INSTALL_COMMANDS</item>
       <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
       <item>CPACK_INSTALL_SCRIPT</item>
+      <item>CPACK_INSTALL_SCRIPTS</item>
       <item>CPACK_MONOLITHIC_INSTALL</item>
       <item>CPACK_NSIS_COMPRESSOR</item>
       <item>CPACK_NSIS_CONTACT</item>
@@ -1733,6 +1784,7 @@
       <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item>
       <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item>
       <item>CPACK_PACKAGE_NAME</item>
+      <item>CPACK_PACKAGE_RELOCATABLE</item>
       <item>CPACK_PACKAGE_VENDOR</item>
       <item>CPACK_PACKAGE_VERSION</item>
       <item>CPACK_PACKAGE_VERSION_MAJOR</item>
@@ -1908,6 +1960,7 @@
       <item>CTEST_UPDATE_COMMAND</item>
       <item>CTEST_UPDATE_OPTIONS</item>
       <item>CTEST_UPDATE_VERSION_ONLY</item>
+      <item>CTEST_UPDATE_VERSION_OVERRIDE</item>
       <item>CTEST_USE_LAUNCHERS</item>
       <item>CYGWIN</item>
       <item>EXECUTABLE_OUTPUT_PATH</item>
@@ -1990,6 +2043,45 @@
       <item>XCODE</item>
       <item>XCODE_VERSION</item>
     </list>
+
+    <list name="environment-variables">
+      <item>CC</item>
+      <item>CFLAGS</item>
+      <item>CMAKE_APPBUNDLE_PATH</item>
+      <item>CMAKE_BUILD_PARALLEL_LEVEL</item>
+      <item>CMAKE_CONFIG_TYPE</item>
+      <item>CMAKE_FRAMEWORK_PATH</item>
+      <item>CMAKE_GENERATOR</item>
+      <item>CMAKE_GENERATOR_INSTANCE</item>
+      <item>CMAKE_GENERATOR_PLATFORM</item>
+      <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_NO_VERBOSE</item>
+      <item>CMAKE_OSX_ARCHITECTURES</item>
+      <item>CMAKE_PREFIX_PATH</item>
+      <item>CSFLAGS</item>
+      <item>CTEST_INTERACTIVE_DEBUG_MODE</item>
+      <item>CTEST_OUTPUT_ON_FAILURE</item>
+      <item>CTEST_PARALLEL_LEVEL</item>
+      <item>CTEST_PROGRESS_OUTPUT</item>
+      <item>CTEST_USE_LAUNCHERS_DEFAULT</item>
+      <item>CUDACXX</item>
+      <item>CUDAFLAGS</item>
+      <item>CUDAHOSTCXX</item>
+      <item>CXX</item>
+      <item>CXXFLAGS</item>
+      <item>DASHBOARD_TEST_FROM_CTEST</item>
+      <item>DESTDIR</item>
+      <item>FC</item>
+      <item>FFLAGS</item>
+      <item>LDFLAGS</item>
+      <item>MACOSX_DEPLOYMENT_TARGET</item>
+      <item>PATH</item>
+      <item>RC</item>
+      <item>RCFLAGS</item>
+      <item>SWIFTC</item>
+      <item>VERBOSE</item>
+    </list>
     <list name="global-properties">
       <item>ALLOW_DUPLICATE_CUSTOM_TARGETS</item>
       <item>AUTOGEN_SOURCE_GROUP</item>
@@ -2032,6 +2124,7 @@
       <item>XCODE_EMIT_EFFECTIVE_PLATFORM_NAME</item>
     </list>
     <list name="directory-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
       <item>ADDITIONAL_MAKE_CLEAN_FILES</item>
       <item>BINARY_DIR</item>
       <item>BUILDSYSTEM_TARGETS</item>
@@ -2064,6 +2157,7 @@
       <item>VS_STARTUP_PROJECT</item>
     </list>
     <list name="target-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
       <item>ALIASED_TARGET</item>
       <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item>
       <item>ANDROID_API</item>
@@ -2093,6 +2187,7 @@
       <item>AUTOMOC_EXECUTABLE</item>
       <item>AUTOMOC_MACRO_NAMES</item>
       <item>AUTOMOC_MOC_OPTIONS</item>
+      <item>AUTOMOC_PATH_PREFIX</item>
       <item>AUTORCC</item>
       <item>AUTORCC_EXECUTABLE</item>
       <item>AUTORCC_OPTIONS</item>
@@ -2134,6 +2229,7 @@
       <item>DEFINE_SYMBOL</item>
       <item>DEPLOYMENT_ADDITIONAL_FILES</item>
       <item>DEPLOYMENT_REMOTE_DIRECTORY</item>
+      <item>DISABLE_PRECOMPILE_HEADERS</item>
       <item>DOTNET_TARGET_FRAMEWORK_VERSION</item>
       <item>ENABLE_EXPORTS</item>
       <item>EXCLUDE_FROM_ALL</item>
@@ -2168,6 +2264,7 @@
       <item>IMPORT_SUFFIX</item>
       <item>INCLUDE_DIRECTORIES</item>
       <item>INSTALL_NAME_DIR</item>
+      <item>INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
       <item>INSTALL_RPATH</item>
       <item>INSTALL_RPATH_USE_LINK_PATH</item>
       <item>INTERFACE_AUTOUIC_OPTIONS</item>
@@ -2180,6 +2277,7 @@
       <item>INTERFACE_LINK_LIBRARIES</item>
       <item>INTERFACE_LINK_OPTIONS</item>
       <item>INTERFACE_POSITION_INDEPENDENT_CODE</item>
+      <item>INTERFACE_PRECOMPILE_HEADERS</item>
       <item>INTERFACE_SOURCES</item>
       <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item>
       <item>INTERPROCEDURAL_OPTIMIZATION</item>
@@ -2207,6 +2305,7 @@
       <item>MACOSX_FRAMEWORK_INFO_PLIST</item>
       <item>MACOSX_RPATH</item>
       <item>MANUALLY_ADDED_DEPENDENCIES</item>
+      <item>MSVC_RUNTIME_LIBRARY</item>
       <item>NAME</item>
       <item>NO_SONAME</item>
       <item>NO_SYSTEM_FROM_IMPORTED</item>
@@ -2215,6 +2314,8 @@
       <item>PDB_NAME</item>
       <item>PDB_OUTPUT_DIRECTORY</item>
       <item>POSITION_INDEPENDENT_CODE</item>
+      <item>PRECOMPILE_HEADERS</item>
+      <item>PRECOMPILE_HEADERS_REUSE_FROM</item>
       <item>PREFIX</item>
       <item>PRIVATE_HEADER</item>
       <item>PROJECT_LABEL</item>
@@ -2232,7 +2333,14 @@
       <item>STATIC_LIBRARY_FLAGS</item>
       <item>STATIC_LIBRARY_OPTIONS</item>
       <item>SUFFIX</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_MODULE_DIRECTORY</item>
+      <item>Swift_MODULE_NAME</item>
       <item>TYPE</item>
+      <item>UNITY_BUILD</item>
+      <item>UNITY_BUILD_BATCH_SIZE</item>
+      <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item>
+      <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>
       <item>VERSION</item>
       <item>VISIBILITY_INLINES_HIDDEN</item>
       <item>VS_CONFIGURATION_TYPE</item>
@@ -2244,13 +2352,18 @@
       <item>VS_DOTNET_REFERENCES</item>
       <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item>
       <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item>
+      <item>VS_DPI_AWARE</item>
       <item>VS_GLOBAL_KEYWORD</item>
       <item>VS_GLOBAL_PROJECT_TYPES</item>
       <item>VS_GLOBAL_ROOTNAMESPACE</item>
       <item>VS_IOT_EXTENSIONS_VERSION</item>
       <item>VS_IOT_STARTUP_TASK</item>
+      <item>VS_JUST_MY_CODE_DEBUGGING</item>
       <item>VS_KEYWORD</item>
       <item>VS_MOBILE_EXTENSIONS_VERSION</item>
+      <item>VS_NO_SOLUTION_DEPLOY</item>
+      <item>VS_PACKAGE_REFERENCES</item>
+      <item>VS_PROJECT_IMPORT</item>
       <item>VS_SCC_AUXPATH</item>
       <item>VS_SCC_LOCALPATH</item>
       <item>VS_SCC_PROJECTNAME</item>
@@ -2264,10 +2377,13 @@
       <item>WIN32_EXECUTABLE</item>
       <item>WINDOWS_EXPORT_ALL_SYMBOLS</item>
       <item>XCODE_EXPLICIT_FILE_TYPE</item>
+      <item>XCODE_GENERATE_SCHEME</item>
       <item>XCODE_PRODUCT_TYPE</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER</item>
       <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
       <item>XCODE_SCHEME_ARGUMENTS</item>
+      <item>XCODE_SCHEME_DEBUG_AS_ROOT</item>
+      <item>XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
       <item>XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
       <item>XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
       <item>XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
@@ -2308,7 +2424,11 @@
       <item>SKIP_AUTOMOC</item>
       <item>SKIP_AUTORCC</item>
       <item>SKIP_AUTOUIC</item>
+      <item>SKIP_PRECOMPILE_HEADERS</item>
+      <item>SKIP_UNITY_BUILD_INCLUSION</item>
       <item>SYMBOLIC</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_DIAGNOSTICS_FILE</item>
       <item>VS_COPY_TO_OUT_DIR</item>
       <item>VS_DEPLOYMENT_CONTENT</item>
       <item>VS_DEPLOYMENT_LOCATION</item>
@@ -2349,6 +2469,7 @@
       <item>REQUIRED_FILES</item>
       <item>RESOURCE_LOCK</item>
       <item>RUN_SERIAL</item>
+      <item>SKIP_REGULAR_EXPRESSION</item>
       <item>SKIP_RETURN_CODE</item>
       <item>TIMEOUT</item>
       <item>TIMEOUT_AFTER_MATCH</item>
@@ -2375,61 +2496,76 @@
     <list name="generator-expressions">
       <item>0</item>
       <item>1</item>
-      <item>AND</item>
-      <item>ANGLE-R</item>
       <item>BOOL</item>
-      <item>BUILD_INTERFACE</item>
-      <item>COMMA</item>
-      <item>COMPILE_FEATURES</item>
-      <item>COMPILE_LANGUAGE</item>
+      <item>AND</item>
+      <item>OR</item>
+      <item>NOT</item>
+      <item>STREQUAL</item>
+      <item>EQUAL</item>
+      <item>IN_LIST</item>
+      <item>VERSION_LESS</item>
+      <item>VERSION_GREATER</item>
+      <item>VERSION_EQUAL</item>
+      <item>VERSION_LESS_EQUAL</item>
+      <item>VERSION_GREATER_EQUAL</item>
+      <item>TARGET_EXISTS</item>
       <item>CONFIG</item>
-      <item>CXX_COMPILER_ID</item>
-      <item>CXX_COMPILER_VERSION</item>
+      <item>PLATFORM_ID</item>
       <item>C_COMPILER_ID</item>
+      <item>CXX_COMPILER_ID</item>
+      <item>CUDA_COMPILER_ID</item>
+      <item>Fortran_COMPILER_ID</item>
       <item>C_COMPILER_VERSION</item>
-      <item>EQUAL</item>
-      <item>GENEX_EVAL</item>
+      <item>CXX_COMPILER_VERSION</item>
+      <item>CUDA_COMPILER_VERSION</item>
+      <item>Fortran_COMPILER_VERSION</item>
+      <item>TARGET_POLICY</item>
+      <item>COMPILE_FEATURES</item>
+      <item>COMPILE_LANG_AND_ID</item>
+      <item>COMPILE_LANGUAGE</item>
+      <item>ANGLE-R</item>
+      <item>COMMA</item>
+      <item>SEMICOLON</item>
       <item>IF</item>
-      <item>INSTALL_INTERFACE</item>
-      <item>INSTALL_PREFIX</item>
-      <item>IN_LIST</item>
       <item>JOIN</item>
-      <item>LINK_ONLY</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>FILTER</item>
       <item>LOWER_CASE</item>
-      <item>MAKE_C_IDENTIFIER</item>
-      <item>NOT</item>
-      <item>OR</item>
-      <item>PLATFORM_ID</item>
-      <item>SEMICOLON</item>
-      <item>SHELL_PATH</item>
-      <item>STREQUAL</item>
-      <item>TARGET_BUNDLE_CONTENT_DIR</item>
-      <item>TARGET_BUNDLE_DIR</item>
-      <item>TARGET_EXISTS</item>
+      <item>UPPER_CASE</item>
+      <item>GENEX_EVAL</item>
+      <item>TARGET_GENEX_EVAL</item>
+      <item>TARGET_NAME_IF_EXISTS</item>
       <item>TARGET_FILE</item>
-      <item>TARGET_FILE_DIR</item>
+      <item>TARGET_FILE_BASE_NAME</item>
+      <item>TARGET_FILE_PREFIX</item>
+      <item>TARGET_FILE_SUFFIX</item>
       <item>TARGET_FILE_NAME</item>
-      <item>TARGET_GENEX_EVAL</item>
+      <item>TARGET_FILE_DIR</item>
       <item>TARGET_LINKER_FILE</item>
-      <item>TARGET_LINKER_FILE_DIR</item>
+      <item>TARGET_LINKER_FILE_BASE_NAME</item>
+      <item>TARGET_LINKER_FILE_PREFIX</item>
+      <item>TARGET_LINKER_FILE_SUFFIX</item>
       <item>TARGET_LINKER_FILE_NAME</item>
-      <item>TARGET_NAME</item>
-      <item>TARGET_NAME_IF_EXISTS</item>
-      <item>TARGET_OBJECTS</item>
+      <item>TARGET_LINKER_FILE_DIR</item>
+      <item>TARGET_SONAME_FILE</item>
+      <item>TARGET_SONAME_FILE</item>
+      <item>TARGET_SONAME_FILE_NAME</item>
+      <item>TARGET_SONAME_FILE_DIR</item>
       <item>TARGET_PDB_FILE</item>
-      <item>TARGET_PDB_FILE_DIR</item>
+      <item>TARGET_PDB_FILE_BASE_NAME</item>
       <item>TARGET_PDB_FILE_NAME</item>
-      <item>TARGET_POLICY</item>
+      <item>TARGET_PDB_FILE_DIR</item>
+      <item>TARGET_BUNDLE_DIR</item>
+      <item>TARGET_BUNDLE_CONTENT_DIR</item>
       <item>TARGET_PROPERTY</item>
-      <item>TARGET_SONAME_FILE</item>
-      <item>TARGET_SONAME_FILE_DIR</item>
-      <item>TARGET_SONAME_FILE_NAME</item>
-      <item>UPPER_CASE</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_LESS_EQUAL</item>
+      <item>INSTALL_PREFIX</item>
+      <item>TARGET_NAME</item>
+      <item>LINK_ONLY</item>
+      <item>INSTALL_INTERFACE</item>
+      <item>BUILD_INTERFACE</item>
+      <item>MAKE_C_IDENTIFIER</item>
+      <item>TARGET_OBJECTS</item>
+      <item>SHELL_PATH</item>
     </list>
 
     <contexts>
@@ -2526,6 +2662,7 @@
         <WordDetect String="target_link_directories" insensitive="true" attribute="Command" context="target_link_directories_ctx" />
         <WordDetect String="target_link_libraries" insensitive="true" attribute="Command" context="target_link_libraries_ctx" />
         <WordDetect String="target_link_options" insensitive="true" attribute="Command" context="target_link_options_ctx" />
+        <WordDetect String="target_precompile_headers" insensitive="true" attribute="Command" context="target_precompile_headers_ctx" />
         <WordDetect String="target_sources" insensitive="true" attribute="Command" context="target_sources_ctx" />
         <WordDetect String="try_compile" insensitive="true" attribute="Command" context="try_compile_ctx" />
         <WordDetect String="try_run" insensitive="true" attribute="Command" context="try_run_ctx" />
@@ -2662,11 +2799,18 @@
         <DetectChar attribute="Normal Text" context="execute_process_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op">
+        <DetectChar attribute="Normal Text" context="execute_process_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
         <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
+        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx">
         <DetectChar attribute="Normal Text" context="file_ctx_op" char="(" />
       </context>
@@ -2978,18 +3122,30 @@
         <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx">
         <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx">
         <DetectChar attribute="Normal Text" context="add_definitions_ctx_op" char="(" />
       </context>
@@ -3039,10 +3195,16 @@
         <DetectChar attribute="Normal Text" context="add_test_ctx_op" char="(" />
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op">
+        <DetectChar attribute="Normal Text" context="add_test_ctx_op_nested" char="(" />
         <IncludeRules context="EndCmdPop2" />
         <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op_nested">
+        <IncludeRules context="EndCmdPop" />
+        <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx">
         <DetectChar attribute="Normal Text" context="aux_source_directory_ctx_op" char="(" />
       </context>
@@ -3322,6 +3484,14 @@
         <keyword attribute="Named Args" context="#stay" String="target_link_options_nargs" />
         <IncludeRules context="User Function Args" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx">
+        <DetectChar attribute="Normal Text" context="target_precompile_headers_ctx_op" char="(" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op">
+        <IncludeRules context="EndCmdPop2" />
+        <keyword attribute="Named Args" context="#stay" String="target_precompile_headers_nargs" />
+        <IncludeRules context="User Function Args" />
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx">
         <DetectChar attribute="Normal Text" context="target_sources_ctx_op" char="(" />
       </context>
@@ -3563,6 +3733,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_LIBRARY_DIRS\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_COUNT\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_VERSION_STRING\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b&id_re;_MODULE_NAME\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_POSTFIX\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX\b" />
@@ -3623,6 +3794,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_STANDARD_LIBRARIES\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_&id_re;_VISIBILITY_PRESET\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_ARGV[0-9]+\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_DISABLE_FIND_PACKAGE_&id_re;\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCMAKE_EXE_LINKER_FLAGS_&id_re;\b" />
@@ -3654,7 +3826,7 @@
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_GROUP\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_HIDDEN\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_REQUIRED\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_COMPONENT_&id_re;_DESCRIPTION\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_DESCRIPTION\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_FILE_NAME\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE\b" />
         <RegExpr attribute="Builtin Variable" context="#stay" String="\bCPACK_DEBIAN_&id_re;_PACKAGE_BREAKS\b" />
@@ -3731,11 +3903,28 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
-        <RegExpr attribute="Environment Variable Substitution" context="#stay" String="\$ENV\{\s*[\w-]+\s*\}" />
+        <RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}" />
+        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$ENV\{\s*[\w-]+\s*\}" lookAhead="true" />
         <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />
         <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" />
       </context>
 
+      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
+        <DetectIdentifier />
+        <DetectChar attribute="Environment Variable Substitution" context="EnvVarSubstVar" char="{" />
+        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />
+      </context>
+
+      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubstVar">
+        <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_DIR\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b&id_re;_ROOT\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;\b" />
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\bASM&id_re;FLAGS\b" />
+        <DetectIdentifier />
+        <DetectChar attribute="Environment Variable Substitution" context="#pop#pop" char="}" />
+      </context>
+
       <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
         <IncludeRules context="Detect Builtin Variables" />
         <DetectIdentifier />
@@ -3834,10 +4023,12 @@
       <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
       <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" />
       <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
+      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
       <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />
       <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
+      <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
       <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
+      <itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false" />
       <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" />
       <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" />
       <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
diff --git a/xml/coffee.xml b/xml/coffee.xml
--- a/xml/coffee.xml
+++ b/xml/coffee.xml
@@ -2,8 +2,8 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 
 <language name="CoffeeScript"
-          version="8"
-          kateversion="3.4"
+          version="9"
+          kateversion="5.0"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
           mimetype="text/x-coffeescript;application/x-coffeescript;application/vnd.coffeescript"
diff --git a/xml/cpp.xml b/xml/cpp.xml
--- a/xml/cpp.xml
+++ b/xml/cpp.xml
@@ -11,12 +11,12 @@
 <language
     name="C++"
     section="Sources"
-    version="7"
+    version="8"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.ino;*.pde;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="9"
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -38,7 +38,8 @@
 
 -->
 
-<language name="CSS" version="8" 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="9" 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>
         <list name="properties">
@@ -1258,8 +1259,9 @@
             <item>selection</item>
         </list>
 
-        <list name="pseudoclass-not">
+        <list name="pseudoclass-selector">
             <item>not</item>
+            <item>matches</item>
         </list>
 
         <list name="pseudoclasses-@page">
@@ -1383,8 +1385,8 @@
                 <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
                 <keyword attribute="Value" context="#stay" String="values" />
                 <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3}){1,2}\b" />
-                <RegExpr attribute="Number" context="FindUnits" String="[-+]?[0-9.]+(?![-+])" />
+                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
+                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])" />
                 <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
             </context>
 
@@ -1393,7 +1395,8 @@
             </context>
 
             <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|ch|rem|vw|vh|vm|px|in|cm|mm|pt|pc|deg|rad|grad|turn|ms|s|Hz|kHz)\b)(?![-+])" />
+                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
+                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)(?![-+])" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
@@ -1548,7 +1551,7 @@
 
             <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-not" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
                 <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
                 <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
diff --git a/xml/diff.xml b/xml/diff.xml
--- a/xml/diff.xml
+++ b/xml/diff.xml
@@ -15,7 +15,7 @@
     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
      Fixed folding.
 -->
-<language name="Diff" version="4" kateversion="5.0" section="Other" extensions="*.diff;*patch" mimetype="text/x-patch">
+<language name="Diff" version="5" kateversion="5.0" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
 
   <highlighting>
 
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="3" kateversion="2.4" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="4" 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.
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.0"
+          kateversion="5.53"
           license="LGPLv2+"
           mimetype="text/x-elixir"
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="4">
+          version="5">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
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="1" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
+<language name="Elm" version="2" 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>
@@ -40,7 +40,7 @@
       <context attribute="Normal" lineEndContext="#stay" name="code">
         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />
         <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
-        <WordDetect attribute="Comment" context="documentation" String="{-|" />
+        <StringDetect attribute="Comment" context="documentation" String="{-|" />
 
         <keyword attribute="Keyword"          context="#stay" String="declarations" />
         <keyword attribute="Keyword"          context="#stay" String="letExpressions" />
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;*.frag;*.geom;*.tcs;*.tes" mimetype="text/x-glslsrc" version="3" 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="4" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
 	<highlighting>
 		<list name="keywords">
 			<item>break</item>
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="12" kateversion="3.4" 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="13" 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>
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="7" kateversion="3.4" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="10" 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>
@@ -20,8 +20,19 @@
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
     <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
+    <IncludeRules context="FindSpecialHTMLTags" />
+    <IncludeRules context="FindHTMLTags" />
+    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
+    <IncludeRules context="FindEntityRefs" />
+  </context>
+
+  <!-- This allows you to insert HTML tags in other syntax definitions -->
+  <context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">
     <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
     <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
+  </context>
+
+  <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
     <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
     <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
     <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
@@ -54,8 +65,6 @@
     <RegExpr attribute="Element" context="El Close" String="&lt;/nav\b" insensitive="true" endRegion="nav" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/section\b" insensitive="true" endRegion="section" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
-    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
-    <IncludeRules context="FindEntityRefs" />
   </context>
 
   <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
@@ -230,7 +239,7 @@
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;x-tmpl-mustache&quot;"/>
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;x-tmpl-mustache&apos;"/>
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/mustache&quot;"/>
-    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/mustache&apos;"/>    
+    <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/mustache&apos;"/>
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/x-mustache-template&quot;"/>
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&apos;text/x-mustache-template&apos;"/>
     <StringDetect attribute="Value" context="#pop#pop!MustacheJS" String="&quot;text/x-handlebars-template&quot;"/>
@@ -248,7 +257,7 @@
   </context>
   <context name="JSX content" attribute="Other Text" lineEndContext="#stay">
     <IncludeRules context="Default JS content"/>
-    <IncludeRules context="Normal##JavaScript React" includeAttrib="true"/>
+    <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
   </context>
 
   <context name="TypeScript" attribute="Other Text" lineEndContext="#stay">
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -22,7 +22,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="14"
+    version="17"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -38,6 +38,7 @@
     http://kde-files.org/content/show.php?content=90660
   -->
   <highlighting>
+    <!-- https://en.cppreference.com/w/cpp/keyword -->
     <list name="controlflow">
       <item>break</item>
       <item>case</item>
@@ -55,14 +56,14 @@
       <item>try</item>
       <item>while</item>
     </list>
+
     <list name="keywords">
       <item>alignof</item>
       <item>alignas</item>
       <item>asm</item>
       <item>auto</item>
       <item>class</item>
-      <item>concept</item> <!-- C++20 -->
-      <item>requires</item> <!-- C++20 -->
+      <item>consteval</item> <!-- C++20 -->
       <item>constexpr</item>
       <item>const_cast</item>
       <item>decltype</item>
@@ -70,7 +71,6 @@
       <item>dynamic_cast</item>
       <item>enum</item>
       <item>explicit</item>
-      <item>export</item> <!-- Unused but reserved for future use -->
       <item>false</item>
       <item>final</item> <!-- According N3272 -->
       <item>friend</item>
@@ -110,20 +110,26 @@
       <item>or_eq</item>
       <item>xor</item>
       <item>xor_eq</item>
+      <!-- Concept -->
+      <item>concept</item>
+      <item>requires</item>
       <!-- TM TS -->
-      <!-- <list>atomic_cancel</list>
-      <list>atomic_commit</list>
-      <list>atomic_noexcept</list>
-      <list>synchronized</list>
-      <list>transaction_safe</list>
-      <list>transaction_safe_dynamic</list> -->
-      <!-- module TS -->
-      <!-- <list>import</list>
-      <list>module</list> -->
-      <!-- coroutine TS -->
-      <!-- <list>co_await</list>
-      <list>co_return</list>
-      <list>co_yield</list> -->
+      <!-- <item>atomic_cancel</item>
+      <item>atomic_commit</item>
+      <item>atomic_noexcept</item>
+      <item>synchronized</item>
+      <item>transaction_safe</item>
+      <item>transaction_safe_dynamic</item> -->
+      <!-- module -->
+      <item>import</item>
+      <item>module</item>
+      <item>export</item> <!-- Unused but reserved, keyword since c++20 -->
+      <!-- coroutine -->
+      <item>co_await</item>
+      <item>co_return</item>
+      <item>co_yield</item>
+      <!-- reflexion TS -->
+      <!-- <item>reflexpr</item> -->
     </list>
     <!-- This keyword may appear in InternalsNS context. For example in code:
       details::some_class::template some_templated_static();
@@ -160,9 +166,11 @@
       <item>using</item>
     </list>
 
+    <!-- https://en.cppreference.com/w/cpp/keyword -->
     <list name="types">
       <item>bool</item>
       <item>char</item>
+      <item>char8_t</item> <!-- C++20 -->
       <item>char16_t</item>
       <item>char32_t</item>
       <item>double</item>
@@ -216,7 +224,7 @@
       <item>const</item>
       <item>extern</item>
       <item>mutable</item>
-      <item>register</item>
+      <item>register</item> <!-- The keyword is unused and reserved (c++17) -->
       <item>static</item>
       <item>thread_local</item>
       <item>volatile</item>
@@ -239,7 +247,10 @@
       <item>__func__</item>
       <item>assert</item>
       <item>_Pragma</item>
+      <!-- C++17 -->
       <item>__has_include</item>
+      <!-- C++20 -->
+      <item>__has_cpp_attribute</item>
     </list>
     <list name="InMacro">
       <item>__VA_ARGS__</item>
@@ -283,15 +294,15 @@
         <!-- Match scope regions -->
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+        <Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
+        <Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
         <!-- Match comments -->
         <IncludeRules context="match comments and region markers" />
-        <!-- Match punctuators -->
-        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
-        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match keywords -->
         <IncludeRules context="match keywords" />
         <!-- Match string literals -->
@@ -309,6 +320,9 @@
         <IncludeRules context="match identifier" />
         <!-- Match preprocessor directives -->
         <RegExpr attribute="Preprocessor" context="AfterHash" String="&ispphash;" lookAhead="true" />
+        <!-- Match punctuators -->
+        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
+        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match invalid symbols -->
         <AnyChar attribute="Error" context="#stay" String="$@`" />
       </context>
@@ -505,8 +519,10 @@
 
 
       <context name="Attribute" attribute="Attribute" lineEndContext="#stay">
+        <DetectSpaces/>
         <keyword attribute="Standard Attribute" context="#stay" String="attributes" />
         <Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
+        <StringDetect attribute="Symbol" context="#pop" String=":&gt;:&gt;" /> <!-- Digraph: ]] -->
         <DetectChar attribute="Separator Symbol" context="#stay" char="," />
         <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
@@ -684,6 +700,7 @@
         <AnyChar attribute="Symbol" context="#stay" String="{}" />
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
         <!-- Match numbers -->
         <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
         <!-- Match comments -->
diff --git a/xml/javascript-react.xml b/xml/javascript-react.xml
--- a/xml/javascript-react.xml
+++ b/xml/javascript-react.xml
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-	<!ENTITY simpleName "([a-z][a-z\d]*:)?[a-z][a-z\d]*">
-	<!ENTITY baseName   "([a-zA-Z_\$]|[^[:ascii:]])(([\w\$\-\.]|[^[:ascii:]])*([\w\$]|[^[:ascii:]]))?">
-	<!ENTITY name       "(&baseName;:)?&baseName;">
-	<!ENTITY baseNameWithBound "(\b[a-zA-Z_\$]|[^[:ascii:]])(([\w\$\-\.]|[^[:ascii:]])*([\w\$]|[^[:ascii:]]))?">
-	<!ENTITY nameWithBound     "(&baseNameWithBound;:)?&baseNameWithBound;"> <!-- Use this instead of "\b&name;" -->
+	<!ENTITY simpleName "(?:[a-z][a-z\d]*:)?[a-z][a-z\d]*">
+	<!ENTITY baseName   "(?:[a-zA-Z_\$]|[^[:ascii:]])(?:(?:[\w\$\-\.]|[^[:ascii:]])*(?:[\w\$]|[^[:ascii:]]))?">
+	<!ENTITY name       "(?:&baseName;:)?&baseName;">
+	<!ENTITY baseNameWithBound "(?:\b[a-zA-Z_\$]|[^[:ascii:]])(?:(?:[\w\$\-\.]|[^[:ascii:]])*(?:[\w\$]|[^[:ascii:]]))?">
+	<!ENTITY nameWithBound     "(?:&baseNameWithBound;:)?&baseNameWithBound;"> <!-- Use this instead of "\b&name;" -->
 
 	<!ENTITY simpleTag  "&lt;\s*&simpleName;"> <!-- Element tag -->
-	<!ENTITY tag        "&lt;\s*(&name;|&gt;)">
-	<!ENTITY entref     "&amp;([a-zA-Z\d]+|#\d+|#x[a-fA-F\d]+);">
+	<!ENTITY tag        "&lt;\s*(?:&name;|&gt;)">
+	<!ENTITY entref     "&amp;(?:[a-zA-Z\d]+|#\d+|#x[a-fA-F\d]+);">
 
-	<!ENTITY identifier "([a-zA-Z_$]|[^[:ascii:]])([\w$]|[^[:ascii:]])*">
+	<!ENTITY identifier "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
 ]>
 
 <!--
@@ -36,6 +36,7 @@
     available at: https://github.com/Microsoft/TypeScript-TmLanguage
 
     Change log:
+     * v7 [2019-11-19]: Rename definition "JavaScript React" to "JavaScript React (JSX)".
      * v5 [2019-02-20]: Don't highlight tags within declarations of
                         types, variables, classes and interfaces.
                         Fixes tags after substitutions in templates.
@@ -48,8 +49,8 @@
      * v1 [2018-06-20]: Initial version
 -->
 
-<language name="JavaScript React" version="5" kateversion="5.0" section="Scripts" indenter="cstyle"
-          priority="8" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
+<language name="JavaScript React (JSX)" version="7" kateversion="5.0" section="Scripts" indenter="cstyle"
+          priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
           author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
 
 <highlighting>
@@ -104,7 +105,7 @@
 		<context name="VarDeclaration" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
 			<DetectSpaces />
 			<DetectChar context="#pop!NoTag" attribute="Symbol" char=":" />
-			<RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*([\?!]\s*)?:)" />
+			<RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*(?:[\?!]\s*)?:)" />
 			<AnyChar context="#stay" attribute="Symbol" String="?!" />
 			<IncludeRules context="AllComments" />
 		</context>
@@ -148,13 +149,13 @@
 			<!-- Tag in new line -->
 			<RegExpr context="ValidTag" attribute="Normal Text" String="&tag;" firstNonSpace="true" lookAhead="true" />
 			<!-- Highlight tags only after some keywords -->
-			<RegExpr context="ValidTag" attribute="ControlFlow" String="\b(return|await)\s*(?=&tag;|/\*)" />
-			<RegExpr context="ValidTag" attribute="Module" String="\b(default)\s*(?=&tag;|/\*)" />
-			<RegExpr context="ValidTag" attribute="Reserved" String="\b(yield)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="ControlFlow" String="\b(?:return|await)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Module" String="\b(?:default)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Reserved" String="\b(?:yield)\s*(?=&tag;|/\*)" />
 
 			<!-- Characters before a valid tag -->
 			<RegExpr context="ValidTag" attribute="Special Operators" String="\=&gt;\s*(?=&tag;|/\*)" />
-			<RegExpr context="ValidTag" attribute="Symbol" String="([,\=&gt;:\*\?]|&amp;&amp;|\|\|)\s*(?=&tag;|/\*)" />
+			<RegExpr context="ValidTag" attribute="Symbol" String="(?:[,\=&gt;:\*\?]|&amp;&amp;|\|\|)\s*(?=&tag;|/\*)" />
 			<RegExpr context="ValidTag" attribute="Normal Text" String="[\(\[]\s*(?=&tag;|/\*)" />
 			<!-- The "Object-BeforeTag" context looks for a valid Tag and then sends the "Object" context -->
 			<DetectChar context="Object-BeforeTag" attribute="Symbol" char="{" beginRegion="Brace" />
@@ -200,9 +201,9 @@
 			<RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
 			<!-- Detect non-ASCII character in the tag name (component). This prevents highlighting as Element,
 			     tag names that don't start with a non-ASCII character. -->
-			<RegExpr context="ComponentTagNonASCII" attribute="Component Tag" String="&lt;\s*(?=([a-z][a-z\d]*:)?([a-z][a-z\d]*)?[^[:ascii:]])" beginRegion="ComponentElement" /> <!-- &simpleName; -->
+			<RegExpr context="ComponentTagNonASCII" attribute="Component Tag" String="&lt;\s*(?=(?:[a-z][a-z\d]*:)?(?:[a-z][a-z\d]*)?[^[:ascii:]])" beginRegion="ComponentElement" /> <!-- &simpleName; -->
 			<!-- Element & component tags -->
-			<RegExpr context="ElementTag" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+([^\w\$\-\.]|$)|:([^a-zA-Z_\$]|$))" beginRegion="Element" />
+			<RegExpr context="ElementTag" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+(?:[^\w\$\-\.]|$)|:(?:[^a-zA-Z_\$]|$))" beginRegion="Element" />
 			<RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;" beginRegion="ComponentElement" />
 		</context>
 		<context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-  <!ENTITY identifier "([a-zA-Z_$]|[^[:ascii:]])([\w$]|[^[:ascii:]])*">
+  <!ENTITY identifier "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
 ]>
 <!-- Author: Anders Lund <anders@alweb.dk> //-->
 <!-- Minor changes: Joseph Wenninger <jowenn@kde.org> //-->
 <!-- Full JavaScript 1.0 support by Whitehawk Stormchaser //-->
-<language name="JavaScript" version="11" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+<language name="JavaScript" version="13" 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="">
   <highlighting>
@@ -93,7 +93,7 @@
 
         <Float attribute="Float" context="NoRegExp" />
         <!-- Invalid Binary, Octal or Hex -->
-        <RegExpr attribute="Error" context="NoRegExp" String="\b0(b[01]*[2-9a-z]|o[0-7]*[89a-z]|x[0-9a-f]*[g-z])\w*\b" insensitive="true" />
+        <RegExpr attribute="Error" context="NoRegExp" String="\b0(?:b[01]*[2-9a-z]|o[0-7]*[89a-z]|x[0-9a-f]*[g-z])\w*\b" insensitive="true" />
         <HlCHex attribute="Hex" context="NoRegExp" />
         <RegExpr attribute="Octal" context="NoRegExp" String="\b0[oO][0-7]+" />
         <RegExpr attribute="Binary" context="NoRegExp" String="\b0[bB][01]+" />
@@ -127,7 +127,6 @@
         <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
 
         <DetectChar attribute="Symbol" context="Object" char="{" beginRegion="Brace" />
-        <DetectChar attribute="Symbol" context="Conditional Expression" char="?" />
 
         <Detect2Chars context="#stay" attribute="Special Operators" char="=" char1="&gt;" />
         <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
@@ -149,11 +148,6 @@
         <DetectSpaces/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="Conditional Expression">
-        <DetectChar context="#pop" char=":" />
-        <IncludeRules context="Normal" />
-      </context>
-
       <context attribute="Normal Text" lineEndContext="#stay" name="Object">
         <!-- Mostly required for define: in switch blocks -->
         <keyword attribute="Keyword" String="keywords" />
@@ -180,11 +174,11 @@
         <IncludeRules context="Escape" />
         <DetectChar attribute="String" context="#pop" char="'" />
       </context>
-      
+
       <context attribute="Normal Text" lineEndContext="#stay" name="Escape">
         <LineContinue attribute="Escape" context="#stay" />
         <!-- Hexadecimal, unicode & octal -->
-        <RegExpr attribute="Escape" context="#stay" String="\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
+        <RegExpr attribute="Escape" context="#stay" String="\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u\{[0-9a-fA-F]+\}|[0-3][0-7]{1,2}|[4-7][0-7]|[1-7])" />
         <Detect2Chars attribute="Error" context="#stay" char="\" char1="x" />
         <Detect2Chars attribute="Error" context="#stay" char="\" char1="u" />
         <DetectChar attribute="Escape" context="Character Escape" char="\" />
diff --git a/xml/json.xml b/xml/json.xml
--- a/xml/json.xml
+++ b/xml/json.xml
@@ -12,7 +12,7 @@
  ** http://tools.ietf.org/html/rfc4627
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="3" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="4" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
diff --git a/xml/jsp.xml b/xml/jsp.xml
--- a/xml/jsp.xml
+++ b/xml/jsp.xml
@@ -1,3054 +1,238 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="4" kateversion="2.4" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
-  <highlighting>
-
-    <list name="java-1.4.2-classes">
-      <item>ARG_IN</item>
-      <item>ARG_INOUT</item>
-      <item>ARG_OUT</item>
-      <item>AWTError</item>
-      <item>AWTEvent</item>
-      <item>AWTEventListener</item>
-      <item>AWTEventListenerProxy</item>
-      <item>AWTEventMulticaster</item>
-      <item>AWTException</item>
-      <item>AWTKeyStroke</item>
-      <item>AWTPermission</item>
-      <item>AbstractAction</item>
-      <item>AbstractBorder</item>
-      <item>AbstractButton</item>
-      <item>AbstractCellEditor</item>
-      <item>AbstractCollection</item>
-      <item>AbstractColorChooserPanel</item>
-      <item>AbstractDocument</item>
-      <item>AbstractFormatter</item>
-      <item>AbstractFormatterFactory</item>
-      <item>AbstractInterruptibleChannel</item>
-      <item>AbstractLayoutCache</item>
-      <item>AbstractList</item>
-      <item>AbstractListModel</item>
-      <item>AbstractMap</item>
-      <item>AbstractMethodError</item>
-      <item>AbstractPreferences</item>
-      <item>AbstractSelectableChannel</item>
-      <item>AbstractSelectionKey</item>
-      <item>AbstractSelector</item>
-      <item>AbstractSequentialList</item>
-      <item>AbstractSet</item>
-      <item>AbstractSpinnerModel</item>
-      <item>AbstractTableModel</item>
-      <item>AbstractUndoableEdit</item>
-      <item>AbstractWriter</item>
-      <item>AccessControlContext</item>
-      <item>AccessControlException</item>
-      <item>AccessController</item>
-      <item>AccessException</item>
-      <item>Accessible</item>
-      <item>AccessibleAction</item>
-      <item>AccessibleBundle</item>
-      <item>AccessibleComponent</item>
-      <item>AccessibleContext</item>
-      <item>AccessibleEditableText</item>
-      <item>AccessibleExtendedComponent</item>
-      <item>AccessibleExtendedTable</item>
-      <item>AccessibleHyperlink</item>
-      <item>AccessibleHypertext</item>
-      <item>AccessibleIcon</item>
-      <item>AccessibleKeyBinding</item>
-      <item>AccessibleObject</item>
-      <item>AccessibleRelation</item>
-      <item>AccessibleRelationSet</item>
-      <item>AccessibleResourceBundle</item>
-      <item>AccessibleRole</item>
-      <item>AccessibleSelection</item>
-      <item>AccessibleState</item>
-      <item>AccessibleStateSet</item>
-      <item>AccessibleTable</item>
-      <item>AccessibleTableModelChange</item>
-      <item>AccessibleText</item>
-      <item>AccessibleValue</item>
-      <item>AccountExpiredException</item>
-      <item>Acl</item>
-      <item>AclEntry</item>
-      <item>AclNotFoundException</item>
-      <item>Action</item>
-      <item>ActionEvent</item>
-      <item>ActionListener</item>
-      <item>ActionMap</item>
-      <item>ActionMapUIResource</item>
-      <item>Activatable</item>
-      <item>ActivateFailedException</item>
-      <item>ActivationDesc</item>
-      <item>ActivationException</item>
-      <item>ActivationGroup</item>
-      <item>ActivationGroupDesc</item>
-      <item>ActivationGroupID</item>
-      <item>ActivationGroup_Stub</item>
-      <item>ActivationID</item>
-      <item>ActivationInstantiator</item>
-      <item>ActivationMonitor</item>
-      <item>ActivationSystem</item>
-      <item>Activator</item>
-      <item>ActiveEvent</item>
-      <item>ActiveValue</item>
-      <item>AdapterActivator</item>
-      <item>AdapterActivatorOperations</item>
-      <item>AdapterAlreadyExists</item>
-      <item>AdapterAlreadyExistsHelper</item>
-      <item>AdapterInactive</item>
-      <item>AdapterInactiveHelper</item>
-      <item>AdapterNonExistent</item>
-      <item>AdapterNonExistentHelper</item>
-      <item>AddressHelper</item>
-      <item>Adjustable</item>
-      <item>AdjustmentEvent</item>
-      <item>AdjustmentListener</item>
-      <item>Adler32</item>
-      <item>AffineTransform</item>
-      <item>AffineTransformOp</item>
-      <item>AlgorithmParameterGenerator</item>
-      <item>AlgorithmParameterGeneratorSpi</item>
-      <item>AlgorithmParameterSpec</item>
-      <item>AlgorithmParameters</item>
-      <item>AlgorithmParametersSpi</item>
-      <item>AlignmentAction</item>
-      <item>AllPermission</item>
-      <item>AlphaComposite</item>
-      <item>AlreadyBound</item>
-      <item>AlreadyBoundException</item>
-      <item>AlreadyBoundHelper</item>
-      <item>AlreadyBoundHolder</item>
-      <item>AlreadyConnectedException</item>
-      <item>AncestorEvent</item>
-      <item>AncestorListener</item>
-      <item>Annotation</item>
-      <item>Any</item>
-      <item>AnyHolder</item>
-      <item>AnySeqHelper</item>
-      <item>AnySeqHelper</item>
-      <item>AnySeqHolder</item>
-      <item>AppConfigurationEntry</item>
-      <item>Applet</item>
-      <item>AppletContext</item>
-      <item>AppletInitializer</item>
-      <item>AppletStub</item>
-      <item>ApplicationException</item>
-      <item>Arc2D</item>
-      <item>Area</item>
-      <item>AreaAveragingScaleFilter</item>
-      <item>ArithmeticException</item>
-      <item>Array</item>
-      <item>Array</item>
-      <item>ArrayIndexOutOfBoundsException</item>
-      <item>ArrayList</item>
-      <item>ArrayStoreException</item>
-      <item>Arrays</item>
-      <item>AssertionError</item>
-      <item>AsyncBoxView</item>
-      <item>AsynchronousCloseException</item>
-      <item>Attr</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>Attribute</item>
-      <item>AttributeContext</item>
-      <item>AttributeException</item>
-      <item>AttributeInUseException</item>
-      <item>AttributeList</item>
-      <item>AttributeList</item>
-      <item>AttributeListImpl</item>
-      <item>AttributeModificationException</item>
-      <item>AttributeSet</item>
-      <item>AttributeSet</item>
-      <item>AttributeSetUtilities</item>
-      <item>AttributeUndoableEdit</item>
-      <item>AttributedCharacterIterator</item>
-      <item>AttributedString</item>
-      <item>Attributes</item>
-      <item>Attributes</item>
-      <item>Attributes</item>
-      <item>AttributesImpl</item>
-      <item>AudioClip</item>
-      <item>AudioFileFormat</item>
-      <item>AudioFileReader</item>
-      <item>AudioFileWriter</item>
-      <item>AudioFormat</item>
-      <item>AudioInputStream</item>
-      <item>AudioPermission</item>
-      <item>AudioSystem</item>
-      <item>AuthPermission</item>
-      <item>AuthenticationException</item>
-      <item>AuthenticationNotSupportedException</item>
-      <item>Authenticator</item>
-      <item>Autoscroll</item>
-      <item>BAD_CONTEXT</item>
-      <item>BAD_INV_ORDER</item>
-      <item>BAD_OPERATION</item>
-      <item>BAD_PARAM</item>
-      <item>BAD_POLICY</item>
-      <item>BAD_POLICY_TYPE</item>
-      <item>BAD_POLICY_VALUE</item>
-      <item>BAD_TYPECODE</item>
-      <item>BCSIterator</item>
-      <item>BCSSServiceProvider</item>
-      <item>BYTE_ARRAY</item>
-      <item>BackingStoreException</item>
-      <item>BadKind</item>
-      <item>BadLocationException</item>
-      <item>BadPaddingException</item>
-      <item>BandCombineOp</item>
-      <item>BandedSampleModel</item>
-      <item>BasicArrowButton</item>
-      <item>BasicAttribute</item>
-      <item>BasicAttributes</item>
-      <item>BasicBorders</item>
-      <item>BasicButtonListener</item>
-      <item>BasicButtonUI</item>
-      <item>BasicCaret</item>
-      <item>BasicCheckBoxMenuItemUI</item>
-      <item>BasicCheckBoxUI</item>
-      <item>BasicColorChooserUI</item>
-      <item>BasicComboBoxEditor</item>
-      <item>BasicComboBoxRenderer</item>
-      <item>BasicComboBoxUI</item>
-      <item>BasicComboPopup</item>
-      <item>BasicDesktopIconUI</item>
-      <item>BasicDesktopPaneUI</item>
-      <item>BasicDirectoryModel</item>
-      <item>BasicEditorPaneUI</item>
-      <item>BasicFileChooserUI</item>
-      <item>BasicFormattedTextFieldUI</item>
-      <item>BasicGraphicsUtils</item>
-      <item>BasicHTML</item>
-      <item>BasicHighlighter</item>
-      <item>BasicIconFactory</item>
-      <item>BasicInternalFrameTitlePane</item>
-      <item>BasicInternalFrameUI</item>
-      <item>BasicLabelUI</item>
-      <item>BasicListUI</item>
-      <item>BasicLookAndFeel</item>
-      <item>BasicMenuBarUI</item>
-      <item>BasicMenuItemUI</item>
-      <item>BasicMenuUI</item>
-      <item>BasicOptionPaneUI</item>
-      <item>BasicPanelUI</item>
-      <item>BasicPasswordFieldUI</item>
-      <item>BasicPermission</item>
-      <item>BasicPopupMenuSeparatorUI</item>
-      <item>BasicPopupMenuUI</item>
-      <item>BasicProgressBarUI</item>
-      <item>BasicRadioButtonMenuItemUI</item>
-      <item>BasicRadioButtonUI</item>
-      <item>BasicRootPaneUI</item>
-      <item>BasicScrollBarUI</item>
-      <item>BasicScrollPaneUI</item>
-      <item>BasicSeparatorUI</item>
-      <item>BasicSliderUI</item>
-      <item>BasicSpinnerUI</item>
-      <item>BasicSplitPaneDivider</item>
-      <item>BasicSplitPaneUI</item>
-      <item>BasicStroke</item>
-      <item>BasicTabbedPaneUI</item>
-      <item>BasicTableHeaderUI</item>
-      <item>BasicTableUI</item>
-      <item>BasicTextAreaUI</item>
-      <item>BasicTextFieldUI</item>
-      <item>BasicTextPaneUI</item>
-      <item>BasicTextUI</item>
-      <item>BasicToggleButtonUI</item>
-      <item>BasicToolBarSeparatorUI</item>
-      <item>BasicToolBarUI</item>
-      <item>BasicToolTipUI</item>
-      <item>BasicTreeUI</item>
-      <item>BasicViewportUI</item>
-      <item>BatchUpdateException</item>
-      <item>BeanContext</item>
-      <item>BeanContextChild</item>
-      <item>BeanContextChildComponentProxy</item>
-      <item>BeanContextChildSupport</item>
-      <item>BeanContextContainerProxy</item>
-      <item>BeanContextEvent</item>
-      <item>BeanContextMembershipEvent</item>
-      <item>BeanContextMembershipListener</item>
-      <item>BeanContextProxy</item>
-      <item>BeanContextServiceAvailableEvent</item>
-      <item>BeanContextServiceProvider</item>
-      <item>BeanContextServiceProviderBeanInfo</item>
-      <item>BeanContextServiceRevokedEvent</item>
-      <item>BeanContextServiceRevokedListener</item>
-      <item>BeanContextServices</item>
-      <item>BeanContextServicesListener</item>
-      <item>BeanContextServicesSupport</item>
-      <item>BeanContextSupport</item>
-      <item>BeanDescriptor</item>
-      <item>BeanInfo</item>
-      <item>Beans</item>
-      <item>BeepAction</item>
-      <item>BevelBorder</item>
-      <item>BevelBorderUIResource</item>
-      <item>Bias</item>
-      <item>Bidi</item>
-      <item>BigDecimal</item>
-      <item>BigInteger</item>
-      <item>BinaryRefAddr</item>
-      <item>BindException</item>
-      <item>Binding</item>
-      <item>Binding</item>
-      <item>BindingHelper</item>
-      <item>BindingHolder</item>
-      <item>BindingIterator</item>
-      <item>BindingIteratorHelper</item>
-      <item>BindingIteratorHolder</item>
-      <item>BindingIteratorOperations</item>
-      <item>BindingIteratorPOA</item>
-      <item>BindingListHelper</item>
-      <item>BindingListHolder</item>
-      <item>BindingType</item>
-      <item>BindingTypeHelper</item>
-      <item>BindingTypeHolder</item>
-      <item>BitSet</item>
-      <item>Blob</item>
-      <item>BlockView</item>
-      <item>BoldAction</item>
-      <item>Book</item>
-      <item>Boolean</item>
-      <item>BooleanControl</item>
-      <item>BooleanHolder</item>
-      <item>BooleanSeqHelper</item>
-      <item>BooleanSeqHolder</item>
-      <item>Border</item>
-      <item>BorderFactory</item>
-      <item>BorderLayout</item>
-      <item>BorderUIResource</item>
-      <item>BoundedRangeModel</item>
-      <item>Bounds</item>
-      <item>Bounds</item>
-      <item>Box</item>
-      <item>BoxLayout</item>
-      <item>BoxPainter</item>
-      <item>BoxView</item>
-      <item>BoxedValueHelper</item>
-      <item>BreakIterator</item>
-      <item>Buffer</item>
-      <item>BufferCapabilities</item>
-      <item>BufferOverflowException</item>
-      <item>BufferStrategy</item>
-      <item>BufferUnderflowException</item>
-      <item>BufferedImage</item>
-      <item>BufferedImageFilter</item>
-      <item>BufferedImageOp</item>
-      <item>BufferedInputStream</item>
-      <item>BufferedOutputStream</item>
-      <item>BufferedReader</item>
-      <item>BufferedWriter</item>
-      <item>Button</item>
-      <item>ButtonAreaLayout</item>
-      <item>ButtonBorder</item>
-      <item>ButtonBorder</item>
-      <item>ButtonGroup</item>
-      <item>ButtonModel</item>
-      <item>ButtonUI</item>
-      <item>Byte</item>
-      <item>ByteArrayInputStream</item>
-      <item>ByteArrayOutputStream</item>
-      <item>ByteBuffer</item>
-      <item>ByteChannel</item>
-      <item>ByteHolder</item>
-      <item>ByteLookupTable</item>
-      <item>ByteOrder</item>
-      <item>CDATASection</item>
-      <item>CHAR_ARRAY</item>
-      <item>CMMException</item>
-      <item>COMM_FAILURE</item>
-      <item>CRC32</item>
-      <item>CRL</item>
-      <item>CRLException</item>
-      <item>CRLSelector</item>
-      <item>CSS</item>
-      <item>CTX_RESTRICT_SCOPE</item>
-      <item>Calendar</item>
-      <item>CallableStatement</item>
-      <item>Callback</item>
-      <item>CallbackHandler</item>
-      <item>CancelablePrintJob</item>
-      <item>CancelledKeyException</item>
-      <item>CannotProceed</item>
-      <item>CannotProceedException</item>
-      <item>CannotProceedHelper</item>
-      <item>CannotProceedHolder</item>
-      <item>CannotRedoException</item>
-      <item>CannotUndoException</item>
-      <item>Canvas</item>
-      <item>CardLayout</item>
-      <item>Caret</item>
-      <item>CaretEvent</item>
-      <item>CaretListener</item>
-      <item>CaretPolicy</item>
-      <item>CellEditor</item>
-      <item>CellEditorListener</item>
-      <item>CellRendererPane</item>
-      <item>CertPath</item>
-      <item>CertPathBuilder</item>
-      <item>CertPathBuilderException</item>
-      <item>CertPathBuilderResult</item>
-      <item>CertPathBuilderSpi</item>
-      <item>CertPathParameters</item>
-      <item>CertPathRep</item>
-      <item>CertPathValidator</item>
-      <item>CertPathValidatorException</item>
-      <item>CertPathValidatorResult</item>
-      <item>CertPathValidatorSpi</item>
-      <item>CertSelector</item>
-      <item>CertStore</item>
-      <item>CertStoreException</item>
-      <item>CertStoreParameters</item>
-      <item>CertStoreSpi</item>
-      <item>Certificate</item>
-      <item>Certificate</item>
-      <item>Certificate</item>
-      <item>CertificateEncodingException</item>
-      <item>CertificateEncodingException</item>
-      <item>CertificateException</item>
-      <item>CertificateException</item>
-      <item>CertificateExpiredException</item>
-      <item>CertificateExpiredException</item>
-      <item>CertificateFactory</item>
-      <item>CertificateFactorySpi</item>
-      <item>CertificateNotYetValidException</item>
-      <item>CertificateNotYetValidException</item>
-      <item>CertificateParsingException</item>
-      <item>CertificateParsingException</item>
-      <item>CertificateRep</item>
-      <item>ChangeEvent</item>
-      <item>ChangeListener</item>
-      <item>ChangedCharSetException</item>
-      <item>Channel</item>
-      <item>ChannelBinding</item>
-      <item>Channels</item>
-      <item>CharArrayReader</item>
-      <item>CharArrayWriter</item>
-      <item>CharBuffer</item>
-      <item>CharConversionException</item>
-      <item>CharHolder</item>
-      <item>CharSeqHelper</item>
-      <item>CharSeqHolder</item>
-      <item>CharSequence</item>
-      <item>Character</item>
-      <item>CharacterAttribute</item>
-      <item>CharacterCodingException</item>
-      <item>CharacterConstants</item>
-      <item>CharacterData</item>
-      <item>CharacterIterator</item>
-      <item>Charset</item>
-      <item>CharsetDecoder</item>
-      <item>CharsetEncoder</item>
-      <item>CharsetProvider</item>
-      <item>Checkbox</item>
-      <item>CheckboxGroup</item>
-      <item>CheckboxMenuItem</item>
-      <item>CheckedInputStream</item>
-      <item>CheckedOutputStream</item>
-      <item>Checksum</item>
-      <item>Choice</item>
-      <item>ChoiceCallback</item>
-      <item>ChoiceFormat</item>
-      <item>Chromaticity</item>
-      <item>Cipher</item>
-      <item>CipherInputStream</item>
-      <item>CipherOutputStream</item>
-      <item>CipherSpi</item>
-      <item>Class</item>
-      <item>ClassCastException</item>
-      <item>ClassCircularityError</item>
-      <item>ClassDesc</item>
-      <item>ClassFormatError</item>
-      <item>ClassLoader</item>
-      <item>ClassNotFoundException</item>
-      <item>ClientRequestInfo</item>
-      <item>ClientRequestInfoOperations</item>
-      <item>ClientRequestInterceptor</item>
-      <item>ClientRequestInterceptorOperations</item>
-      <item>Clip</item>
-      <item>Clipboard</item>
-      <item>ClipboardOwner</item>
-      <item>Clob</item>
-      <item>CloneNotSupportedException</item>
-      <item>Cloneable</item>
-      <item>ClosedByInterruptException</item>
-      <item>ClosedChannelException</item>
-      <item>ClosedSelectorException</item>
-      <item>CodeSets</item>
-      <item>CodeSource</item>
-      <item>Codec</item>
-      <item>CodecFactory</item>
-      <item>CodecFactoryHelper</item>
-      <item>CodecFactoryOperations</item>
-      <item>CodecOperations</item>
-      <item>CoderMalfunctionError</item>
-      <item>CoderResult</item>
-      <item>CodingErrorAction</item>
-      <item>CollationElementIterator</item>
-      <item>CollationKey</item>
-      <item>Collator</item>
-      <item>Collection</item>
-      <item>CollectionCertStoreParameters</item>
-      <item>Collections</item>
-      <item>Color</item>
-      <item>ColorAttribute</item>
-      <item>ColorChooserComponentFactory</item>
-      <item>ColorChooserUI</item>
-      <item>ColorConstants</item>
-      <item>ColorConvertOp</item>
-      <item>ColorModel</item>
-      <item>ColorSelectionModel</item>
-      <item>ColorSpace</item>
-      <item>ColorSupported</item>
-      <item>ColorType</item>
-      <item>ColorUIResource</item>
-      <item>ComboBoxEditor</item>
-      <item>ComboBoxModel</item>
-      <item>ComboBoxUI</item>
-      <item>ComboPopup</item>
-      <item>CommandEnvironment</item>
-      <item>Comment</item>
-      <item>CommunicationException</item>
-      <item>Comparable</item>
-      <item>Comparator</item>
-      <item>Compiler</item>
-      <item>CompletionStatus</item>
-      <item>CompletionStatusHelper</item>
-      <item>Component</item>
-      <item>ComponentAdapter</item>
-      <item>ComponentColorModel</item>
-      <item>ComponentEvent</item>
-      <item>ComponentIdHelper</item>
-      <item>ComponentInputMap</item>
-      <item>ComponentInputMapUIResource</item>
-      <item>ComponentListener</item>
-      <item>ComponentOrientation</item>
-      <item>ComponentSampleModel</item>
-      <item>ComponentUI</item>
-      <item>ComponentView</item>
-      <item>Composite</item>
-      <item>CompositeContext</item>
-      <item>CompositeName</item>
-      <item>CompositeView</item>
-      <item>CompoundBorder</item>
-      <item>CompoundBorderUIResource</item>
-      <item>CompoundControl</item>
-      <item>CompoundEdit</item>
-      <item>CompoundName</item>
-      <item>Compression</item>
-      <item>ConcurrentModificationException</item>
-      <item>Configuration</item>
-      <item>ConfigurationException</item>
-      <item>ConfirmationCallback</item>
-      <item>ConnectException</item>
-      <item>ConnectException</item>
-      <item>ConnectIOException</item>
-      <item>Connection</item>
-      <item>ConnectionEvent</item>
-      <item>ConnectionEventListener</item>
-      <item>ConnectionPendingException</item>
-      <item>ConnectionPoolDataSource</item>
-      <item>ConsoleHandler</item>
-      <item>Constraints</item>
-      <item>Constructor</item>
-      <item>Container</item>
-      <item>ContainerAdapter</item>
-      <item>ContainerEvent</item>
-      <item>ContainerListener</item>
-      <item>ContainerOrderFocusTraversalPolicy</item>
-      <item>Content</item>
-      <item>ContentHandler</item>
-      <item>ContentHandler</item>
-      <item>ContentHandlerFactory</item>
-      <item>ContentModel</item>
-      <item>Context</item>
-      <item>Context</item>
-      <item>ContextList</item>
-      <item>ContextNotEmptyException</item>
-      <item>ContextualRenderedImageFactory</item>
-      <item>Control</item>
-      <item>Control</item>
-      <item>ControlFactory</item>
-      <item>ControllerEventListener</item>
-      <item>ConvolveOp</item>
-      <item>CookieHolder</item>
-      <item>Copies</item>
-      <item>CopiesSupported</item>
-      <item>CopyAction</item>
-      <item>CredentialExpiredException</item>
-      <item>CropImageFilter</item>
-      <item>CubicCurve2D</item>
-      <item>Currency</item>
-      <item>Current</item>
-      <item>Current</item>
-      <item>Current</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHelper</item>
-      <item>CurrentHolder</item>
-      <item>CurrentOperations</item>
-      <item>CurrentOperations</item>
-      <item>CurrentOperations</item>
-      <item>Cursor</item>
-      <item>CustomMarshal</item>
-      <item>CustomValue</item>
-      <item>Customizer</item>
-      <item>CutAction</item>
-      <item>DATA_CONVERSION</item>
-      <item>DESKeySpec</item>
-      <item>DESedeKeySpec</item>
-      <item>DGC</item>
-      <item>DHGenParameterSpec</item>
-      <item>DHKey</item>
-      <item>DHParameterSpec</item>
-      <item>DHPrivateKey</item>
-      <item>DHPrivateKeySpec</item>
-      <item>DHPublicKey</item>
-      <item>DHPublicKeySpec</item>
-      <item>DOMException</item>
-      <item>DOMImplementation</item>
-      <item>DOMLocator</item>
-      <item>DOMResult</item>
-      <item>DOMSource</item>
-      <item>DSAKey</item>
-      <item>DSAKeyPairGenerator</item>
-      <item>DSAParameterSpec</item>
-      <item>DSAParams</item>
-      <item>DSAPrivateKey</item>
-      <item>DSAPrivateKeySpec</item>
-      <item>DSAPublicKey</item>
-      <item>DSAPublicKeySpec</item>
-      <item>DTD</item>
-      <item>DTDConstants</item>
-      <item>DTDHandler</item>
-      <item>DataBuffer</item>
-      <item>DataBufferByte</item>
-      <item>DataBufferDouble</item>
-      <item>DataBufferFloat</item>
-      <item>DataBufferInt</item>
-      <item>DataBufferShort</item>
-      <item>DataBufferUShort</item>
-      <item>DataFlavor</item>
-      <item>DataFormatException</item>
-      <item>DataInput</item>
-      <item>DataInputStream</item>
-      <item>DataInputStream</item>
-      <item>DataLine</item>
-      <item>DataOutput</item>
-      <item>DataOutputStream</item>
-      <item>DataOutputStream</item>
-      <item>DataSource</item>
-      <item>DataTruncation</item>
-      <item>DatabaseMetaData</item>
-      <item>DatagramChannel</item>
-      <item>DatagramPacket</item>
-      <item>DatagramSocket</item>
-      <item>DatagramSocketImpl</item>
-      <item>DatagramSocketImplFactory</item>
-      <item>Date</item>
-      <item>Date</item>
-      <item>DateEditor</item>
-      <item>DateFormat</item>
-      <item>DateFormatSymbols</item>
-      <item>DateFormatter</item>
-      <item>DateTimeAtCompleted</item>
-      <item>DateTimeAtCreation</item>
-      <item>DateTimeAtProcessing</item>
-      <item>DateTimeSyntax</item>
-      <item>DebugGraphics</item>
-      <item>DecimalFormat</item>
-      <item>DecimalFormatSymbols</item>
-      <item>DeclHandler</item>
-      <item>DefaultBoundedRangeModel</item>
-      <item>DefaultButtonModel</item>
-      <item>DefaultCaret</item>
-      <item>DefaultCellEditor</item>
-      <item>DefaultColorSelectionModel</item>
-      <item>DefaultComboBoxModel</item>
-      <item>DefaultDesktopManager</item>
-      <item>DefaultEditor</item>
-      <item>DefaultEditorKit</item>
-      <item>DefaultFocusManager</item>
-      <item>DefaultFocusTraversalPolicy</item>
-      <item>DefaultFormatter</item>
-      <item>DefaultFormatterFactory</item>
-      <item>DefaultHandler</item>
-      <item>DefaultHighlightPainter</item>
-      <item>DefaultHighlighter</item>
-      <item>DefaultKeyTypedAction</item>
-      <item>DefaultKeyboardFocusManager</item>
-      <item>DefaultListCellRenderer</item>
-      <item>DefaultListModel</item>
-      <item>DefaultListSelectionModel</item>
-      <item>DefaultMenuLayout</item>
-      <item>DefaultMetalTheme</item>
-      <item>DefaultMutableTreeNode</item>
-      <item>DefaultPersistenceDelegate</item>
-      <item>DefaultSelectionType</item>
-      <item>DefaultSingleSelectionModel</item>
-      <item>DefaultStyledDocument</item>
-      <item>DefaultTableCellRenderer</item>
-      <item>DefaultTableColumnModel</item>
-      <item>DefaultTableModel</item>
-      <item>DefaultTextUI</item>
-      <item>DefaultTreeCellEditor</item>
-      <item>DefaultTreeCellRenderer</item>
-      <item>DefaultTreeModel</item>
-      <item>DefaultTreeSelectionModel</item>
-      <item>DefinitionKind</item>
-      <item>DefinitionKindHelper</item>
-      <item>Deflater</item>
-      <item>DeflaterOutputStream</item>
-      <item>Delegate</item>
-      <item>Delegate</item>
-      <item>Delegate</item>
-      <item>DelegationPermission</item>
-      <item>DesignMode</item>
-      <item>DesktopIconUI</item>
-      <item>DesktopManager</item>
-      <item>DesktopPaneUI</item>
-      <item>Destination</item>
-      <item>DestinationType</item>
-      <item>DestroyFailedException</item>
-      <item>Destroyable</item>
-      <item>Dialog</item>
-      <item>DialogType</item>
-      <item>Dictionary</item>
-      <item>DigestException</item>
-      <item>DigestInputStream</item>
-      <item>DigestOutputStream</item>
-      <item>Dimension</item>
-      <item>Dimension2D</item>
-      <item>DimensionUIResource</item>
-      <item>DirContext</item>
-      <item>DirObjectFactory</item>
-      <item>DirStateFactory</item>
-      <item>DirectColorModel</item>
-      <item>DirectoryManager</item>
-      <item>DisplayMode</item>
-      <item>DnDConstants</item>
-      <item>Doc</item>
-      <item>DocAttribute</item>
-      <item>DocAttributeSet</item>
-      <item>DocFlavor</item>
-      <item>DocPrintJob</item>
-      <item>Document</item>
-      <item>Document</item>
-      <item>DocumentBuilder</item>
-      <item>DocumentBuilderFactory</item>
-      <item>DocumentEvent</item>
-      <item>DocumentFilter</item>
-      <item>DocumentFragment</item>
-      <item>DocumentHandler</item>
-      <item>DocumentListener</item>
-      <item>DocumentName</item>
-      <item>DocumentParser</item>
-      <item>DocumentType</item>
-      <item>DomainCombiner</item>
-      <item>DomainManager</item>
-      <item>DomainManagerOperations</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>Double</item>
-      <item>DoubleBuffer</item>
-      <item>DoubleHolder</item>
-      <item>DoubleSeqHelper</item>
-      <item>DoubleSeqHolder</item>
-      <item>DragGestureEvent</item>
-      <item>DragGestureListener</item>
-      <item>DragGestureRecognizer</item>
-      <item>DragSource</item>
-      <item>DragSourceAdapter</item>
-      <item>DragSourceContext</item>
-      <item>DragSourceDragEvent</item>
-      <item>DragSourceDropEvent</item>
-      <item>DragSourceEvent</item>
-      <item>DragSourceListener</item>
-      <item>DragSourceMotionListener</item>
-      <item>Driver</item>
-      <item>DriverManager</item>
-      <item>DriverPropertyInfo</item>
-      <item>DropTarget</item>
-      <item>DropTargetAdapter</item>
-      <item>DropTargetAutoScroller</item>
-      <item>DropTargetContext</item>
-      <item>DropTargetDragEvent</item>
-      <item>DropTargetDropEvent</item>
-      <item>DropTargetEvent</item>
-      <item>DropTargetListener</item>
-      <item>DuplicateName</item>
-      <item>DuplicateNameHelper</item>
-      <item>DynAny</item>
-      <item>DynAny</item>
-      <item>DynAnyFactory</item>
-      <item>DynAnyFactoryHelper</item>
-      <item>DynAnyFactoryOperations</item>
-      <item>DynAnyHelper</item>
-      <item>DynAnyOperations</item>
-      <item>DynAnySeqHelper</item>
-      <item>DynArray</item>
-      <item>DynArray</item>
-      <item>DynArrayHelper</item>
-      <item>DynArrayOperations</item>
-      <item>DynEnum</item>
-      <item>DynEnum</item>
-      <item>DynEnumHelper</item>
-      <item>DynEnumOperations</item>
-      <item>DynFixed</item>
-      <item>DynFixed</item>
-      <item>DynFixedHelper</item>
-      <item>DynFixedOperations</item>
-      <item>DynSequence</item>
-      <item>DynSequence</item>
-      <item>DynSequenceHelper</item>
-      <item>DynSequenceOperations</item>
-      <item>DynStruct</item>
-      <item>DynStruct</item>
-      <item>DynStructHelper</item>
-      <item>DynStructOperations</item>
-      <item>DynUnion</item>
-      <item>DynUnion</item>
-      <item>DynUnionHelper</item>
-      <item>DynUnionOperations</item>
-      <item>DynValue</item>
-      <item>DynValue</item>
-      <item>DynValueBox</item>
-      <item>DynValueBoxOperations</item>
-      <item>DynValueCommon</item>
-      <item>DynValueCommonOperations</item>
-      <item>DynValueHelper</item>
-      <item>DynValueOperations</item>
-      <item>DynamicImplementation</item>
-      <item>DynamicImplementation</item>
-      <item>DynamicUtilTreeNode</item>
-      <item>ENCODING_CDR_ENCAPS</item>
-      <item>EOFException</item>
-      <item>EditorKit</item>
-      <item>Element</item>
-      <item>Element</item>
-      <item>Element</item>
-      <item>ElementChange</item>
-      <item>ElementEdit</item>
-      <item>ElementIterator</item>
-      <item>ElementSpec</item>
-      <item>Ellipse2D</item>
-      <item>EmptyBorder</item>
-      <item>EmptyBorderUIResource</item>
-      <item>EmptySelectionModel</item>
-      <item>EmptyStackException</item>
-      <item>EncodedKeySpec</item>
-      <item>Encoder</item>
-      <item>Encoding</item>
-      <item>Encoding</item>
-      <item>EncryptedPrivateKeyInfo</item>
-      <item>Engineering</item>
-      <item>Entity</item>
-      <item>Entity</item>
-      <item>EntityReference</item>
-      <item>EntityResolver</item>
-      <item>Entry</item>
-      <item>EnumControl</item>
-      <item>EnumSyntax</item>
-      <item>Enumeration</item>
-      <item>Environment</item>
-      <item>Error</item>
-      <item>ErrorHandler</item>
-      <item>ErrorListener</item>
-      <item>ErrorManager</item>
-      <item>EtchedBorder</item>
-      <item>EtchedBorderUIResource</item>
-      <item>Event</item>
-      <item>EventContext</item>
-      <item>EventDirContext</item>
-      <item>EventHandler</item>
-      <item>EventListener</item>
-      <item>EventListenerList</item>
-      <item>EventListenerProxy</item>
-      <item>EventObject</item>
-      <item>EventQueue</item>
-      <item>EventSetDescriptor</item>
-      <item>EventType</item>
-      <item>EventType</item>
-      <item>Exception</item>
-      <item>ExceptionInInitializerError</item>
-      <item>ExceptionList</item>
-      <item>ExceptionListener</item>
-      <item>ExemptionMechanism</item>
-      <item>ExemptionMechanismException</item>
-      <item>ExemptionMechanismSpi</item>
-      <item>ExpandVetoException</item>
-      <item>ExportException</item>
-      <item>Expression</item>
-      <item>ExtendedRequest</item>
-      <item>ExtendedResponse</item>
-      <item>Externalizable</item>
-      <item>FREE_MEM</item>
-      <item>FactoryConfigurationError</item>
-      <item>FailedLoginException</item>
-      <item>FeatureDescriptor</item>
-      <item>Fidelity</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>Field</item>
-      <item>FieldBorder</item>
-      <item>FieldNameHelper</item>
-      <item>FieldNameHelper</item>
-      <item>FieldPosition</item>
-      <item>FieldView</item>
-      <item>File</item>
-      <item>FileCacheImageInputStream</item>
-      <item>FileCacheImageOutputStream</item>
-      <item>FileChannel</item>
-      <item>FileChooserUI</item>
-      <item>FileDescriptor</item>
-      <item>FileDialog</item>
-      <item>FileFilter</item>
-      <item>FileFilter</item>
-      <item>FileHandler</item>
-      <item>FileIcon16</item>
-      <item>FileImageInputStream</item>
-      <item>FileImageOutputStream</item>
-      <item>FileInputStream</item>
-      <item>FileLock</item>
-      <item>FileLockInterruptionException</item>
-      <item>FileNameMap</item>
-      <item>FileNotFoundException</item>
-      <item>FileOutputStream</item>
-      <item>FilePermission</item>
-      <item>FileReader</item>
-      <item>FileSystemView</item>
-      <item>FileView</item>
-      <item>FileWriter</item>
-      <item>FilenameFilter</item>
-      <item>Filler</item>
-      <item>Filter</item>
-      <item>Filter</item>
-      <item>FilterBypass</item>
-      <item>FilterBypass</item>
-      <item>FilterInputStream</item>
-      <item>FilterOutputStream</item>
-      <item>FilterReader</item>
-      <item>FilterWriter</item>
-      <item>FilteredImageSource</item>
-      <item>Finishings</item>
-      <item>FixedHeightLayoutCache</item>
-      <item>FixedHolder</item>
-      <item>FlatteningPathIterator</item>
-      <item>FlavorException</item>
-      <item>FlavorMap</item>
-      <item>FlavorTable</item>
-      <item>FlipContents</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>Float</item>
-      <item>FloatBuffer</item>
-      <item>FloatControl</item>
-      <item>FloatHolder</item>
-      <item>FloatSeqHelper</item>
-      <item>FloatSeqHolder</item>
-      <item>FlowLayout</item>
-      <item>FlowStrategy</item>
-      <item>FlowView</item>
-      <item>Flush3DBorder</item>
-      <item>FocusAdapter</item>
-      <item>FocusEvent</item>
-      <item>FocusListener</item>
-      <item>FocusManager</item>
-      <item>FocusTraversalPolicy</item>
-      <item>FolderIcon16</item>
-      <item>Font</item>
-      <item>FontAttribute</item>
-      <item>FontConstants</item>
-      <item>FontFamilyAction</item>
-      <item>FontFormatException</item>
-      <item>FontMetrics</item>
-      <item>FontRenderContext</item>
-      <item>FontSizeAction</item>
-      <item>FontUIResource</item>
-      <item>ForegroundAction</item>
-      <item>FormView</item>
-      <item>Format</item>
-      <item>FormatConversionProvider</item>
-      <item>FormatMismatch</item>
-      <item>FormatMismatchHelper</item>
-      <item>Formatter</item>
-      <item>ForwardRequest</item>
-      <item>ForwardRequest</item>
-      <item>ForwardRequestHelper</item>
-      <item>ForwardRequestHelper</item>
-      <item>Frame</item>
-      <item>GSSContext</item>
-      <item>GSSCredential</item>
-      <item>GSSException</item>
-      <item>GSSManager</item>
-      <item>GSSName</item>
-      <item>GZIPInputStream</item>
-      <item>GZIPOutputStream</item>
-      <item>GapContent</item>
-      <item>GatheringByteChannel</item>
-      <item>GeneralPath</item>
-      <item>GeneralSecurityException</item>
-      <item>GetField</item>
-      <item>GlyphJustificationInfo</item>
-      <item>GlyphMetrics</item>
-      <item>GlyphPainter</item>
-      <item>GlyphVector</item>
-      <item>GlyphView</item>
-      <item>GradientPaint</item>
-      <item>GraphicAttribute</item>
-      <item>Graphics</item>
-      <item>Graphics2D</item>
-      <item>GraphicsConfigTemplate</item>
-      <item>GraphicsConfiguration</item>
-      <item>GraphicsDevice</item>
-      <item>GraphicsEnvironment</item>
-      <item>GrayFilter</item>
-      <item>GregorianCalendar</item>
-      <item>GridBagConstraints</item>
-      <item>GridBagLayout</item>
-      <item>GridLayout</item>
-      <item>Group</item>
-      <item>Guard</item>
-      <item>GuardedObject</item>
-      <item>HTML</item>
-      <item>HTMLDocument</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLEditorKit</item>
-      <item>HTMLFrameHyperlinkEvent</item>
-      <item>HTMLWriter</item>
-      <item>Handler</item>
-      <item>HandlerBase</item>
-      <item>HandshakeCompletedEvent</item>
-      <item>HandshakeCompletedListener</item>
-      <item>HasControls</item>
-      <item>HashAttributeSet</item>
-      <item>HashDocAttributeSet</item>
-      <item>HashMap</item>
-      <item>HashPrintJobAttributeSet</item>
-      <item>HashPrintRequestAttributeSet</item>
-      <item>HashPrintServiceAttributeSet</item>
-      <item>HashSet</item>
-      <item>Hashtable</item>
-      <item>HeadlessException</item>
-      <item>HierarchyBoundsAdapter</item>
-      <item>HierarchyBoundsListener</item>
-      <item>HierarchyEvent</item>
-      <item>HierarchyListener</item>
-      <item>Highlight</item>
-      <item>HighlightPainter</item>
-      <item>Highlighter</item>
-      <item>HostnameVerifier</item>
-      <item>HttpURLConnection</item>
-      <item>HttpsURLConnection</item>
-      <item>HyperlinkEvent</item>
-      <item>HyperlinkListener</item>
-      <item>ICC_ColorSpace</item>
-      <item>ICC_Profile</item>
-      <item>ICC_ProfileGray</item>
-      <item>ICC_ProfileRGB</item>
-      <item>IDLEntity</item>
-      <item>IDLType</item>
-      <item>IDLTypeHelper</item>
-      <item>IDLTypeOperations</item>
-      <item>ID_ASSIGNMENT_POLICY_ID</item>
-      <item>ID_UNIQUENESS_POLICY_ID</item>
-      <item>IIOByteBuffer</item>
-      <item>IIOException</item>
-      <item>IIOImage</item>
-      <item>IIOInvalidTreeException</item>
-      <item>IIOMetadata</item>
-      <item>IIOMetadataController</item>
-      <item>IIOMetadataFormat</item>
-      <item>IIOMetadataFormatImpl</item>
-      <item>IIOMetadataNode</item>
-      <item>IIOParam</item>
-      <item>IIOParamController</item>
-      <item>IIOReadProgressListener</item>
-      <item>IIOReadUpdateListener</item>
-      <item>IIOReadWarningListener</item>
-      <item>IIORegistry</item>
-      <item>IIOServiceProvider</item>
-      <item>IIOWriteProgressListener</item>
-      <item>IIOWriteWarningListener</item>
-      <item>IMPLICIT_ACTIVATION_POLICY_ID</item>
-      <item>IMP_LIMIT</item>
-      <item>INITIALIZE</item>
-      <item>INPUT_STREAM</item>
-      <item>INTERNAL</item>
-      <item>INTF_REPOS</item>
-      <item>INVALID_TRANSACTION</item>
-      <item>INV_FLAG</item>
-      <item>INV_IDENT</item>
-      <item>INV_OBJREF</item>
-      <item>INV_POLICY</item>
-      <item>IOException</item>
-      <item>IOR</item>
-      <item>IORHelper</item>
-      <item>IORHolder</item>
-      <item>IORInfo</item>
-      <item>IORInfoOperations</item>
-      <item>IORInterceptor</item>
-      <item>IORInterceptorOperations</item>
-      <item>IRObject</item>
-      <item>IRObjectOperations</item>
-      <item>ISO</item>
-      <item>Icon</item>
-      <item>IconUIResource</item>
-      <item>IconView</item>
-      <item>IdAssignmentPolicy</item>
-      <item>IdAssignmentPolicyOperations</item>
-      <item>IdAssignmentPolicyValue</item>
-      <item>IdUniquenessPolicy</item>
-      <item>IdUniquenessPolicyOperations</item>
-      <item>IdUniquenessPolicyValue</item>
-      <item>IdentifierHelper</item>
-      <item>Identity</item>
-      <item>IdentityHashMap</item>
-      <item>IdentityScope</item>
-      <item>IllegalAccessError</item>
-      <item>IllegalAccessException</item>
-      <item>IllegalArgumentException</item>
-      <item>IllegalBlockSizeException</item>
-      <item>IllegalBlockingModeException</item>
-      <item>IllegalCharsetNameException</item>
-      <item>IllegalComponentStateException</item>
-      <item>IllegalMonitorStateException</item>
-      <item>IllegalPathStateException</item>
-      <item>IllegalSelectorException</item>
-      <item>IllegalStateException</item>
-      <item>IllegalThreadStateException</item>
-      <item>Image</item>
-      <item>ImageCapabilities</item>
-      <item>ImageConsumer</item>
-      <item>ImageFilter</item>
-      <item>ImageGraphicAttribute</item>
-      <item>ImageIO</item>
-      <item>ImageIcon</item>
-      <item>ImageInputStream</item>
-      <item>ImageInputStreamImpl</item>
-      <item>ImageInputStreamSpi</item>
-      <item>ImageObserver</item>
-      <item>ImageOutputStream</item>
-      <item>ImageOutputStreamImpl</item>
-      <item>ImageOutputStreamSpi</item>
-      <item>ImageProducer</item>
-      <item>ImageReadParam</item>
-      <item>ImageReader</item>
-      <item>ImageReaderSpi</item>
-      <item>ImageReaderWriterSpi</item>
-      <item>ImageTranscoder</item>
-      <item>ImageTranscoderSpi</item>
-      <item>ImageTypeSpecifier</item>
-      <item>ImageView</item>
-      <item>ImageWriteParam</item>
-      <item>ImageWriter</item>
-      <item>ImageWriterSpi</item>
-      <item>ImagingOpException</item>
-      <item>ImplicitActivationPolicy</item>
-      <item>ImplicitActivationPolicyOperations</item>
-      <item>ImplicitActivationPolicyValue</item>
-      <item>IncompatibleClassChangeError</item>
-      <item>InconsistentTypeCode</item>
-      <item>InconsistentTypeCode</item>
-      <item>InconsistentTypeCodeHelper</item>
-      <item>IndexColorModel</item>
-      <item>IndexOutOfBoundsException</item>
-      <item>IndexedPropertyDescriptor</item>
-      <item>IndirectionException</item>
-      <item>Inet4Address</item>
-      <item>Inet6Address</item>
-      <item>InetAddress</item>
-      <item>InetSocketAddress</item>
-      <item>Inflater</item>
-      <item>InflaterInputStream</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>Info</item>
-      <item>InheritableThreadLocal</item>
-      <item>InitialContext</item>
-      <item>InitialContextFactory</item>
-      <item>InitialContextFactoryBuilder</item>
-      <item>InitialDirContext</item>
-      <item>InitialLdapContext</item>
-      <item>InlineView</item>
-      <item>InputContext</item>
-      <item>InputEvent</item>
-      <item>InputMap</item>
-      <item>InputMapUIResource</item>
-      <item>InputMethod</item>
-      <item>InputMethodContext</item>
-      <item>InputMethodDescriptor</item>
-      <item>InputMethodEvent</item>
-      <item>InputMethodHighlight</item>
-      <item>InputMethodListener</item>
-      <item>InputMethodRequests</item>
-      <item>InputSource</item>
-      <item>InputStream</item>
-      <item>InputStream</item>
-      <item>InputStream</item>
-      <item>InputStreamReader</item>
-      <item>InputSubset</item>
-      <item>InputVerifier</item>
-      <item>InsertBreakAction</item>
-      <item>InsertContentAction</item>
-      <item>InsertHTMLTextAction</item>
-      <item>InsertTabAction</item>
-      <item>Insets</item>
-      <item>InsetsUIResource</item>
-      <item>InstantiationError</item>
-      <item>InstantiationException</item>
-      <item>Instrument</item>
-      <item>InsufficientResourcesException</item>
-      <item>IntBuffer</item>
-      <item>IntHolder</item>
-      <item>Integer</item>
-      <item>IntegerSyntax</item>
-      <item>Interceptor</item>
-      <item>InterceptorOperations</item>
-      <item>InternalError</item>
-      <item>InternalFrameAdapter</item>
-      <item>InternalFrameBorder</item>
-      <item>InternalFrameEvent</item>
-      <item>InternalFrameFocusTraversalPolicy</item>
-      <item>InternalFrameListener</item>
-      <item>InternalFrameUI</item>
-      <item>InternationalFormatter</item>
-      <item>InterruptedException</item>
-      <item>InterruptedIOException</item>
-      <item>InterruptedNamingException</item>
-      <item>InterruptibleChannel</item>
-      <item>IntrospectionException</item>
-      <item>Introspector</item>
-      <item>Invalid</item>
-      <item>InvalidAddress</item>
-      <item>InvalidAddressHelper</item>
-      <item>InvalidAddressHolder</item>
-      <item>InvalidAlgorithmParameterException</item>
-      <item>InvalidAttributeIdentifierException</item>
-      <item>InvalidAttributeValueException</item>
-      <item>InvalidAttributesException</item>
-      <item>InvalidClassException</item>
-      <item>InvalidDnDOperationException</item>
-      <item>InvalidKeyException</item>
-      <item>InvalidKeySpecException</item>
-      <item>InvalidMarkException</item>
-      <item>InvalidMidiDataException</item>
-      <item>InvalidName</item>
-      <item>InvalidName</item>
-      <item>InvalidName</item>
-      <item>InvalidNameException</item>
-      <item>InvalidNameHelper</item>
-      <item>InvalidNameHelper</item>
-      <item>InvalidNameHolder</item>
-      <item>InvalidObjectException</item>
-      <item>InvalidParameterException</item>
-      <item>InvalidParameterSpecException</item>
-      <item>InvalidPolicy</item>
-      <item>InvalidPolicyHelper</item>
-      <item>InvalidPreferencesFormatException</item>
-      <item>InvalidSearchControlsException</item>
-      <item>InvalidSearchFilterException</item>
-      <item>InvalidSeq</item>
-      <item>InvalidSlot</item>
-      <item>InvalidSlotHelper</item>
-      <item>InvalidTransactionException</item>
-      <item>InvalidTypeForEncoding</item>
-      <item>InvalidTypeForEncodingHelper</item>
-      <item>InvalidValue</item>
-      <item>InvalidValue</item>
-      <item>InvalidValueHelper</item>
-      <item>InvocationEvent</item>
-      <item>InvocationHandler</item>
-      <item>InvocationTargetException</item>
-      <item>InvokeHandler</item>
-      <item>IstringHelper</item>
-      <item>ItalicAction</item>
-      <item>ItemEvent</item>
-      <item>ItemListener</item>
-      <item>ItemSelectable</item>
-      <item>Iterator</item>
-      <item>Iterator</item>
-      <item>IvParameterSpec</item>
-      <item>JApplet</item>
-      <item>JButton</item>
-      <item>JCheckBox</item>
-      <item>JCheckBoxMenuItem</item>
-      <item>JColorChooser</item>
-      <item>JComboBox</item>
-      <item>JComponent</item>
-      <item>JDesktopIcon</item>
-      <item>JDesktopPane</item>
-      <item>JDialog</item>
-      <item>JEditorPane</item>
-      <item>JFileChooser</item>
-      <item>JFormattedTextField</item>
-      <item>JFrame</item>
-      <item>JIS</item>
-      <item>JInternalFrame</item>
-      <item>JLabel</item>
-      <item>JLayeredPane</item>
-      <item>JList</item>
-      <item>JMenu</item>
-      <item>JMenuBar</item>
-      <item>JMenuItem</item>
-      <item>JOptionPane</item>
-      <item>JPEGHuffmanTable</item>
-      <item>JPEGImageReadParam</item>
-      <item>JPEGImageWriteParam</item>
-      <item>JPEGQTable</item>
-      <item>JPanel</item>
-      <item>JPasswordField</item>
-      <item>JPopupMenu</item>
-      <item>JProgressBar</item>
-      <item>JRadioButton</item>
-      <item>JRadioButtonMenuItem</item>
-      <item>JRootPane</item>
-      <item>JScrollBar</item>
-      <item>JScrollPane</item>
-      <item>JSeparator</item>
-      <item>JSlider</item>
-      <item>JSpinner</item>
-      <item>JSplitPane</item>
-      <item>JTabbedPane</item>
-      <item>JTable</item>
-      <item>JTableHeader</item>
-      <item>JTextArea</item>
-      <item>JTextComponent</item>
-      <item>JTextField</item>
-      <item>JTextPane</item>
-      <item>JToggleButton</item>
-      <item>JToolBar</item>
-      <item>JToolTip</item>
-      <item>JTree</item>
-      <item>JViewport</item>
-      <item>JWindow</item>
-      <item>JarEntry</item>
-      <item>JarException</item>
-      <item>JarFile</item>
-      <item>JarInputStream</item>
-      <item>JarOutputStream</item>
-      <item>JarURLConnection</item>
-      <item>JobAttributes</item>
-      <item>JobHoldUntil</item>
-      <item>JobImpressions</item>
-      <item>JobImpressionsCompleted</item>
-      <item>JobImpressionsSupported</item>
-      <item>JobKOctets</item>
-      <item>JobKOctetsProcessed</item>
-      <item>JobKOctetsSupported</item>
-      <item>JobMediaSheets</item>
-      <item>JobMediaSheetsCompleted</item>
-      <item>JobMediaSheetsSupported</item>
-      <item>JobMessageFromOperator</item>
-      <item>JobName</item>
-      <item>JobOriginatingUserName</item>
-      <item>JobPriority</item>
-      <item>JobPrioritySupported</item>
-      <item>JobSheets</item>
-      <item>JobState</item>
-      <item>JobStateReason</item>
-      <item>JobStateReasons</item>
-      <item>KerberosKey</item>
-      <item>KerberosPrincipal</item>
-      <item>KerberosTicket</item>
-      <item>Kernel</item>
-      <item>Key</item>
-      <item>Key</item>
-      <item>KeyAdapter</item>
-      <item>KeyAgreement</item>
-      <item>KeyAgreementSpi</item>
-      <item>KeyBinding</item>
-      <item>KeyEvent</item>
-      <item>KeyEventDispatcher</item>
-      <item>KeyEventPostProcessor</item>
-      <item>KeyException</item>
-      <item>KeyFactory</item>
-      <item>KeyFactorySpi</item>
-      <item>KeyGenerator</item>
-      <item>KeyGeneratorSpi</item>
-      <item>KeyListener</item>
-      <item>KeyManagementException</item>
-      <item>KeyManager</item>
-      <item>KeyManagerFactory</item>
-      <item>KeyManagerFactorySpi</item>
-      <item>KeyPair</item>
-      <item>KeyPairGenerator</item>
-      <item>KeyPairGeneratorSpi</item>
-      <item>KeySelectionManager</item>
-      <item>KeySpec</item>
-      <item>KeyStore</item>
-      <item>KeyStoreException</item>
-      <item>KeyStoreSpi</item>
-      <item>KeyStroke</item>
-      <item>KeyboardFocusManager</item>
-      <item>Keymap</item>
-      <item>LDAPCertStoreParameters</item>
-      <item>LIFESPAN_POLICY_ID</item>
-      <item>LOCATION_FORWARD</item>
-      <item>Label</item>
-      <item>LabelUI</item>
-      <item>LabelView</item>
-      <item>LanguageCallback</item>
-      <item>LastOwnerException</item>
-      <item>LayerPainter</item>
-      <item>LayeredHighlighter</item>
-      <item>LayoutFocusTraversalPolicy</item>
-      <item>LayoutManager</item>
-      <item>LayoutManager2</item>
-      <item>LayoutQueue</item>
-      <item>LazyInputMap</item>
-      <item>LazyValue</item>
-      <item>LdapContext</item>
-      <item>LdapReferralException</item>
-      <item>Lease</item>
-      <item>Level</item>
-      <item>LexicalHandler</item>
-      <item>LifespanPolicy</item>
-      <item>LifespanPolicyOperations</item>
-      <item>LifespanPolicyValue</item>
-      <item>LimitExceededException</item>
-      <item>Line</item>
-      <item>Line2D</item>
-      <item>LineBorder</item>
-      <item>LineBorderUIResource</item>
-      <item>LineBreakMeasurer</item>
-      <item>LineEvent</item>
-      <item>LineListener</item>
-      <item>LineMetrics</item>
-      <item>LineNumberInputStream</item>
-      <item>LineNumberReader</item>
-      <item>LineUnavailableException</item>
-      <item>LinkController</item>
-      <item>LinkException</item>
-      <item>LinkLoopException</item>
-      <item>LinkRef</item>
-      <item>LinkageError</item>
-      <item>LinkedHashMap</item>
-      <item>LinkedHashSet</item>
-      <item>LinkedList</item>
-      <item>List</item>
-      <item>List</item>
-      <item>ListCellRenderer</item>
-      <item>ListDataEvent</item>
-      <item>ListDataListener</item>
-      <item>ListEditor</item>
-      <item>ListIterator</item>
-      <item>ListModel</item>
-      <item>ListPainter</item>
-      <item>ListResourceBundle</item>
-      <item>ListSelectionEvent</item>
-      <item>ListSelectionListener</item>
-      <item>ListSelectionModel</item>
-      <item>ListUI</item>
-      <item>ListView</item>
-      <item>LoaderHandler</item>
-      <item>LocalObject</item>
-      <item>Locale</item>
-      <item>LocateRegistry</item>
-      <item>Locator</item>
-      <item>LocatorImpl</item>
-      <item>LogManager</item>
-      <item>LogRecord</item>
-      <item>LogStream</item>
-      <item>Logger</item>
-      <item>LoggingPermission</item>
-      <item>LoginContext</item>
-      <item>LoginException</item>
-      <item>LoginModule</item>
-      <item>LoginModuleControlFlag</item>
-      <item>Long</item>
-      <item>LongBuffer</item>
-      <item>LongHolder</item>
-      <item>LongLongSeqHelper</item>
-      <item>LongLongSeqHolder</item>
-      <item>LongSeqHelper</item>
-      <item>LongSeqHolder</item>
-      <item>LookAndFeel</item>
-      <item>LookAndFeelInfo</item>
-      <item>LookupOp</item>
-      <item>LookupTable</item>
-      <item>MARSHAL</item>
-      <item>Mac</item>
-      <item>MacSpi</item>
-      <item>MalformedInputException</item>
-      <item>MalformedLinkException</item>
-      <item>MalformedURLException</item>
-      <item>ManagerFactoryParameters</item>
-      <item>Manifest</item>
-      <item>Map</item>
-      <item>MapMode</item>
-      <item>MappedByteBuffer</item>
-      <item>MarginBorder</item>
-      <item>MarshalException</item>
-      <item>MarshalledObject</item>
-      <item>MaskFormatter</item>
-      <item>Matcher</item>
-      <item>Math</item>
-      <item>MatteBorder</item>
-      <item>MatteBorderUIResource</item>
-      <item>Media</item>
-      <item>MediaName</item>
-      <item>MediaPrintableArea</item>
-      <item>MediaSize</item>
-      <item>MediaSizeName</item>
-      <item>MediaTracker</item>
-      <item>MediaTray</item>
-      <item>MediaType</item>
-      <item>Member</item>
-      <item>MemoryCacheImageInputStream</item>
-      <item>MemoryCacheImageOutputStream</item>
-      <item>MemoryHandler</item>
-      <item>MemoryImageSource</item>
-      <item>Menu</item>
-      <item>MenuBar</item>
-      <item>MenuBarBorder</item>
-      <item>MenuBarBorder</item>
-      <item>MenuBarUI</item>
-      <item>MenuComponent</item>
-      <item>MenuContainer</item>
-      <item>MenuDragMouseEvent</item>
-      <item>MenuDragMouseListener</item>
-      <item>MenuElement</item>
-      <item>MenuEvent</item>
-      <item>MenuItem</item>
-      <item>MenuItemBorder</item>
-      <item>MenuItemUI</item>
-      <item>MenuKeyEvent</item>
-      <item>MenuKeyListener</item>
-      <item>MenuListener</item>
-      <item>MenuSelectionManager</item>
-      <item>MenuShortcut</item>
-      <item>MessageDigest</item>
-      <item>MessageDigestSpi</item>
-      <item>MessageFormat</item>
-      <item>MessageProp</item>
-      <item>MetaEventListener</item>
-      <item>MetaMessage</item>
-      <item>MetalBorders</item>
-      <item>MetalButtonUI</item>
-      <item>MetalCheckBoxIcon</item>
-      <item>MetalCheckBoxUI</item>
-      <item>MetalComboBoxButton</item>
-      <item>MetalComboBoxEditor</item>
-      <item>MetalComboBoxIcon</item>
-      <item>MetalComboBoxUI</item>
-      <item>MetalDesktopIconUI</item>
-      <item>MetalFileChooserUI</item>
-      <item>MetalIconFactory</item>
-      <item>MetalInternalFrameTitlePane</item>
-      <item>MetalInternalFrameUI</item>
-      <item>MetalLabelUI</item>
-      <item>MetalLookAndFeel</item>
-      <item>MetalPopupMenuSeparatorUI</item>
-      <item>MetalProgressBarUI</item>
-      <item>MetalRadioButtonUI</item>
-      <item>MetalRootPaneUI</item>
-      <item>MetalScrollBarUI</item>
-      <item>MetalScrollButton</item>
-      <item>MetalScrollPaneUI</item>
-      <item>MetalSeparatorUI</item>
-      <item>MetalSliderUI</item>
-      <item>MetalSplitPaneUI</item>
-      <item>MetalTabbedPaneUI</item>
-      <item>MetalTextFieldUI</item>
-      <item>MetalTheme</item>
-      <item>MetalToggleButtonUI</item>
-      <item>MetalToolBarUI</item>
-      <item>MetalToolTipUI</item>
-      <item>MetalTreeUI</item>
-      <item>Method</item>
-      <item>MethodDescriptor</item>
-      <item>MidiChannel</item>
-      <item>MidiDevice</item>
-      <item>MidiDeviceProvider</item>
-      <item>MidiEvent</item>
-      <item>MidiFileFormat</item>
-      <item>MidiFileReader</item>
-      <item>MidiFileWriter</item>
-      <item>MidiMessage</item>
-      <item>MidiSystem</item>
-      <item>MidiUnavailableException</item>
-      <item>MimeTypeParseException</item>
-      <item>MinimalHTMLWriter</item>
-      <item>MissingResourceException</item>
-      <item>Mixer</item>
-      <item>MixerProvider</item>
-      <item>ModificationItem</item>
-      <item>Modifier</item>
-      <item>MouseAdapter</item>
-      <item>MouseDragGestureRecognizer</item>
-      <item>MouseEvent</item>
-      <item>MouseInputAdapter</item>
-      <item>MouseInputListener</item>
-      <item>MouseListener</item>
-      <item>MouseMotionAdapter</item>
-      <item>MouseMotionListener</item>
-      <item>MouseWheelEvent</item>
-      <item>MouseWheelListener</item>
-      <item>MultiButtonUI</item>
-      <item>MultiColorChooserUI</item>
-      <item>MultiComboBoxUI</item>
-      <item>MultiDesktopIconUI</item>
-      <item>MultiDesktopPaneUI</item>
-      <item>MultiDoc</item>
-      <item>MultiDocPrintJob</item>
-      <item>MultiDocPrintService</item>
-      <item>MultiFileChooserUI</item>
-      <item>MultiInternalFrameUI</item>
-      <item>MultiLabelUI</item>
-      <item>MultiListUI</item>
-      <item>MultiLookAndFeel</item>
-      <item>MultiMenuBarUI</item>
-      <item>MultiMenuItemUI</item>
-      <item>MultiOptionPaneUI</item>
-      <item>MultiPanelUI</item>
-      <item>MultiPixelPackedSampleModel</item>
-      <item>MultiPopupMenuUI</item>
-      <item>MultiProgressBarUI</item>
-      <item>MultiRootPaneUI</item>
-      <item>MultiScrollBarUI</item>
-      <item>MultiScrollPaneUI</item>
-      <item>MultiSeparatorUI</item>
-      <item>MultiSliderUI</item>
-      <item>MultiSpinnerUI</item>
-      <item>MultiSplitPaneUI</item>
-      <item>MultiTabbedPaneUI</item>
-      <item>MultiTableHeaderUI</item>
-      <item>MultiTableUI</item>
-      <item>MultiTextUI</item>
-      <item>MultiToolBarUI</item>
-      <item>MultiToolTipUI</item>
-      <item>MultiTreeUI</item>
-      <item>MultiViewportUI</item>
-      <item>MulticastSocket</item>
-      <item>MultipleComponentProfileHelper</item>
-      <item>MultipleComponentProfileHolder</item>
-      <item>MultipleDocumentHandling</item>
-      <item>MultipleDocumentHandlingType</item>
-      <item>MultipleMaster</item>
-      <item>MutableAttributeSet</item>
-      <item>MutableComboBoxModel</item>
-      <item>MutableTreeNode</item>
-      <item>NA</item>
-      <item>NO_IMPLEMENT</item>
-      <item>NO_MEMORY</item>
-      <item>NO_PERMISSION</item>
-      <item>NO_RESOURCES</item>
-      <item>NO_RESPONSE</item>
-      <item>NVList</item>
-      <item>Name</item>
-      <item>Name</item>
-      <item>NameAlreadyBoundException</item>
-      <item>NameCallback</item>
-      <item>NameClassPair</item>
-      <item>NameComponent</item>
-      <item>NameComponentHelper</item>
-      <item>NameComponentHolder</item>
-      <item>NameDynAnyPair</item>
-      <item>NameDynAnyPairHelper</item>
-      <item>NameDynAnyPairSeqHelper</item>
-      <item>NameHelper</item>
-      <item>NameHolder</item>
-      <item>NameNotFoundException</item>
-      <item>NameParser</item>
-      <item>NameValuePair</item>
-      <item>NameValuePair</item>
-      <item>NameValuePairHelper</item>
-      <item>NameValuePairHelper</item>
-      <item>NameValuePairSeqHelper</item>
-      <item>NamedNodeMap</item>
-      <item>NamedValue</item>
-      <item>NamespaceChangeListener</item>
-      <item>NamespaceSupport</item>
-      <item>Naming</item>
-      <item>NamingContext</item>
-      <item>NamingContextExt</item>
-      <item>NamingContextExtHelper</item>
-      <item>NamingContextExtHolder</item>
-      <item>NamingContextExtOperations</item>
-      <item>NamingContextExtPOA</item>
-      <item>NamingContextHelper</item>
-      <item>NamingContextHolder</item>
-      <item>NamingContextOperations</item>
-      <item>NamingContextPOA</item>
-      <item>NamingEnumeration</item>
-      <item>NamingEvent</item>
-      <item>NamingException</item>
-      <item>NamingExceptionEvent</item>
-      <item>NamingListener</item>
-      <item>NamingManager</item>
-      <item>NamingSecurityException</item>
-      <item>NavigationFilter</item>
-      <item>NegativeArraySizeException</item>
-      <item>NetPermission</item>
-      <item>NetworkInterface</item>
-      <item>NoClassDefFoundError</item>
-      <item>NoConnectionPendingException</item>
-      <item>NoContext</item>
-      <item>NoContextHelper</item>
-      <item>NoInitialContextException</item>
-      <item>NoPermissionException</item>
-      <item>NoRouteToHostException</item>
-      <item>NoServant</item>
-      <item>NoServantHelper</item>
-      <item>NoSuchAlgorithmException</item>
-      <item>NoSuchAttributeException</item>
-      <item>NoSuchElementException</item>
-      <item>NoSuchFieldError</item>
-      <item>NoSuchFieldException</item>
-      <item>NoSuchMethodError</item>
-      <item>NoSuchMethodException</item>
-      <item>NoSuchObjectException</item>
-      <item>NoSuchPaddingException</item>
-      <item>NoSuchProviderException</item>
-      <item>Node</item>
-      <item>NodeChangeEvent</item>
-      <item>NodeChangeListener</item>
-      <item>NodeDimensions</item>
-      <item>NodeList</item>
-      <item>NonReadableChannelException</item>
-      <item>NonWritableChannelException</item>
-      <item>NoninvertibleTransformException</item>
-      <item>NotActiveException</item>
-      <item>NotBoundException</item>
-      <item>NotContextException</item>
-      <item>NotEmpty</item>
-      <item>NotEmptyHelper</item>
-      <item>NotEmptyHolder</item>
-      <item>NotFound</item>
-      <item>NotFoundHelper</item>
-      <item>NotFoundHolder</item>
-      <item>NotFoundReason</item>
-      <item>NotFoundReasonHelper</item>
-      <item>NotFoundReasonHolder</item>
-      <item>NotOwnerException</item>
-      <item>NotSerializableException</item>
-      <item>NotYetBoundException</item>
-      <item>NotYetConnectedException</item>
-      <item>Notation</item>
-      <item>NullCipher</item>
-      <item>NullPointerException</item>
-      <item>Number</item>
-      <item>NumberEditor</item>
-      <item>NumberFormat</item>
-      <item>NumberFormatException</item>
-      <item>NumberFormatter</item>
-      <item>NumberOfDocuments</item>
-      <item>NumberOfInterveningJobs</item>
-      <item>NumberUp</item>
-      <item>NumberUpSupported</item>
-      <item>NumericShaper</item>
-      <item>OBJECT_NOT_EXIST</item>
-      <item>OBJ_ADAPTER</item>
-      <item>OMGVMCID</item>
-      <item>ORB</item>
-      <item>ORB</item>
-      <item>ORBInitInfo</item>
-      <item>ORBInitInfoOperations</item>
-      <item>ORBInitializer</item>
-      <item>ORBInitializerOperations</item>
-      <item>ObjID</item>
-      <item>Object</item>
-      <item>Object</item>
-      <item>ObjectAlreadyActive</item>
-      <item>ObjectAlreadyActiveHelper</item>
-      <item>ObjectChangeListener</item>
-      <item>ObjectFactory</item>
-      <item>ObjectFactoryBuilder</item>
-      <item>ObjectHelper</item>
-      <item>ObjectHolder</item>
-      <item>ObjectIdHelper</item>
-      <item>ObjectImpl</item>
-      <item>ObjectImpl</item>
-      <item>ObjectInput</item>
-      <item>ObjectInputStream</item>
-      <item>ObjectInputValidation</item>
-      <item>ObjectNotActive</item>
-      <item>ObjectNotActiveHelper</item>
-      <item>ObjectOutput</item>
-      <item>ObjectOutputStream</item>
-      <item>ObjectStreamClass</item>
-      <item>ObjectStreamConstants</item>
-      <item>ObjectStreamException</item>
-      <item>ObjectStreamField</item>
-      <item>ObjectView</item>
-      <item>Observable</item>
-      <item>Observer</item>
-      <item>OctetSeqHelper</item>
-      <item>OctetSeqHolder</item>
-      <item>Oid</item>
-      <item>OpenType</item>
-      <item>Operation</item>
-      <item>OperationNotSupportedException</item>
-      <item>Option</item>
-      <item>OptionDialogBorder</item>
-      <item>OptionPaneUI</item>
-      <item>OptionalDataException</item>
-      <item>OrientationRequested</item>
-      <item>OrientationRequestedType</item>
-      <item>OriginType</item>
-      <item>Other</item>
-      <item>OutOfMemoryError</item>
-      <item>OutputDeviceAssigned</item>
-      <item>OutputKeys</item>
-      <item>OutputStream</item>
-      <item>OutputStream</item>
-      <item>OutputStream</item>
-      <item>OutputStreamWriter</item>
-      <item>OverlappingFileLockException</item>
-      <item>OverlayLayout</item>
-      <item>Owner</item>
-      <item>PBEKey</item>
-      <item>PBEKeySpec</item>
-      <item>PBEParameterSpec</item>
-      <item>PDLOverrideSupported</item>
-      <item>PERSIST_STORE</item>
-      <item>PKCS8EncodedKeySpec</item>
-      <item>PKIXBuilderParameters</item>
-      <item>PKIXCertPathBuilderResult</item>
-      <item>PKIXCertPathChecker</item>
-      <item>PKIXCertPathValidatorResult</item>
-      <item>PKIXParameters</item>
-      <item>POA</item>
-      <item>POAHelper</item>
-      <item>POAManager</item>
-      <item>POAManagerOperations</item>
-      <item>POAOperations</item>
-      <item>PRIVATE_MEMBER</item>
-      <item>PSSParameterSpec</item>
-      <item>PUBLIC_MEMBER</item>
-      <item>Package</item>
-      <item>PackedColorModel</item>
-      <item>PageAttributes</item>
-      <item>PageFormat</item>
-      <item>PageRanges</item>
-      <item>Pageable</item>
-      <item>PagesPerMinute</item>
-      <item>PagesPerMinuteColor</item>
-      <item>Paint</item>
-      <item>PaintContext</item>
-      <item>PaintEvent</item>
-      <item>PaletteBorder</item>
-      <item>PaletteCloseIcon</item>
-      <item>Panel</item>
-      <item>PanelUI</item>
-      <item>Paper</item>
-      <item>ParagraphAttribute</item>
-      <item>ParagraphConstants</item>
-      <item>ParagraphView</item>
-      <item>ParagraphView</item>
-      <item>Parameter</item>
-      <item>ParameterBlock</item>
-      <item>ParameterDescriptor</item>
-      <item>ParameterMetaData</item>
-      <item>ParameterMode</item>
-      <item>ParameterModeHelper</item>
-      <item>ParameterModeHolder</item>
-      <item>ParseException</item>
-      <item>ParsePosition</item>
-      <item>Parser</item>
-      <item>Parser</item>
-      <item>Parser</item>
-      <item>ParserAdapter</item>
-      <item>ParserCallback</item>
-      <item>ParserConfigurationException</item>
-      <item>ParserDelegator</item>
-      <item>ParserFactory</item>
-      <item>PartialResultException</item>
-      <item>PasswordAuthentication</item>
-      <item>PasswordCallback</item>
-      <item>PasswordView</item>
-      <item>PasteAction</item>
-      <item>Patch</item>
-      <item>PathIterator</item>
-      <item>Pattern</item>
-      <item>PatternSyntaxException</item>
-      <item>Permission</item>
-      <item>Permission</item>
-      <item>PermissionCollection</item>
-      <item>Permissions</item>
-      <item>PersistenceDelegate</item>
-      <item>PhantomReference</item>
-      <item>Pipe</item>
-      <item>PipedInputStream</item>
-      <item>PipedOutputStream</item>
-      <item>PipedReader</item>
-      <item>PipedWriter</item>
-      <item>PixelGrabber</item>
-      <item>PixelInterleavedSampleModel</item>
-      <item>PlainDocument</item>
-      <item>PlainView</item>
-      <item>Point</item>
-      <item>Point2D</item>
-      <item>Policy</item>
-      <item>Policy</item>
-      <item>Policy</item>
-      <item>PolicyError</item>
-      <item>PolicyErrorCodeHelper</item>
-      <item>PolicyErrorHelper</item>
-      <item>PolicyErrorHolder</item>
-      <item>PolicyFactory</item>
-      <item>PolicyFactoryOperations</item>
-      <item>PolicyHelper</item>
-      <item>PolicyHolder</item>
-      <item>PolicyListHelper</item>
-      <item>PolicyListHolder</item>
-      <item>PolicyNode</item>
-      <item>PolicyOperations</item>
-      <item>PolicyQualifierInfo</item>
-      <item>PolicyTypeHelper</item>
-      <item>Polygon</item>
-      <item>PooledConnection</item>
-      <item>Popup</item>
-      <item>PopupFactory</item>
-      <item>PopupMenu</item>
-      <item>PopupMenuBorder</item>
-      <item>PopupMenuEvent</item>
-      <item>PopupMenuListener</item>
-      <item>PopupMenuUI</item>
-      <item>Port</item>
-      <item>PortUnreachableException</item>
-      <item>PortableRemoteObject</item>
-      <item>PortableRemoteObjectDelegate</item>
-      <item>Position</item>
-      <item>PreferenceChangeEvent</item>
-      <item>PreferenceChangeListener</item>
-      <item>Preferences</item>
-      <item>PreferencesFactory</item>
-      <item>PreparedStatement</item>
-      <item>PresentationDirection</item>
-      <item>Principal</item>
-      <item>Principal</item>
-      <item>PrincipalHolder</item>
-      <item>PrintEvent</item>
-      <item>PrintException</item>
-      <item>PrintGraphics</item>
-      <item>PrintJob</item>
-      <item>PrintJobAdapter</item>
-      <item>PrintJobAttribute</item>
-      <item>PrintJobAttributeEvent</item>
-      <item>PrintJobAttributeListener</item>
-      <item>PrintJobAttributeSet</item>
-      <item>PrintJobEvent</item>
-      <item>PrintJobListener</item>
-      <item>PrintQuality</item>
-      <item>PrintQualityType</item>
-      <item>PrintRequestAttribute</item>
-      <item>PrintRequestAttributeSet</item>
-      <item>PrintService</item>
-      <item>PrintServiceAttribute</item>
-      <item>PrintServiceAttributeEvent</item>
-      <item>PrintServiceAttributeListener</item>
-      <item>PrintServiceAttributeSet</item>
-      <item>PrintServiceLookup</item>
-      <item>PrintStream</item>
-      <item>PrintWriter</item>
-      <item>Printable</item>
-      <item>PrinterAbortException</item>
-      <item>PrinterException</item>
-      <item>PrinterGraphics</item>
-      <item>PrinterIOException</item>
-      <item>PrinterInfo</item>
-      <item>PrinterIsAcceptingJobs</item>
-      <item>PrinterJob</item>
-      <item>PrinterLocation</item>
-      <item>PrinterMakeAndModel</item>
-      <item>PrinterMessageFromOperator</item>
-      <item>PrinterMoreInfo</item>
-      <item>PrinterMoreInfoManufacturer</item>
-      <item>PrinterName</item>
-      <item>PrinterResolution</item>
-      <item>PrinterState</item>
-      <item>PrinterStateReason</item>
-      <item>PrinterStateReasons</item>
-      <item>PrinterURI</item>
-      <item>PrivateCredentialPermission</item>
-      <item>PrivateKey</item>
-      <item>PrivilegedAction</item>
-      <item>PrivilegedActionException</item>
-      <item>PrivilegedExceptionAction</item>
-      <item>Process</item>
-      <item>ProcessingInstruction</item>
-      <item>ProfileDataException</item>
-      <item>ProfileIdHelper</item>
-      <item>ProgressBarUI</item>
-      <item>ProgressMonitor</item>
-      <item>ProgressMonitorInputStream</item>
-      <item>Properties</item>
-      <item>PropertyChangeEvent</item>
-      <item>PropertyChangeListener</item>
-      <item>PropertyChangeListenerProxy</item>
-      <item>PropertyChangeSupport</item>
-      <item>PropertyDescriptor</item>
-      <item>PropertyEditor</item>
-      <item>PropertyEditorManager</item>
-      <item>PropertyEditorSupport</item>
-      <item>PropertyPermission</item>
-      <item>PropertyResourceBundle</item>
-      <item>PropertyVetoException</item>
-      <item>ProtectionDomain</item>
-      <item>ProtocolException</item>
-      <item>Provider</item>
-      <item>ProviderException</item>
-      <item>Proxy</item>
-      <item>ProxyLazyValue</item>
-      <item>PublicKey</item>
-      <item>PushbackInputStream</item>
-      <item>PushbackReader</item>
-      <item>PutField</item>
-      <item>QuadCurve2D</item>
-      <item>QueuedJobCount</item>
-      <item>RC2ParameterSpec</item>
-      <item>RC5ParameterSpec</item>
-      <item>READER</item>
-      <item>REQUEST_PROCESSING_POLICY_ID</item>
-      <item>RGBImageFilter</item>
-      <item>RMIClassLoader</item>
-      <item>RMIClassLoaderSpi</item>
-      <item>RMIClientSocketFactory</item>
-      <item>RMIFailureHandler</item>
-      <item>RMISecurityException</item>
-      <item>RMISecurityManager</item>
-      <item>RMIServerSocketFactory</item>
-      <item>RMISocketFactory</item>
-      <item>RSAKey</item>
-      <item>RSAKeyGenParameterSpec</item>
-      <item>RSAMultiPrimePrivateCrtKey</item>
-      <item>RSAMultiPrimePrivateCrtKeySpec</item>
-      <item>RSAOtherPrimeInfo</item>
-      <item>RSAPrivateCrtKey</item>
-      <item>RSAPrivateCrtKeySpec</item>
-      <item>RSAPrivateKey</item>
-      <item>RSAPrivateKeySpec</item>
-      <item>RSAPublicKey</item>
-      <item>RSAPublicKeySpec</item>
-      <item>RTFEditorKit</item>
-      <item>RadioButtonBorder</item>
-      <item>Random</item>
-      <item>RandomAccess</item>
-      <item>RandomAccessFile</item>
-      <item>Raster</item>
-      <item>RasterFormatException</item>
-      <item>RasterOp</item>
-      <item>ReadOnlyBufferException</item>
-      <item>ReadableByteChannel</item>
-      <item>Reader</item>
-      <item>Receiver</item>
-      <item>Rectangle</item>
-      <item>Rectangle2D</item>
-      <item>RectangularShape</item>
-      <item>Ref</item>
-      <item>RefAddr</item>
-      <item>Reference</item>
-      <item>Reference</item>
-      <item>ReferenceQueue</item>
-      <item>ReferenceUriSchemesSupported</item>
-      <item>Referenceable</item>
-      <item>ReferralException</item>
-      <item>ReflectPermission</item>
-      <item>RefreshFailedException</item>
-      <item>Refreshable</item>
-      <item>RegisterableService</item>
-      <item>Registry</item>
-      <item>RegistryHandler</item>
-      <item>RemarshalException</item>
-      <item>Remote</item>
-      <item>RemoteCall</item>
-      <item>RemoteException</item>
-      <item>RemoteObject</item>
-      <item>RemoteRef</item>
-      <item>RemoteServer</item>
-      <item>RemoteStub</item>
-      <item>RenderContext</item>
-      <item>RenderableImage</item>
-      <item>RenderableImageOp</item>
-      <item>RenderableImageProducer</item>
-      <item>RenderedImage</item>
-      <item>RenderedImageFactory</item>
-      <item>Renderer</item>
-      <item>RenderingHints</item>
-      <item>RepaintManager</item>
-      <item>ReplicateScaleFilter</item>
-      <item>RepositoryIdHelper</item>
-      <item>Request</item>
-      <item>RequestInfo</item>
-      <item>RequestInfoOperations</item>
-      <item>RequestProcessingPolicy</item>
-      <item>RequestProcessingPolicyOperations</item>
-      <item>RequestProcessingPolicyValue</item>
-      <item>RequestingUserName</item>
-      <item>RescaleOp</item>
-      <item>ResolutionSyntax</item>
-      <item>ResolveResult</item>
-      <item>Resolver</item>
-      <item>ResourceBundle</item>
-      <item>ResponseHandler</item>
-      <item>Result</item>
-      <item>Result</item>
-      <item>ResultSet</item>
-      <item>ResultSetMetaData</item>
-      <item>ReverbType</item>
-      <item>Robot</item>
-      <item>RolloverButtonBorder</item>
-      <item>RolloverButtonBorder</item>
-      <item>RootPaneContainer</item>
-      <item>RootPaneUI</item>
-      <item>RoundRectangle2D</item>
-      <item>RowMapper</item>
-      <item>RowSet</item>
-      <item>RowSetEvent</item>
-      <item>RowSetInternal</item>
-      <item>RowSetListener</item>
-      <item>RowSetMetaData</item>
-      <item>RowSetReader</item>
-      <item>RowSetWriter</item>
-      <item>RuleBasedCollator</item>
-      <item>RunTime</item>
-      <item>RunTimeOperations</item>
-      <item>Runnable</item>
-      <item>Runtime</item>
-      <item>RuntimeException</item>
-      <item>RuntimePermission</item>
-      <item>SAXException</item>
-      <item>SAXNotRecognizedException</item>
-      <item>SAXNotSupportedException</item>
-      <item>SAXParseException</item>
-      <item>SAXParser</item>
-      <item>SAXParserFactory</item>
-      <item>SAXResult</item>
-      <item>SAXSource</item>
-      <item>SAXTransformerFactory</item>
-      <item>SERVANT_RETENTION_POLICY_ID</item>
-      <item>SERVICE_FORMATTED</item>
-      <item>SQLData</item>
-      <item>SQLException</item>
-      <item>SQLInput</item>
-      <item>SQLOutput</item>
-      <item>SQLPermission</item>
-      <item>SQLWarning</item>
-      <item>SSLContext</item>
-      <item>SSLContextSpi</item>
-      <item>SSLException</item>
-      <item>SSLHandshakeException</item>
-      <item>SSLKeyException</item>
-      <item>SSLPeerUnverifiedException</item>
-      <item>SSLPermission</item>
-      <item>SSLProtocolException</item>
-      <item>SSLServerSocket</item>
-      <item>SSLServerSocketFactory</item>
-      <item>SSLSession</item>
-      <item>SSLSessionBindingEvent</item>
-      <item>SSLSessionBindingListener</item>
-      <item>SSLSessionContext</item>
-      <item>SSLSocket</item>
-      <item>SSLSocketFactory</item>
-      <item>STRING</item>
-      <item>SUCCESSFUL</item>
-      <item>SYNC_WITH_TRANSPORT</item>
-      <item>SYSTEM_EXCEPTION</item>
-      <item>SampleModel</item>
-      <item>Savepoint</item>
-      <item>ScatteringByteChannel</item>
-      <item>SchemaViolationException</item>
-      <item>ScrollBarUI</item>
-      <item>ScrollPane</item>
-      <item>ScrollPaneAdjustable</item>
-      <item>ScrollPaneBorder</item>
-      <item>ScrollPaneConstants</item>
-      <item>ScrollPaneLayout</item>
-      <item>ScrollPaneUI</item>
-      <item>Scrollable</item>
-      <item>Scrollbar</item>
-      <item>SealedObject</item>
-      <item>SearchControls</item>
-      <item>SearchResult</item>
-      <item>SecretKey</item>
-      <item>SecretKeyFactory</item>
-      <item>SecretKeyFactorySpi</item>
-      <item>SecretKeySpec</item>
-      <item>SecureClassLoader</item>
-      <item>SecureRandom</item>
-      <item>SecureRandomSpi</item>
-      <item>Security</item>
-      <item>SecurityException</item>
-      <item>SecurityManager</item>
-      <item>SecurityPermission</item>
-      <item>Segment</item>
-      <item>SelectableChannel</item>
-      <item>SelectionKey</item>
-      <item>Selector</item>
-      <item>SelectorProvider</item>
-      <item>Separator</item>
-      <item>Separator</item>
-      <item>SeparatorUI</item>
-      <item>Sequence</item>
-      <item>SequenceInputStream</item>
-      <item>Sequencer</item>
-      <item>Serializable</item>
-      <item>SerializablePermission</item>
-      <item>Servant</item>
-      <item>ServantActivator</item>
-      <item>ServantActivatorHelper</item>
-      <item>ServantActivatorOperations</item>
-      <item>ServantActivatorPOA</item>
-      <item>ServantAlreadyActive</item>
-      <item>ServantAlreadyActiveHelper</item>
-      <item>ServantLocator</item>
-      <item>ServantLocatorHelper</item>
-      <item>ServantLocatorOperations</item>
-      <item>ServantLocatorPOA</item>
-      <item>ServantManager</item>
-      <item>ServantManagerOperations</item>
-      <item>ServantNotActive</item>
-      <item>ServantNotActiveHelper</item>
-      <item>ServantObject</item>
-      <item>ServantRetentionPolicy</item>
-      <item>ServantRetentionPolicyOperations</item>
-      <item>ServantRetentionPolicyValue</item>
-      <item>ServerCloneException</item>
-      <item>ServerError</item>
-      <item>ServerException</item>
-      <item>ServerNotActiveException</item>
-      <item>ServerRef</item>
-      <item>ServerRequest</item>
-      <item>ServerRequestInfo</item>
-      <item>ServerRequestInfoOperations</item>
-      <item>ServerRequestInterceptor</item>
-      <item>ServerRequestInterceptorOperations</item>
-      <item>ServerRuntimeException</item>
-      <item>ServerSocket</item>
-      <item>ServerSocketChannel</item>
-      <item>ServerSocketFactory</item>
-      <item>ServiceContext</item>
-      <item>ServiceContextHelper</item>
-      <item>ServiceContextHolder</item>
-      <item>ServiceContextListHelper</item>
-      <item>ServiceContextListHolder</item>
-      <item>ServiceDetail</item>
-      <item>ServiceDetailHelper</item>
-      <item>ServiceIdHelper</item>
-      <item>ServiceInformation</item>
-      <item>ServiceInformationHelper</item>
-      <item>ServiceInformationHolder</item>
-      <item>ServicePermission</item>
-      <item>ServiceRegistry</item>
-      <item>ServiceUI</item>
-      <item>ServiceUIFactory</item>
-      <item>ServiceUnavailableException</item>
-      <item>Set</item>
-      <item>SetOfIntegerSyntax</item>
-      <item>SetOverrideType</item>
-      <item>SetOverrideTypeHelper</item>
-      <item>Severity</item>
-      <item>Shape</item>
-      <item>ShapeGraphicAttribute</item>
-      <item>SheetCollate</item>
-      <item>Short</item>
-      <item>ShortBuffer</item>
-      <item>ShortBufferException</item>
-      <item>ShortHolder</item>
-      <item>ShortLookupTable</item>
-      <item>ShortMessage</item>
-      <item>ShortSeqHelper</item>
-      <item>ShortSeqHolder</item>
-      <item>Sides</item>
-      <item>SidesType</item>
-      <item>Signature</item>
-      <item>SignatureException</item>
-      <item>SignatureSpi</item>
-      <item>SignedObject</item>
-      <item>Signer</item>
-      <item>SimpleAttributeSet</item>
-      <item>SimpleBeanInfo</item>
-      <item>SimpleDateFormat</item>
-      <item>SimpleDoc</item>
-      <item>SimpleFormatter</item>
-      <item>SimpleTimeZone</item>
-      <item>SinglePixelPackedSampleModel</item>
-      <item>SingleSelectionModel</item>
-      <item>SinkChannel</item>
-      <item>Size2DSyntax</item>
-      <item>SizeLimitExceededException</item>
-      <item>SizeRequirements</item>
-      <item>SizeSequence</item>
-      <item>Skeleton</item>
-      <item>SkeletonMismatchException</item>
-      <item>SkeletonNotFoundException</item>
-      <item>SliderUI</item>
-      <item>Socket</item>
-      <item>SocketAddress</item>
-      <item>SocketChannel</item>
-      <item>SocketException</item>
-      <item>SocketFactory</item>
-      <item>SocketHandler</item>
-      <item>SocketImpl</item>
-      <item>SocketImplFactory</item>
-      <item>SocketOptions</item>
-      <item>SocketPermission</item>
-      <item>SocketSecurityException</item>
-      <item>SocketTimeoutException</item>
-      <item>SoftBevelBorder</item>
-      <item>SoftReference</item>
-      <item>SortedMap</item>
-      <item>SortedSet</item>
-      <item>SortingFocusTraversalPolicy</item>
-      <item>Soundbank</item>
-      <item>SoundbankReader</item>
-      <item>SoundbankResource</item>
-      <item>Source</item>
-      <item>SourceChannel</item>
-      <item>SourceDataLine</item>
-      <item>SourceLocator</item>
-      <item>SpinnerDateModel</item>
-      <item>SpinnerListModel</item>
-      <item>SpinnerModel</item>
-      <item>SpinnerNumberModel</item>
-      <item>SpinnerUI</item>
-      <item>SplitPaneBorder</item>
-      <item>SplitPaneUI</item>
-      <item>Spring</item>
-      <item>SpringLayout</item>
-      <item>Stack</item>
-      <item>StackOverflowError</item>
-      <item>StackTraceElement</item>
-      <item>StartTlsRequest</item>
-      <item>StartTlsResponse</item>
-      <item>State</item>
-      <item>StateEdit</item>
-      <item>StateEditable</item>
-      <item>StateFactory</item>
-      <item>Statement</item>
-      <item>Statement</item>
-      <item>StreamCorruptedException</item>
-      <item>StreamHandler</item>
-      <item>StreamPrintService</item>
-      <item>StreamPrintServiceFactory</item>
-      <item>StreamResult</item>
-      <item>StreamSource</item>
-      <item>StreamTokenizer</item>
-      <item>Streamable</item>
-      <item>StreamableValue</item>
-      <item>StrictMath</item>
-      <item>String</item>
-      <item>StringBuffer</item>
-      <item>StringBufferInputStream</item>
-      <item>StringCharacterIterator</item>
-      <item>StringContent</item>
-      <item>StringHolder</item>
-      <item>StringIndexOutOfBoundsException</item>
-      <item>StringNameHelper</item>
-      <item>StringReader</item>
-      <item>StringRefAddr</item>
-      <item>StringSelection</item>
-      <item>StringSeqHelper</item>
-      <item>StringSeqHolder</item>
-      <item>StringTokenizer</item>
-      <item>StringValueHelper</item>
-      <item>StringWriter</item>
-      <item>Stroke</item>
-      <item>Struct</item>
-      <item>StructMember</item>
-      <item>StructMemberHelper</item>
-      <item>Stub</item>
-      <item>StubDelegate</item>
-      <item>StubNotFoundException</item>
-      <item>Style</item>
-      <item>StyleConstants</item>
-      <item>StyleContext</item>
-      <item>StyleSheet</item>
-      <item>StyledDocument</item>
-      <item>StyledEditorKit</item>
-      <item>StyledTextAction</item>
-      <item>Subject</item>
-      <item>SubjectDomainCombiner</item>
-      <item>Subset</item>
-      <item>SupportedValuesAttribute</item>
-      <item>SwingConstants</item>
-      <item>SwingPropertyChangeSupport</item>
-      <item>SwingUtilities</item>
-      <item>SyncFailedException</item>
-      <item>SyncMode</item>
-      <item>SyncScopeHelper</item>
-      <item>Synthesizer</item>
-      <item>SysexMessage</item>
-      <item>System</item>
-      <item>SystemColor</item>
-      <item>SystemException</item>
-      <item>SystemFlavorMap</item>
-      <item>TAG_ALTERNATE_IIOP_ADDRESS</item>
-      <item>TAG_CODE_SETS</item>
-      <item>TAG_INTERNET_IOP</item>
-      <item>TAG_JAVA_CODEBASE</item>
-      <item>TAG_MULTIPLE_COMPONENTS</item>
-      <item>TAG_ORB_TYPE</item>
-      <item>TAG_POLICIES</item>
-      <item>TCKind</item>
-      <item>THREAD_POLICY_ID</item>
-      <item>TRANSACTION_REQUIRED</item>
-      <item>TRANSACTION_ROLLEDBACK</item>
-      <item>TRANSIENT</item>
-      <item>TRANSPORT_RETRY</item>
-      <item>TabExpander</item>
-      <item>TabSet</item>
-      <item>TabStop</item>
-      <item>TabableView</item>
-      <item>TabbedPaneUI</item>
-      <item>TableCellEditor</item>
-      <item>TableCellRenderer</item>
-      <item>TableColumn</item>
-      <item>TableColumnModel</item>
-      <item>TableColumnModelEvent</item>
-      <item>TableColumnModelListener</item>
-      <item>TableHeaderBorder</item>
-      <item>TableHeaderUI</item>
-      <item>TableModel</item>
-      <item>TableModelEvent</item>
-      <item>TableModelListener</item>
-      <item>TableUI</item>
-      <item>TableView</item>
-      <item>Tag</item>
-      <item>TagElement</item>
-      <item>TaggedComponent</item>
-      <item>TaggedComponentHelper</item>
-      <item>TaggedComponentHolder</item>
-      <item>TaggedProfile</item>
-      <item>TaggedProfileHelper</item>
-      <item>TaggedProfileHolder</item>
-      <item>TargetDataLine</item>
-      <item>Templates</item>
-      <item>TemplatesHandler</item>
-      <item>Text</item>
-      <item>TextAction</item>
-      <item>TextArea</item>
-      <item>TextAttribute</item>
-      <item>TextComponent</item>
-      <item>TextEvent</item>
-      <item>TextField</item>
-      <item>TextFieldBorder</item>
-      <item>TextHitInfo</item>
-      <item>TextInputCallback</item>
-      <item>TextLayout</item>
-      <item>TextListener</item>
-      <item>TextMeasurer</item>
-      <item>TextOutputCallback</item>
-      <item>TextSyntax</item>
-      <item>TextUI</item>
-      <item>TexturePaint</item>
-      <item>Thread</item>
-      <item>ThreadDeath</item>
-      <item>ThreadGroup</item>
-      <item>ThreadLocal</item>
-      <item>ThreadPolicy</item>
-      <item>ThreadPolicyOperations</item>
-      <item>ThreadPolicyValue</item>
-      <item>Throwable</item>
-      <item>Tie</item>
-      <item>TileObserver</item>
-      <item>Time</item>
-      <item>TimeLimitExceededException</item>
-      <item>TimeZone</item>
-      <item>Timer</item>
-      <item>Timer</item>
-      <item>TimerTask</item>
-      <item>Timestamp</item>
-      <item>TitledBorder</item>
-      <item>TitledBorderUIResource</item>
-      <item>ToggleButtonBorder</item>
-      <item>ToggleButtonBorder</item>
-      <item>ToggleButtonModel</item>
-      <item>TooManyListenersException</item>
-      <item>ToolBarBorder</item>
-      <item>ToolBarUI</item>
-      <item>ToolTipManager</item>
-      <item>ToolTipUI</item>
-      <item>Toolkit</item>
-      <item>Track</item>
-      <item>TransactionRequiredException</item>
-      <item>TransactionRolledbackException</item>
-      <item>TransactionService</item>
-      <item>TransferHandler</item>
-      <item>Transferable</item>
-      <item>TransformAttribute</item>
-      <item>Transformer</item>
-      <item>TransformerConfigurationException</item>
-      <item>TransformerException</item>
-      <item>TransformerFactory</item>
-      <item>TransformerFactoryConfigurationError</item>
-      <item>TransformerHandler</item>
-      <item>Transmitter</item>
-      <item>Transparency</item>
-      <item>TreeCellEditor</item>
-      <item>TreeCellRenderer</item>
-      <item>TreeControlIcon</item>
-      <item>TreeExpansionEvent</item>
-      <item>TreeExpansionListener</item>
-      <item>TreeFolderIcon</item>
-      <item>TreeLeafIcon</item>
-      <item>TreeMap</item>
-      <item>TreeModel</item>
-      <item>TreeModelEvent</item>
-      <item>TreeModelListener</item>
-      <item>TreeNode</item>
-      <item>TreePath</item>
-      <item>TreeSelectionEvent</item>
-      <item>TreeSelectionListener</item>
-      <item>TreeSelectionModel</item>
-      <item>TreeSet</item>
-      <item>TreeUI</item>
-      <item>TreeWillExpandListener</item>
-      <item>TrustAnchor</item>
-      <item>TrustManager</item>
-      <item>TrustManagerFactory</item>
-      <item>TrustManagerFactorySpi</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>Type</item>
-      <item>TypeCode</item>
-      <item>TypeCodeHolder</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatch</item>
-      <item>TypeMismatchHelper</item>
-      <item>TypeMismatchHelper</item>
-      <item>Types</item>
-      <item>UID</item>
-      <item>UIDefaults</item>
-      <item>UIManager</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>UIResource</item>
-      <item>ULongLongSeqHelper</item>
-      <item>ULongLongSeqHolder</item>
-      <item>ULongSeqHelper</item>
-      <item>ULongSeqHolder</item>
-      <item>UNKNOWN</item>
-      <item>UNSUPPORTED_POLICY</item>
-      <item>UNSUPPORTED_POLICY_VALUE</item>
-      <item>URI</item>
-      <item>URIException</item>
-      <item>URIResolver</item>
-      <item>URISyntax</item>
-      <item>URISyntaxException</item>
-      <item>URL</item>
-      <item>URL</item>
-      <item>URLClassLoader</item>
-      <item>URLConnection</item>
-      <item>URLDecoder</item>
-      <item>URLEncoder</item>
-      <item>URLStreamHandler</item>
-      <item>URLStreamHandlerFactory</item>
-      <item>URLStringHelper</item>
-      <item>USER_EXCEPTION</item>
-      <item>UShortSeqHelper</item>
-      <item>UShortSeqHolder</item>
-      <item>UTFDataFormatException</item>
-      <item>UndeclaredThrowableException</item>
-      <item>UnderlineAction</item>
-      <item>UndoManager</item>
-      <item>UndoableEdit</item>
-      <item>UndoableEditEvent</item>
-      <item>UndoableEditListener</item>
-      <item>UndoableEditSupport</item>
-      <item>UnexpectedException</item>
-      <item>UnicastRemoteObject</item>
-      <item>UnicodeBlock</item>
-      <item>UnionMember</item>
-      <item>UnionMemberHelper</item>
-      <item>UnknownEncoding</item>
-      <item>UnknownEncodingHelper</item>
-      <item>UnknownError</item>
-      <item>UnknownException</item>
-      <item>UnknownGroupException</item>
-      <item>UnknownHostException</item>
-      <item>UnknownHostException</item>
-      <item>UnknownObjectException</item>
-      <item>UnknownServiceException</item>
-      <item>UnknownTag</item>
-      <item>UnknownUserException</item>
-      <item>UnknownUserExceptionHelper</item>
-      <item>UnknownUserExceptionHolder</item>
-      <item>UnmappableCharacterException</item>
-      <item>UnmarshalException</item>
-      <item>UnmodifiableSetException</item>
-      <item>UnrecoverableKeyException</item>
-      <item>Unreferenced</item>
-      <item>UnresolvedAddressException</item>
-      <item>UnresolvedPermission</item>
-      <item>UnsatisfiedLinkError</item>
-      <item>UnsolicitedNotification</item>
-      <item>UnsolicitedNotificationEvent</item>
-      <item>UnsolicitedNotificationListener</item>
-      <item>UnsupportedAddressTypeException</item>
-      <item>UnsupportedAudioFileException</item>
-      <item>UnsupportedCallbackException</item>
-      <item>UnsupportedCharsetException</item>
-      <item>UnsupportedClassVersionError</item>
-      <item>UnsupportedEncodingException</item>
-      <item>UnsupportedFlavorException</item>
-      <item>UnsupportedLookAndFeelException</item>
-      <item>UnsupportedOperationException</item>
-      <item>UserException</item>
-      <item>Util</item>
-      <item>UtilDelegate</item>
-      <item>Utilities</item>
-      <item>VMID</item>
-      <item>VM_ABSTRACT</item>
-      <item>VM_CUSTOM</item>
-      <item>VM_NONE</item>
-      <item>VM_TRUNCATABLE</item>
-      <item>ValueBase</item>
-      <item>ValueBaseHelper</item>
-      <item>ValueBaseHolder</item>
-      <item>ValueFactory</item>
-      <item>ValueHandler</item>
-      <item>ValueMember</item>
-      <item>ValueMemberHelper</item>
-      <item>VariableHeightLayoutCache</item>
-      <item>Vector</item>
-      <item>VerifyError</item>
-      <item>VersionSpecHelper</item>
-      <item>VetoableChangeListener</item>
-      <item>VetoableChangeListenerProxy</item>
-      <item>VetoableChangeSupport</item>
-      <item>View</item>
-      <item>ViewFactory</item>
-      <item>ViewportLayout</item>
-      <item>ViewportUI</item>
-      <item>VirtualMachineError</item>
-      <item>Visibility</item>
-      <item>VisibilityHelper</item>
-      <item>VoiceStatus</item>
-      <item>Void</item>
-      <item>VolatileImage</item>
-      <item>WCharSeqHelper</item>
-      <item>WCharSeqHolder</item>
-      <item>WStringSeqHelper</item>
-      <item>WStringSeqHolder</item>
-      <item>WStringValueHelper</item>
-      <item>WeakHashMap</item>
-      <item>WeakReference</item>
-      <item>Window</item>
-      <item>WindowAdapter</item>
-      <item>WindowConstants</item>
-      <item>WindowEvent</item>
-      <item>WindowFocusListener</item>
-      <item>WindowListener</item>
-      <item>WindowStateListener</item>
-      <item>WrappedPlainView</item>
-      <item>WritableByteChannel</item>
-      <item>WritableRaster</item>
-      <item>WritableRenderedImage</item>
-      <item>WriteAbortedException</item>
-      <item>Writer</item>
-      <item>WrongAdapter</item>
-      <item>WrongAdapterHelper</item>
-      <item>WrongPolicy</item>
-      <item>WrongPolicyHelper</item>
-      <item>WrongTransaction</item>
-      <item>WrongTransactionHelper</item>
-      <item>WrongTransactionHolder</item>
-      <item>X500Principal</item>
-      <item>X500PrivateCredential</item>
-      <item>X509CRL</item>
-      <item>X509CRLEntry</item>
-      <item>X509CRLSelector</item>
-      <item>X509CertSelector</item>
-      <item>X509Certificate</item>
-      <item>X509Certificate</item>
-      <item>X509EncodedKeySpec</item>
-      <item>X509Extension</item>
-      <item>X509KeyManager</item>
-      <item>X509TrustManager</item>
-      <item>XAConnection</item>
-      <item>XADataSource</item>
-      <item>XAException</item>
-      <item>XAResource</item>
-      <item>XMLDecoder</item>
-      <item>XMLEncoder</item>
-      <item>XMLFilter</item>
-      <item>XMLFilterImpl</item>
-      <item>XMLFormatter</item>
-      <item>XMLReader</item>
-      <item>XMLReaderAdapter</item>
-      <item>XMLReaderFactory</item>
-      <item>Xid</item>
-      <item>ZipEntry</item>
-      <item>ZipException</item>
-      <item>ZipFile</item>
-      <item>ZipInputStream</item>
-      <item>ZipOutputStream</item>
-      <item>ZoneView</item>
-      <item>_BindingIteratorImplBase</item>
-      <item>_BindingIteratorStub</item>
-      <item>_DynAnyFactoryStub</item>
-      <item>_DynAnyStub</item>
-      <item>_DynArrayStub</item>
-      <item>_DynEnumStub</item>
-      <item>_DynFixedStub</item>
-      <item>_DynSequenceStub</item>
-      <item>_DynStructStub</item>
-      <item>_DynUnionStub</item>
-      <item>_DynValueStub</item>
-      <item>_IDLTypeStub</item>
-      <item>_NamingContextExtStub</item>
-      <item>_NamingContextImplBase</item>
-      <item>_NamingContextStub</item>
-      <item>_PolicyStub</item>
-      <item>_Remote_Stub</item>
-      <item>_ServantActivatorStub</item>
-      <item>_ServantLocatorStub</item>
-    </list>
-
-    <list name="java-1.4.2-keywords">
-      <item>abstract</item>
-      <item>assert</item>
-      <item>break</item>
-      <item>case</item>
-      <item>catch</item>
-      <item>class</item>
-      <item>continue</item>
-      <item>default</item>
-      <item>do</item>
-      <item>else</item>
-      <item>extends</item>
-      <item>false</item>
-      <item>finally</item>
-      <item>for</item>
-      <item>goto</item>
-      <item>if</item>
-      <item>implements</item>
-      <item>import</item>
-      <item>instanceof</item>
-      <item>interface</item>
-      <item>native</item>
-      <item>new</item>
-      <item>null</item>
-      <item>package</item>
-      <item>private</item>
-      <item>protected</item>
-      <item>public</item>
-      <item>return</item>
-      <item>super</item>
-      <item>strictfp</item>
-      <item>switch</item>
-      <item>synchronized</item>
-      <item>this</item>
-      <item>throws</item>
-      <item>throw</item>
-      <item>transient</item>
-      <item>true</item>
-      <item>try</item>
-      <item>volatile</item>
-      <item>while</item>
-    </list>
-
-    <list name="java-1.4.2-types">
-      <item>boolean</item>
-      <item>byte</item>
-      <item>char</item>
-      <item>const</item>
-      <item>double</item>
-      <item>final</item>
-      <item>float</item>
-      <item>int</item>
-      <item>long</item>
-      <item>short</item>
-      <item>static</item>
-      <item>void</item>
-    </list>
-
-    <list name="jsp-reserved-words">
-      <item>and</item>
-      <item>eq</item>
-      <item>gt</item>
-      <item>true</item>
-      <item>instanceof</item>
-      <item>or</item>
-      <item>ne</item>
-      <item>le</item>
-      <item>false</item>
-      <item>empty</item>
-      <item>not</item>
-      <item>lt</item>
-      <item>ge</item>
-      <item>null</item>
-      <item>div</item>
-      <item>mod</item>
-    </list>
-
-    <contexts>
-        <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
-        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
-        <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
-      </context>
-
-      <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-      </context>
-
-      <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
-        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
-        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>
-      </context>
-
-      <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
-        <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
-        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
-        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
-        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
-        <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
-      </context>
-
-      <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
-        <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
-        <DetectChar char="'" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>
-        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <keyword String="java-1.4.2-keywords" attribute="Keyword" context="#stay"/>
-        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
-        <keyword String="java-1.4.2-types" attribute="Types" context="#stay"/>
-        <keyword String="java-1.4.2-classes" attribute="Java 1.4.2 Classes" context="#stay"/>
-        <Float attribute="Float" context="Float Suffixes"/>
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <Int attribute="Decimal" context="Int Suffixes"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <RegExpr String="//\s*BEGIN.*$" attribute="Decimal" context="#stay" beginRegion="Region1" firstNonSpace="true"/>
-        <RegExpr String="//\s*END.*$" attribute="Decimal" context="#stay" endRegion="Region1" firstNonSpace="true"/>
-        <DetectChar char="&quot;" attribute="String" context="Java String"/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay" beginRegion="Brace1"/>
-        <DetectChar char="}" attribute="Normal Text" context="#stay" endRegion="Brace1"/>
-        <AnyChar String="!%&amp;()+,-&lt;=&gt;?[]^{|}~" attribute="Symbol" context="#stay"/>
-        <Detect2Chars char="/" char1="/" attribute="Java Comment" context="Java Single-Line Comment"/>
-        <Detect2Chars char="/" char1="*" attribute="Java Comment" context="Java Multi-Line Comment"/>
-      </context>
-
-      <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-          <AnyChar String="fF" attribute="Float" context="#pop"/>
-      </context>
-
-      <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-          <StringDetect attribute="Decimal" context="#pop" String="ULL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LUL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LLU" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="UL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LU" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="LL" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="U" insensitive="true"/>
-          <StringDetect attribute="Decimal" context="#pop" String="L" insensitive="true"/>
-      </context>
-
-      <context name="Jsp Expression" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="'${'" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Jsp Scriptlet" context="#pop"/>
-        <keyword String="java-1.4.2-keywords" attribute="Keyword" context="#stay"/>
-        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
-        <keyword String="java-1.4.2-types" attribute="Types" context="#stay"/>
-        <keyword String="java-1.4.2-classes" attribute="Java 1.4.2 Classes" context="#stay"/>
-        <Float attribute="Float" context="Float Suffixes"/>
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <Int attribute="Decimal" context="Int Suffixes"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <DetectChar char="&quot;" attribute="String" context="Java String"/>
-        <AnyChar String="!%&amp;()+,-&lt;=&gt;?[]^{|}~" attribute="Symbol" context="#stay"/>
-      </context>
-
-      <context name="Java Single-Line Comment" attribute="Java Comment" lineEndContext="#pop"/>
-
-      <context name="Java Multi-Line Comment" attribute="Java Comment" lineEndContext="#stay">
-        <Detect2Chars char="*" char1="/" attribute="Java Comment" context="#pop"/>
-      </context>
-
-      <context name="Java String" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="&quot;" attribute="String" context="#stay"/>
-        <DetectChar char="&quot;" attribute="String" context="#pop"/>
-      </context>
-
-      <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
-        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-      </context>
-
-      <context name="Html Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
-        <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
-        <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
-        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
-        <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
-      </context>
-
-      <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <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"/>
-      </context>
-
-      <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>
-      </context>
-
-    </contexts>
-
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword" defStyleNum="dsKeyword"/>
-      <itemData name="Identifier" defStyleNum="dsOthers"/>
-      <itemData name="Types" defStyleNum="dsDataType"/>
-      <itemData name="String" defStyleNum="dsString"/>
-
-      <itemData name="Html Comment" defStyleNum="dsComment"/>
-
-      <itemData name="Decimal" defStyleNum="dsDecVal"/>
-      <itemData name="Octal" defStyleNum="dsBaseN"/>
-      <itemData name="Hex" defStyleNum="dsBaseN"/>
-      <itemData name="Float" defStyleNum="dsFloat"/>
-      <itemData name="Char" defStyleNum="dsChar"/>
-      <itemData name="Symbol" defStyleNum="dsNormal"/>
-      <itemData name="Java 1.4.2 Classes" defStyleNum="dsNormal" color="#0095FF" selColor="#FFFFFF" bold="1" italic="0"/>
-
-      <itemData name="Jsp Directive" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="true" italic="true"/>
-      <itemData name="Jsp Scriptlet" defStyleNum="dsNormal" color="#000000" selColor="#ffffff" bold="true" italic="false"/>
-      <itemData name="Jsp Expression" defStyleNum="dsNormal" color="#000000" selColor="#ffffff" bold="true" italic="false"/>
-      <itemData name="Jsp Comment" defStyleNum="dsComment"/>
-
-      <itemData name="Jsp Param Name" defStyleNum="dsOthers"/>
-      <itemData name="Jsp Param Value" defStyleNum="dsString"/>
-
-      <itemData name="Java Comment" defStyleNum="dsComment"/>
+<language version="5" 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">
+      <item>and</item>
+      <item>eq</item>
+      <item>gt</item>
+      <item>true</item>
+      <item>instanceof</item>
+      <item>or</item>
+      <item>ne</item>
+      <item>le</item>
+      <item>false</item>
+      <item>empty</item>
+      <item>not</item>
+      <item>lt</item>
+      <item>ge</item>
+      <item>null</item>
+      <item>div</item>
+      <item>mod</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
+        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
+        <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
+        <RegExpr String="&lt;script\b" attribute="Normal Text" context="JS" beginRegion="script" />
+        <RegExpr String="&lt;style\b" attribute="Normal Text" context="CSS" beginRegion="style" />
+        <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
+      </context>
+
+      <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="CSS content" char="&gt;" />
+        <Detect2Chars attribute="Normal Text" context="#pop" char="/" char1="&gt;" endRegion="style" />
+        <IncludeRules context="Html Attribute" />
+      </context>
+
+      <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect attribute="Normal Text" context="#pop#pop" String="&lt;/style>" endRegion="style" />
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+
+      <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="JS content" char="&gt;" />
+        <Detect2Chars attribute="Normal Text" context="#pop" char="/" char1="&gt;" endRegion="script" />
+        <IncludeRules context="Html Attribute" />
+      </context>
+
+      <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script\b" endRegion="script" />
+        <RegExpr attribute="Jsp Comment" context="JS comment close" String="//(?=.*&lt;/script)" />
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context name="JS comment close" attribute="Jsp Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect attribute="Normal Text" context="#pop#pop#pop" String="&lt;/script" endRegion="script" />
+      </context>
+
+      <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+      </context>
+
+      <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
+        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
+        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>
+      </context>
+
+      <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
+        <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
+        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
+        <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
+        <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
+        <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
+        <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
+        <DetectChar char="'" attribute="Types" context="#pop#pop"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>
+        <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+
+      <context name="Jsp Expression" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Jsp Expression" context="#pop"/>
+        <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+
+      <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+      </context>
+
+      <context name="Html Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
+        <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
+        <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
+        <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
+      </context>
+
+      <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <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"/>
+      </context>
+
+      <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>
+      </context>
+
+    </contexts>
+
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Identifier" defStyleNum="dsOthers"/>
+      <itemData name="Types" defStyleNum="dsDataType"/>
+
+      <itemData name="Html Comment" defStyleNum="dsComment"/>
+
+      <itemData name="Jsp Directive" defStyleNum="dsBuiltIn" bold="true" italic="true"/>
+      <itemData name="Jsp Scriptlet" defStyleNum="dsPreprocessor" bold="true" italic="false"/>
+      <itemData name="Jsp Expression" defStyleNum="dsPreprocessor" bold="true" italic="false"/>
+      <itemData name="Jsp Comment" defStyleNum="dsComment"/>
+
+      <itemData name="Jsp Param Name" defStyleNum="dsOthers"/>
+      <itemData name="Jsp Param Value" defStyleNum="dsString"/>
     </itemDatas>
   </highlighting>
 
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -27,9 +27,13 @@
   Author: Timothy E. Holy, Washington University in St. Louis
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!ENTITY int "[0-9]([0-9_]*[0-9])?">
+  <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
+]>
 
-<language name="Julia" section="Sources" version="6" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" section="Sources" version="7" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="block_begin">
@@ -46,6 +50,7 @@
     </list>
     <list name="block_eb">
       <item>catch</item>
+      <item>finally</item>
       <item>else</item>
       <item>elseif</item>
     </list>
@@ -68,6 +73,16 @@
       <item>module</item>
       <item>return</item>
       <item>typealias</item>
+      <item>importall</item>
+      <item>baremodule</item>
+      <item>using</item>
+      <item>where</item>
+      <item>new</item>
+      <item>in</item>
+      <item>struct</item>
+      <item>ans</item>
+      <!-- C Interface -->
+      <item>ccall</item>
     </list>
     <list name="types">
       <item>AbstractArray</item>
@@ -140,66 +155,385 @@
       <item>Vector</item>
       <item>Void</item>
       <item>WeakRef</item>
+      <!-- Essentials -->
+      <item>Missing</item>
+      <item>Cmd</item>
+      <item>EnvDict</item>
+      <item>VersionNumber</item>
+      <item>ArgumentError</item>
+      <item>AssertionError</item>
+      <item>BoundsError</item>
+      <item>CompositeException</item>
+      <item>DimensionMismatch</item>
+      <item>DivideError</item>
+      <item>DomainError</item>
+      <item>EOFError</item>
+      <item>ErrorException</item>
+      <item>InexactError</item>
+      <item>InterruptException</item>
+      <item>KeyError</item>
+      <item>LoadError</item>
+      <item>MethodError</item>
+      <item>MissingException</item>
+      <item>OutOfMemoryError</item>
+      <item>ReadOnlyMemoryError</item>
+      <item>OverflowError</item>
+      <item>StackOverflowError</item>
+      <item>SystemError</item>
+      <item>TypeError</item>
+      <item>UndefKeywordError</item>
+      <item>UndefRefError</item>
+      <item>UndefVarError</item>
+      <item>StringIndexError</item>
+      <item>InitError</item>
+      <item>ExponentialBackOff</item>
+      <item>Timer</item>
+      <item>AsyncCondition</item>
+      <item>ParseError</item>
+      <!-- Collections and Data Structures -->
+      <item>IteratorEltype</item>
+      <item>AbstractRange</item>
+      <item>OrdinalRange</item>
+      <item>AbstractUnitRange</item>
+      <item>StepRange</item>
+      <item>UnitRange</item>
+      <item>LinRange</item>
+      <item>IdDict</item>
+      <item>WeakKeyDict</item>
+      <item>ImmutableDict</item>
+      <item>BitSet</item>
+      <item>Pair</item>
+      <!-- Math -->
+      <item>OneTo</item>
+      <item>StepRangeLen</item>
+      <item>RoundingMode</item>
+      <!-- Numbers -->
+      <item>AbstractFloat</item>
+      <item>AbstractIrrational</item>
+      <item>Float16</item>
+      <item>Float32</item>
+      <item>Float64</item>
+      <item>BigFloat</item>
+      <item>Int128</item>
+      <item>UInt128</item>
+      <item>BigInt</item>
+      <item>ComplexF16</item>
+      <item>ComplexF32</item>
+      <item>ComplexF64</item>
+      <item>Irrational</item>
+      <item>UnionAll</item>
+      <item>NamedTuple</item>
+      <item>Val</item>
+      <item>Vararg</item>
+      <item>Some</item>
+      <!-- String -->
+      <item>AbstractChar</item>
+      <item>SubstitutionString</item>
+      <item>AbstractString</item>
+      <!-- Array -->
+      <item>UndefInitializer</item>
+      <item>DenseArray</item>
+      <item>DenseVector</item>
+      <item>DenseMatrix</item>
+      <item>BitArray</item>
+      <item>IndexStyle</item>
+      <item>IndexLinear</item>
+      <item>IndexCartesian</item>
+      <item>BroadcastStyle</item>
+      <item>AbstractArrayStyle</item>
+      <item>ArrayStyle</item>
+      <item>DefaultArrayStyle</item>
+      <item>Colon</item>
+      <item>CartesianIndex</item>
+      <item>CartesianIndices</item>
+      <item>Dims</item>
+      <item>LinearIndices</item>
+      <item>PermutedDimsArray</item>
+      <!-- Tasks -->
+      <item>Condition</item>
+      <item>Channel</item>
+      <!-- Threads -->
+      <item>Atomic</item>
+      <item>AbstractLock</item>
+      <item>ReentrantLock</item>
+      <item>Mutex</item>
+      <item>SpinLock</item>
+      <item>RecursiveSpinLock</item>
+      <item>Semaphore</item>
+      <!-- Filesystem (Libc) -->
+      <item>RawFD</item>
+      <!-- I/O and Network -->
+      <item>IOBuffer</item>
+      <item>IOContext</item>
+      <item>TextDisplay</item>
+      <item>AbstractDisplay</item>
+      <!-- Sort -->
+      <item>PartialQuickSort</item>
+      <!-- Iteration utilities -->
+      <item>Stateful</item>
+      <!-- Iterators -->
+      <item>Pairs</item>
+      <!-- C Interface -->
+      <item>CFunction</item>
+      <item>Ptr</item>
+      <item>Ref</item>
+      <item>Cchar</item>
+      <item>Cuchar</item>
+      <item>Cshort</item>
+      <item>Cstring</item>
+      <item>Cushort</item>
+      <item>Cint</item>
+      <item>Cuint</item>
+      <item>Clong</item>
+      <item>Culong</item>
+      <item>Clonglong</item>
+      <item>Culonglong</item>
+      <item>Cintmax_t</item>
+      <item>Cuintmax_t</item>
+      <item>Csize_t</item>
+      <item>Cssize_t</item>
+      <item>Cptrdiff_t</item>
+      <item>Cwchar_t</item>
+      <item>Cwstring</item>
+      <item>Cfloat</item>
+      <item>Cdouble</item>
+      <!-- C Standard Library -->
+      <item>TmStruct</item>
+      <!-- StackTraces -->
+      <item>StackFrame</item>
+      <item>StackTrace</item>
+      <!-- Base64 -->
+      <item>Base64EncodePipe</item>
+      <item>Base64DecodePipe</item>
+      <!-- Dates -->
+      <item>Period</item>
+      <item>CompoundPeriod</item>
+      <item>Instant</item>
+      <item>UTInstant</item>
+      <item>TimeType</item>
+      <item>DateTime</item>
+      <item>Date</item>
+      <item>Time</item>
+      <item>DateFormat</item>
+      <!-- Base.CoreLogging -->
+      <item>LogLevel</item>
+      <item>AbstractLogger</item>
+      <item>NullLogger</item>
+      <item>ConsoleLogger</item>
+      <item>SimpleLogger</item>
+      <!-- Mmap -->
+      <item>Anonymous</item>
+      <!-- Random -->
+      <item>RandomDevice</item>
+      <item>MersenneTwister</item>
+      <!-- SharedArrays -->
+      <item>SharedArray</item>
+      <!-- Sockets -->
+      <item>IPv4</item>
+      <item>IPv6</item>
+      <item>TCPSocket</item>
+      <item>UDPSocket</item>
+      <!-- SparseArrays -->
+      <item>SparseVector</item>
+      <item>SparseMatrixCSC</item>
+      <!-- Others -->
+      <item>AbstractChannel</item>
+      <item>AbstractSet</item>
+      <item>AbstractDict</item>
+      <item>BitMatrix</item>
+      <item>BitVector</item>
+      <item>Enum</item>
+      <item>CapturedException</item>
+      <item>InvalidStateException</item>
+      <item>ProcessFailedException</item>
     </list>
+
+    <list name="constants">
+      <!-- Constants -->
+      <item>nothing</item>
+      <item>PROGRAM_FILE</item>
+      <item>ARGS</item>
+      <item>C_NULL</item>
+      <item>VERSION</item>
+      <item>LOAD_PATH</item>
+      <item>DEPOT_PATH</item>
+      <!-- Sys -->
+      <item>BINDIR</item>
+      <item>CPU_THREADS</item>
+      <item>WORD_SIZE</item>
+      <item>KERNEL</item>
+      <item>ARCH</item>
+      <item>MACHINE</item>
+      <!-- Essentials -->
+      <item>missing</item>
+      <item>devnull</item>
+      <item>ENV</item>
+      <!-- I/O and Network -->
+      <item>stdout</item>
+      <item>stderr</item>
+      <item>stdin</item>
+      <item>open</item>
+      <item>read</item>
+      <item>write</item>
+      <item>create</item>
+      <item>truncate</item>
+      <item>append</item>
+      <item>ENDIAN_BOM</item>
+      <!-- Numbers -->
+      <item>im</item>
+      <item>pi</item>
+      <item>e</item>
+      <item>catalan</item>
+      <item>eulergamma</item>
+      <item>golden</item>
+      <item>Inf</item>
+      <item>Inf64</item>
+      <item>Inf32</item>
+      <item>Inf16</item>
+      <item>NaN</item>
+      <item>NaN64</item>
+      <item>NaN32</item>
+      <item>NaN16</item>
+      <!-- Math -->
+      <item>RoundNearest</item>
+      <item>RoundNearestTiesAway</item>
+      <item>RoundNearestTiesUp</item>
+      <item>RoundToZero</item>
+      <item>RoundFromZero</item>
+      <item>RoundUp</item>
+      <item>RoundDown</item>
+      <!-- Array -->
+      <item>AbstractVecOrMat</item>
+      <item>undef</item>
+      <item>VecOrMat</item>
+      <item>DenseVecOrMat</item>
+      <item>StridedArray</item>
+      <item>StridedVector</item>
+      <item>StridedMatrix</item>
+      <item>StridedVecOrMat</item>
+      <!-- Sort -->
+      <item>InsertionSort</item>
+      <item>MergeSort</item>
+      <item>QuickSort</item>
+      <item>InsertionSort</item>
+      <!-- Libc -->
+      <item>MS_ASYNC</item>
+      <item>MS_INVALIDATE</item>
+      <item>MS_SYNC</item>
+    </list>
+    <list name="booleans">
+      <item>true</item>
+      <item>false</item>
+    </list>
+    <list name="modules">
+      <item>Base</item>
+      <item>Core</item>
+      <item>Main</item>
+      <item>Meta</item>
+      <item>StackTraces</item>
+      <item>Sys</item>
+      <item>Libc</item>
+      <item>Docs</item>
+      <item>Threads</item>
+      <item>Iterators</item>
+      <item>Broadcast</item>
+      <item>MathConstants</item>
+      <item>Math</item>
+      <item>Unicode</item>
+      <item>Sort</item>
+      <item>Base64</item>
+      <item>Dates</item>
+      <item>Mmap</item>
+      <item>Random</item>
+      <item>SharedArrays</item>
+      <item>Sockets</item>
+      <item>SparseArrays</item>
+      <item>CoreLogging</item>
+    </list>
     <contexts>
 
       <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
 
-	<DetectSpaces />
+        <DetectSpaces />
 
         <!-- Blocks -->
-        <keyword context="#stay" attribute="Keyword" String="block_begin" 
-beginRegion="block" />
-        <keyword context="#stay" attribute="Keyword" String="block_eb" 
-endRegion="block" beginRegion="block" />
-        <keyword context="#stay" attribute="Keyword" String="block_end" 
-endRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_begin"
+                 beginRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_eb"
+                 endRegion="block" beginRegion="block" />
+        <keyword context="#stay" attribute="Keyword" String="block_end"
+                 endRegion="block" />
         <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />
         <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
 
         <!-- Keywords, types, and comments -->
+        <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b" />
+        <RegExpr context="#stay" attribute="Keyword" String="\bmutable\s+struct\b" />
         <keyword context="#stay" attribute="Keyword" String="keywords" />
         <keyword context="#stay" attribute="Data Type" String="types" />
+        <keyword context="#stay" attribute="Boolean" String="booleans" />
+        <keyword context="#stay" attribute="Constant" String="constants" />
+        <keyword context="#stay" attribute="Module" String="modules" />
+        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>
         <DetectChar char="#" context="1-comment" attribute="Comment"/>
 
-	<!-- Lists and arrays -->
+        <!-- Lists and arrays -->
         <!-- <DetectChar char="(" context="nested" beginRegion="nested" attribute="Delimiter" />
         <DetectChar char="[" context="squared" beginRegion="squared" attribute="Delimiter" />
         <DetectChar char="{" context="curly" beginRegion="curly" attribute="Delimiter" /> -->
 
         <!-- Strings -->
-	<DetectChar attribute="String" context="String" char="&quot;"/>
+        <StringDetect attribute="String" context="Block-String" String="&quot;&quot;&quot;" beginRegion="block-string"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <!-- Regular expressions -->
+        <StringDetect attribute="String" context="Regex-Block-String" String="r&quot;&quot;&quot;" beginRegion="block-string"/>
+        <Detect2Chars attribute="String" context="Regex-String" char="r" char1="&quot;"/>
+        <!-- Byte Arrays -->
+        <StringDetect attribute="String" context="Block-String" String="b&quot;&quot;&quot;" beginRegion="block-string"/>
+        <Detect2Chars attribute="String" context="String" char="b" char1="&quot;"/>
+        <!-- Version Number -->
+        <Detect2Chars attribute="String" context="String" char="v" char1="&quot;"/>
+        <!-- Raw Strings -->
+        <StringDetect attribute="String" context="Raw-Block-String" String="raw&quot;&quot;&quot;" beginRegion="block-string"/>
+        <StringDetect attribute="String" context="Raw-String" String="raw&quot;"/>
+        <!-- Documentation -->
+        <StringDetect attribute="String" context="Block-String" String="doc&quot;&quot;&quot;" beginRegion="block-string"/>
+        <StringDetect attribute="String" context="String" String="doc&quot;"/>
 
+        <!-- For Running External Programs -->
+        <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
+        <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
+
         <!-- Multi-character operators -->
         <StringDetect context="#stay" attribute="Operator" String="..."/>
-        <StringDetect context="#stay" attribute="Operator" String="::"/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;"/>
-        <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=".'"/>
-        <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="&amp;="/>
-        <StringDetect context="#stay" attribute="Operator" String="|="/>
-        <StringDetect context="#stay" attribute="Operator" String="$="/>
+        <Detect2Chars context="#stay" attribute="Operator" char=":" char1=":"/>
         <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;="/>
         <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;="/>
         <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;="/>
+        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>
+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>
+        <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="'"/>
+        <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="&amp;" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="="/>
+        <Detect2Chars context="#stay" attribute="Operator" char="$" char1="="/>
 
         <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
         <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
-        <RegExpr context="_adjoint" attribute="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?(?=')" />
+        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />
         <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />
         <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
 
@@ -207,11 +541,17 @@
         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
         <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" />
 
+        <RegExpr context="#stay" attribute="Macro" String="@[a-zA-Z_]\w*" />
+        <RegExpr context="#stay" attribute="Function" String="\b[A-Za-z_]\w*(?=\!?\()" />
+
         <!-- Identifiers, numbers and braces -->
         <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
         <DetectIdentifier context="#stay" attribute="Variable" />
-        <RegExpr context="#stay" attribute="Hex" String="0x[0-9a-fA-F]+(im)?" />
-        <RegExpr context="#stay" attribute="Float" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?(im)?" />
+        <RegExpr context="#stay" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?\d+(im)?"/>
+        <RegExpr context="#stay" attribute="Hex" String="0x&hex;(im)?" />
+        <RegExpr context="#stay" attribute="Octal" String="0o[0-7]([0-7_]*[0-7])?(im)?" />
+        <RegExpr context="#stay" attribute="Binary" String="0b[01]([01_]*[01])?(im)?" />
+        <RegExpr context="#stay" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
 
         <!-- Single-character operators -->
@@ -243,26 +583,98 @@
       <!-- Context entered after encountering an " (string) -->
       <context attribute="String" lineEndContext="#pop" name="String">
         <DetectSpaces />
-        <DetectIdentifier />
         <LineContinue attribute="String" context="#stay"/>
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
+      <context attribute="String" lineEndContext="#stay" name="Block-String">
+        <DetectSpaces />
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+      </context>
+      <!-- Raw String -->
+      <context attribute="String" lineEndContext="#pop" name="Raw-String">
+        <DetectSpaces />
+        <LineContinue attribute="String" context="#stay"/>
+        <RegExpr attribute="String Char" context="#stay" String="(\\\\)*\\&quot;"/>
+        <RegExpr attribute="String Char" context="#stay" String="(\\\\)+(?=&quot;)"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Raw-Block-String">
+        <DetectSpaces />
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
+      </context>
+      <!-- Command String -->
+      <context attribute="Command String" lineEndContext="#pop" name="Backtick-String">
+        <DetectSpaces />
+        <LineContinue attribute="Command String" context="#stay"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="Command String" context="#pop" char="`"/>
+      </context>
+      <context attribute="Command String" lineEndContext="#stay" name="Block-Backtick-String">
+        <DetectSpaces />
+        <StringDetect attribute="Command String" context="#pop" String="```" endRegion="block-string"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+      </context>
 
+      <!-- Regular expressions -->
+      <context attribute="String" lineEndContext="#pop" name="Regex-String">
+        <RegExpr attribute="String" context="#pop" String="&quot;[imsx]{1,4}"/>
+        <Detect2Chars attribute="Char" context="Regex-Square-Bracket" char="[" char1="^"/>
+        <DetectChar attribute="Char" context="Regex-Square-Bracket" char="["/>
+        <IncludeRules context="Default-Regex"/>
+        <IncludeRules context="String"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Regex-Block-String">
+        <RegExpr attribute="String" context="#pop" String="&quot;{3}[imsx]{1,4}" endRegion="block-string"/>
+        <Detect2Chars attribute="Char" context="Block-Regex-Square-Bracket" char="[" char1="^"/>
+        <DetectChar attribute="Char" context="Block-Regex-Square-Bracket" char="["/>
+        <IncludeRules context="Default-Regex"/>
+        <IncludeRules context="Block-String"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="Regex-Square-Bracket">
+        <LineContinue attribute="String" context="#stay"/>
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <DetectChar attribute="Char" context="#pop" char="]"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;" lookAhead="true"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Block-Regex-Square-Bracket">
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <DetectChar attribute="Char" context="#pop" char="]"/>
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" lookAhead="true"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Default-Regex">
+        <RegExpr attribute="String Char" context="#stay" String="\\." />
+        <Detect2Chars attribute="Char" context="#stay" char="(" char1="?"/>
+        <AnyChar attribute="Char" context="#stay" String="()|"/>
+        <AnyChar attribute="String Char" context="#stay" String="?+*." />
+      </context>
+
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
         <DetectSpaces />
-        <DetectIdentifier />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </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" />
+      </context>
+
     </contexts>
 
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
       <itemData name="Variable" defStyleNum="dsNormal" />
-      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Operator" defStyleNum="dsOperator"/>
       <itemData name="Float" defStyleNum="dsFloat" />
       <itemData name="Hex" defStyleNum="dsBaseN" />
+      <itemData name="Octal" defStyleNum="dsBaseN" />
+      <itemData name="Binary" defStyleNum="dsBaseN" />
       <itemData name="Delimiter" defStyleNum="dsNormal" />
       <itemData name="String" defStyleNum="dsString"/>
       <itemData name="String Char" defStyleNum="dsSpecialChar"/>
@@ -270,8 +682,14 @@
       <itemData name="Incomplete Char" defStyleNum="dsChar"/>
       <itemData name="Keyword" defStyleNum="dsKeyword"/>
       <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Constant" defStyleNum="dsConstant"/>
+      <itemData name="Boolean" defStyleNum="dsExtension"/>
+      <itemData name="Macro" defStyleNum="dsPreprocessor"/>
+      <itemData name="Module" defStyleNum="dsBuiltIn"/>
+      <itemData name="Function" defStyleNum="dsNormal"/>
+      <itemData name="Command String" defStyleNum="dsSpecialString"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="FoldingComment" defStyleNum="dsComment" />
+      <itemData name="FoldingComment" defStyleNum="dsRegionMarker" />
     </itemDatas>
 
   </highlighting>
@@ -279,6 +697,7 @@
   <general>
     <comments>
       <comment name="singleLine" start="#" />
+      <comment name="multiLine" start="#=" end="=#" />
     </comments>
     <keywords casesensitive="1" weakDeliminator=""/>
   </general>
@@ -286,4 +705,4 @@
 </language>
 
 <!-- It's recommended to put the following line in the Variables field under Settings->Configure Kate->Open/Save->Modes&Filetypes -->
-<!-- kate: space-indent on; indent-width 4; mixed-indent off; indent-mode cstyle; -->
+<!-- kate: space-indent on; indent-width 2; mixed-indent off; indent-mode cstyle; -->
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -1,45 +1,321 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="LaTeX" version="8" 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" >
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+    <!ENTITY bullet "&#xd7;">
+    <!ENTITY envname "[a-zA-Z]+\*?">
+    <!ENTITY regionmarker "&#037;\s*(?:BEGIN|END)">
+]>
+<language name="LaTeX" version="10" 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
+         avoids the requirement of the delimiter in the keyword. -->
+    <list name="beginEnv">
+      <item>\begin</item>
+    </list>
+
+    <list name="endEnv">
+      <item>\end</item>
+    </list>
+
+    <list name="Label">
+      <item>\Autocite</item>
+      <item>\autocite</item>
+      <item>\autoref</item>
+      <item>\Cite</item>
+      <item>\cite</item>
+      <item>\Citeauthor</item>
+      <item>\citeauthor</item>
+      <item>\citep</item>
+      <item>\citet</item>
+      <item>\citetitle</item>
+      <item>\citeurl</item>
+      <item>\citeyear</item>
+      <item>\cref</item>
+      <item>\Cref</item>
+      <item>\cref*</item>
+      <item>\Cref*</item>
+      <item>\eqref</item>
+      <item>\Footcite</item>
+      <item>\footcite</item>
+      <item>\footfullcite</item>
+      <item>\fullcite</item>
+      <item>\label</item>
+      <item>\nocite</item>
+      <item>\pagecite</item>
+      <item>\pageref</item>
+      <item>\Parencite</item>
+      <item>\parencite</item>
+      <item>\ref</item>
+      <item>\subref</item>
+      <item>\subref*</item>
+      <item>\supercite</item>
+      <item>\Textcite</item>
+      <item>\textcite</item>
+      <item>\vpageref</item>
+      <item>\vref</item>
+    </list>
+
+    <list name="macroFancyLabel">
+      <item>\documentclass</item>
+      <item>\includegraphics</item>
+      <item>\include</item>
+      <item>\usepackage</item>
+      <item>\bibliography</item>
+      <item>\bibliographystyle</item>
+    </list>
+
+    <list name="FancyLabel">
+      <item>\cites</item>
+      <item>\Cites</item>
+      <item>\parencites</item>
+      <item>\Parencites</item>
+      <item>\autocites</item>
+      <item>\Autocites</item>
+      <item>\supercites</item>
+      <item>\footcites</item>
+      <item>\Footcites</item>
+    </list>
+
+    <list name="Sectioning">
+      <item>\part*</item>
+      <item>\part</item>
+      <item>\chapter*</item>
+      <item>\chapter</item>
+      <item>\section*</item>
+      <item>\section</item>
+      <item>\subsection*</item>
+      <item>\subsection</item>
+      <item>\subsubsection*</item>
+      <item>\subsubsection</item>
+      <item>\paragraph*</item>
+      <item>\paragraph</item>
+      <item>\subparagraph*</item>
+      <item>\subparagraph</item>
+    </list>
+
+    <list name="SpecialCommand">
+      <item>\column</item>
+      <item>\definecolor</item>
+      <item>\geometry</item>
+      <item>\hspace*</item>
+      <item>\hspace</item>
+      <item>\input</item>
+      <item>\newboolean</item>
+      <item>\rule</item>
+      <item>\setboolean</item>
+      <item>\setcounter</item>
+      <item>\setlength</item>
+      <item>\special</item>
+      <item>\textcolor</item>
+      <item>\vspace*</item>
+      <item>\vspace</item>
+    </list>
+
+    <list name="Footnoting">
+      <item>\footnote*</item>
+      <item>\footnote</item>
+    </list>
+
+    <list name="NewCommand">
+      <item>\renewcommand*</item>
+      <item>\renewcommand</item>
+      <item>\providecommand*</item>
+      <item>\providecommand</item>
+      <item>\newcommand*</item>
+      <item>\newcommand</item>
+    </list>
+
+    <list name="DefCommand">
+      <item>\edef</item>
+      <item>\gdef</item>
+      <item>\xdef</item>
+    </list>
+
+    <list name="MathModeEnsure">
+      <item>\ensuremath</item>
+    </list>
+
+    <list name="iffalse">
+      <item>\iffalse</item>
+    </list>
+
+    <list name="iffalseend">
+      <item>\fi</item>
+      <item>\else</item>
+    </list>
+
+    <list name="Verb">
+      <item>verb*</item>
+      <item>verb</item>
+      <item>Verb</item>
+    </list>
+
+    <list name="Lstinline">
+      <item>lstinline</item>
+    </list>
+
+    <list name="MintParam">
+      <item>mint</item>
+    </list>
+
+    <list name="ListingsEnv">
+      <item>lstlisting*</item>
+      <item>lstlisting</item>
+    </list>
+
+    <list name="MintedEnv">
+      <item>minted*</item>
+      <item>minted</item>
+    </list>
+
+    <list name="VerbatimEnv">
+      <item>Verbatim*</item>
+      <item>Verbatim</item>
+      <item>BVerbatim*</item>
+      <item>BVerbatim</item>
+      <item>LVerbatim*</item>
+      <item>LVerbatim</item>
+      <item>verbatim*</item>
+      <item>verbatim</item>
+      <item>boxedverbatim*</item>
+      <item>boxedverbatim</item>
+    </list>
+
+    <list name="CommentEnv">
+      <item>comment*</item>
+      <item>comment</item>
+    </list>
+
+    <list name="MathEnvParam">
+      <item>alignat*</item>
+      <item>alignat</item>
+      <item>xalignat*</item>
+      <item>xalignat</item>
+      <item>xxalignat*</item>
+      <item>xxalignat</item>
+    </list>
+
+    <list name="MathEnv">
+      <item>Bmatrix*</item>
+      <item>Bmatrix</item>
+      <item>IEEEeqnarray*</item>
+      <item>IEEEeqnarray</item>
+      <item>IEEEeqnarraybox*</item>
+      <item>IEEEeqnarraybox</item>
+      <item>Vmatrix*</item>
+      <item>Vmatrix</item>
+      <item>align*</item>
+      <item>align</item>
+      <item>bmatrix*</item>
+      <item>bmatrix</item>
+      <item>cases*</item>
+      <item>cases</item>
+      <item>displaymath*</item>
+      <item>displaymath</item>
+      <item>eqnarray*</item>
+      <item>eqnarray</item>
+      <item>equation*</item>
+      <item>equation</item>
+      <item>flalign*</item>
+      <item>flalign</item>
+      <item>gather*</item>
+      <item>gather</item>
+      <item>math*</item>
+      <item>math</item>
+      <item>multline*</item>
+      <item>multline</item>
+      <item>pmatrix*</item>
+      <item>pmatrix</item>
+      <item>smallmatrix*</item>
+      <item>smallmatrix</item>
+      <item>subeqnarray*</item>
+      <item>subeqnarray</item>
+      <item>vmatrix*</item>
+      <item>vmatrix</item>
+    </list>
+
+    <list name="TabEnv">
+      <item>tabularx*</item>
+      <item>tabularx</item>
+      <item>tabular*</item>
+      <item>tabular</item>
+      <item>supertabular*</item>
+      <item>supertabular</item>
+      <item>mpsupertabular*</item>
+      <item>mpsupertabular</item>
+      <item>xtabular*</item>
+      <item>xtabular</item>
+      <item>mpxtabular*</item>
+      <item>mpxtabular</item>
+      <item>longtable*</item>
+      <item>longtable</item>
+    </list>
+
+    <list name="MathModeText">
+      <item>\text</item>
+      <item>\textit</item>
+      <item>\textbf</item>
+      <item>\textmd</item>
+      <item>\textsl</item>
+      <item>\textsc</item>
+      <item>\textrm</item>
+      <item>\textsf</item>
+      <item>\texttt</item>
+      <item>\textup</item>
+      <item>\textlf</item>
+      <item>\textnormal</item>
+      <item>\shortintertext</item>
+      <item>\intertext</item>
+      <item>\mbox</item>
+      <item>\emph</item>
+    </list>
+
+    <list name="ResetHL">
+      <item>\KileResetHL</item>
+      <item>\KateResetHL</item>
+    </list>
+
     <contexts>
       <!-- Normal text -->
       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindBeginEnvironment" beginRegion="block" />
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="FindEndEnvironment" />
-        <RegExpr String="\\(cite|citet|citep|parencite|autocite|Autocite|citetitle)\*(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(documentclass|includegraphics|include|usepackage|bibliography|bibliographystyle)(?=[^a-zA-Z])" attribute="Builtin Macro" context="FancyLabel"/>
-        <RegExpr String="\\(cites|Cites|parencites|Parencites|autocites|Autocites|supercites|footcites|Footcites)(?=[^a-zA-Z])" attribute="Structure" context="FancyLabel"/>
-        <RegExpr String="\\(cite|citet|citep|nocite|Cite|parencite|Parencite|footcite|Footcite|textcite|Textcite|supercite|autocite|Autocite|citeauthor|Citeauthor|citetitle|citeyear|citeurl|nocite|fullcite|footfullcite)(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(subref\*?|cref\*?|label|pageref|autoref|ref|vpageref|vref|pagecite|eqref)(?=[^a-zA-Z])" attribute="Structure" context="Label"/>
-        <RegExpr String="\\(part|chapter|section|subsection|subsubsection|paragraph|subparagraph)\*?\s*(?=[\{\[])" attribute="Structure" context="Sectioning"/>
-        <RegExpr String="\\(input|hspace|hspace\*|vspace|vspace\*|rule|special|setlength|newboolean|setboolean|setcounter|geometry|textcolor|definecolor|column)(?=[^a-zA-Z])" attribute="Macro" context="SpecialCommand"/>
-        <RegExpr String="\\(footnote)\*?\s*(?=[\{\[])" attribute="Macro" context="Footnoting"/>
-        <RegExpr String="\\(renewcommand|providenewcommand|newcommand)\*?(?=[^a-zA-Z])" attribute="Macro" context="NewCommand"/>
-        <RegExpr String="\\(e|g|x)?def(?=[^a-zA-Z])" attribute="Macro" context="DefCommand"/>
-        <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" />
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
-        <StringDetect String="\[" attribute="Math" context="MathModeEquation" beginRegion="mathMode" />
-        <WordDetect String="\iffalse" attribute="Comment" context="Multiline Comment"/>
-        <StringDetect String="\ensuremath{" attribute="Math" context="MathModeEnsure"/>
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <StringDetect String="$$" attribute="Math" context="MathModeDisplay" beginRegion="mathMode" />
-        <DetectChar char="$" attribute="Math" context="MathMode" />
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true" />
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true" />
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex"/>
+        <RegExpr String="&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
 
-        <!-- NoWeb -->
-      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="^\s*@\s*" attribute="Normal Text" context="#pop" />
+      <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment" endRegion="block"/>
+        <keyword String="Label" attribute="Structure" context="#pop!Label"/>
+        <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>
+        <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>
+        <keyword String="Sectioning" attribute="Structure" context="#pop!Sectioning"/>
+        <keyword String="SpecialCommand" attribute="Macro" context="#pop!SpecialCommand"/>
+        <keyword String="Footnoting" attribute="Macro" context="#pop!Footnoting"/>
+        <keyword String="NewCommand" attribute="Macro" context="#pop!NewCommand"/>
+        <keyword String="DefCommand" attribute="Macro" context="#pop!DefCommand"/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="#pop!MathModeLatex"/>
+        <Detect2Chars char="\" char1="[" attribute="Math" context="#pop!MathModeLatexEquation" beginRegion="mathMode"/>
+        <keyword String="MathModeEnsure" attribute="Math" context="#pop!MathModeEnsure"/>
+        <keyword String="iffalse" attribute="Comment" context="#pop!Multiline Comment"/>
+        <DetectChar char="\" attribute="Macro" context="#pop!ContrSeq"/>
       </context>
 
+      <!-- NoWeb -->
+      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="@\s*$" attribute="Normal Text" context="#pop" column="0"/>
+      </context>
+
       <!-- LaTeX sectioning commands -->
       <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char=" " attribute="Normal Text" context="#stay"/>
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
@@ -47,36 +323,34 @@
       <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <StringDetect String="\(" attribute="Sectioning Math" context="SectioningMathMode" />
+        <Detect2Chars char="\" char1="(" attribute="Sectioning Math" context="SectioningMathMode" />
         <DetectChar char="\" attribute="Sectioning Macro" context="SectioningContrSeq"/>
         <DetectChar char="$" attribute="Sectioning Math" context="SectioningMathMode" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})" attribute="Sectioning Macro" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Sectioning Macro" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+(\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />
       </context>
       <context name="SectioningMathMode" attribute="Sectioning Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
+        <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />
         <DetectChar char="$" attribute="Sectioning Math" context="#pop" />
         <Detect2Chars char="\" char1=")" attribute="Sectioning Math" context="#pop" />
         <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
         <DetectChar char="\" attribute="Sectioning Macro Mathmode" context="SectioningMathContrSeq"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
       <context name="SectioningMathContrSeq" attribute="Sectioning Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+\*?" attribute="Sectioning Macro Mathmode" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Sectioning Macro Mathmode" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Sectioning Macro Mathmode" context="#pop" />
       </context>
 
       <!-- LaTeX Footnote commands -->
       <context name="Footnoting" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\[[^\]]*\]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char=" " attribute="Normal Text" context="#stay"/>
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
@@ -84,54 +358,39 @@
       <context name="FootnotingInside" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <StringDetect String="\(" attribute="Math" context="FootnotingMathMode" />
-        <DetectChar char="$" attribute="Math" context="FootnotingMathMode" />
-        <IncludeRules context="Normal Text" />
-      </context>
-      <context name="FootnotingMathMode" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <IncludeRules context="MathMode" />
+        <IncludeRules context="Normal Text"/>
       </context>
 
       <!-- LaTeX commands \newcommand and \renewcommand -->
       <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-          <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LabelParameter"/>
-          <RegExpr String="\s*(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <RegExpr String="(\[\d\](\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
         <DetectChar char="}" attribute="Error" context="#pop"/>
       </context>
 
       <!-- LaTeX command \def -->
       <context name="DefCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="CommandParameterStart"/>
+        <DetectSpaces/>
+        <RegExpr String="\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="#pop!CommandParameter"/>
         <DetectChar char="}" attribute="Error" context="#pop"/>
       </context>
 
       <!-- parse command argument -->
-      <context name="CommandParameterStart" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
-        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
-      </context>
       <context name="CommandParameter" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <RegExpr String="\\." attribute="Normal Text" context="#stay" />
+        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
       </context>
 
       <!-- LaTeX command in text mode -->
       <context name="ContrSeq" attribute="Macro" lineEndContext="#pop">
-        <StringDetect String="verb*" attribute="Macro" context="Verb"/>
-        <RegExpr String="(Verb|verb)(?=[^a-zA-Z])" attribute="Macro" context="Verb"/>
-        <RegExpr String="(lstinline)(?=[^a-zA-Z])" attribute="Macro" context="Lstinline"/>
-        <RegExpr String="mint(?=[^a-zA-Z])" attribute="Macro" context="MintParam"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z@]+(\+?|\*{0,3})" attribute="Macro" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Macro" context="#pop" />
+        <keyword String="Verb" attribute="Macro" context="Verb"/>
+        <keyword String="Lstinline" attribute="Macro" context="Lstinline"/>
+        <keyword String="MintParam" attribute="Macro" context="MintParam"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z@]+(\+?|\*{0,3})|." attribute="Macro" context="#pop" />
       </context>
 
       <!-- \mint command with parameter-->
@@ -147,92 +406,97 @@
       </context>
       <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
       </context>
 
       <!-- lstinline command, different from verb as it takes options -->
       <context name="Lstinline" attribute="Verbatim" lineEndContext="#pop#pop" >
-        <RegExpr String="\s*\[\s*" attribute="Normal Text" context="FancyLabelOption"/>
-        <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LstinlineParameter"/>
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="{" attribute="Normal Text" context="LstinlineParameter"/>
         <RegExpr String="(.)" attribute="Normal Text" dynamic="true" context="LstinlineEnd" />
       </context>
       <context name="LstinlineEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
+        <!-- TODO DetectChar segfault -->
         <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
         <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
       </context>
       <context name="LstinlineParameter" attribute="Verbatim" lineEndContext="#stay">
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop#pop#pop"/>
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
       </context>
 
       <!-- label -->
       <context name="Label" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\s*\{\s*" attribute="Normal Text" context="LabelParameter"/>
-        <RegExpr String="\s*\[\s*" attribute="Normal Text" context="LabelOption"/>
-        <RegExpr String="[^\[\{]+" attribute="Error" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="LabelOption"/>
       </context>
 
       <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <DetectChar char="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\]\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop"/>
       </context>
 
-      <context name="LabelParameter" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop#pop"/>
+      <context name="LabelParameter" attribute="Reference" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
       </context>
 
       <!-- labels from biblatex commands -->
       <context name="FancyLabel" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-              <RegExpr String="\s*\{\s*" attribute="Normal Text" context="FancyLabelParameter"/>
-              <RegExpr String="\s*\[\s*" attribute="Normal Text" context="FancyLabelOption"/>
-              <RegExpr String="\s*\(\s*" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="(" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
       </context>
 
       <context name="FancyLabelParameter" attribute="Environment" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <DetectChar char="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
       </context>
 
       <context name="FancyLabelOption" attribute="Option Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\]\s*" attribute="Normal Text" context="#pop"/>
+        <IncludeRules context="LabelOption"/>
       </context>
 
       <context name="FancyLabelRoundBrackets" attribute="Normal Text" lineEndContext="#stay">
-              <StringDetect String="\(" attribute="Math" context="MathMode" />
-              <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-              <DetectChar char="$" attribute="Math" context="MathMode" />
-              <DetectChar char="%" attribute="Comment" context="Comment"/>
-              <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-              <RegExpr String="\s*\)\s*" attribute="Normal Text" context="#pop"/>
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char=")" attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- Special commands -->
       <context name="SpecialCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-              <RegExpr String="\s*\{\s*" attribute="Normal Text" context="SpecialCommandParameterOption"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
       </context>
 
       <context name="SpecialCommandParameterOption" attribute="Option Text" lineEndContext="#stay">
-        <StringDetect String="\(" attribute="Math" context="MathMode" />
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeTex" />
         <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathMode" />
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\s*\}\s*" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- end of an environment -->
@@ -242,306 +506,474 @@
       </context>
 
       <context name="EndEnvironment" attribute="Environment" lineEndContext="#stay">
-        <RegExpr String="[a-zA-Z]" attribute="Environment" context="EndLatexEnv"/>
-        <RegExpr String="\s+" attribute="Error" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Error" context="#pop"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnvEnd"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop"/>
       </context>
 
-       <context name="EndLatexEnv" attribute="Environment" lineEndContext="#stay">
+      <context name="LatexEnvEnd" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" endRegion="block" context="#pop#pop#pop"/>
-        <RegExpr String="[a-zA-Z]+(\*)?" attribute="Environment" context="#stay"/>
-        <RegExpr String="\s+" attribute="Error" context="#stay"/>
-        <RegExpr String="[a-zA-Z]" attribute="Error" context="#pop#pop#pop"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
 
       <!-- start of an environment -->
       <context name="FindBeginEnvironment" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
         <DetectChar char="{" attribute="Normal Text" context="BeginEnvironment"/>
-        <RegExpr String="\S" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="." attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- filter the environment name and check the type -->
       <context name="BeginEnvironment" attribute="Environment" lineEndContext="#stay">
-        <WordDetect String="lstlisting" attribute="Environment" context="ListingsEnvParam"/>
-        <WordDetect String="minted" attribute="Environment" context="MintedEnvParam"/>
-        <RegExpr String="((B|L)?Verbatim)" attribute="Environment" context="VerbatimEnvParam"/>
-        <RegExpr String="(verbatim|boxedverbatim)" attribute="Environment" context="VerbatimEnv"/>
-        <RegExpr String="comment" attribute="Environment" context="CommentEnv"/>
-        <RegExpr String="(alignat|xalignat|xxalignat)" attribute="Environment" context="MathEnvParam"/>
-        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|IEEEeqnarray|IEEEeqnarraybox|smallmatrix|pmatrix|bmatrix|Bmatrix|vmatrix|Vmatrix|cases)" attribute="Environment" context="MathEnv"/>
-        <RegExpr String="(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)" attribute="Environment" context="TabEnv"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" context="LatexEnv"/>
-        <RegExpr String="\s+" attribute="Error" context="#pop"/>
-        <RegExpr String="[^a-zA-Z\xd7]" attribute="Error" context="#pop"/>
+        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
+        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
+        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
+        <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathEnvWithParam"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathEnv"/>
+        <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
 
       <!-- environment type 1: normal -->
-      <context name="LatexEnv" attribute="Environment" lineEndContext="#stay">
+      <context name="LatexEnv" attribute="Error" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
-        <RegExpr String="[a-zA-Z]+" attribute="Environment" context="#stay"/>
-        <RegExpr String="\s+" attribute="Error" context="#stay"/>
-       <IncludeRules context="EnvCommon" />
       </context>
 
+      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay">
+        <WordDetect String="verbatim*" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="verbatim" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="boxedverbatim*" attribute="Environment" context="VerbatimEnv2"/>
+        <WordDetect String="boxedverbatim" attribute="Environment" context="VerbatimEnv2"/>
+
+        <WordDetect String="Verbatim*" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="Verbatim" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="BVerbatim*" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="BVerbatim" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="LVerbatim*" attribute="Environment" context="VerbatimEnv5"/>
+        <WordDetect String="LVerbatim" attribute="Environment" context="VerbatimEnv5"/>
+      </context>
+
       <!-- environment type 2: verbatim without parameter -->
-      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
-       </context>
+      <context name="VerbatimEnv1" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim1"/>
+      </context>
+      <context name="Verbatim1" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
 
+      <context name="VerbatimEnv2" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim2"/>
+      </context>
+      <context name="Verbatim2" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{boxedverbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
       <!-- environment type 3: verbatim with optional parameter -->
-      <context name="VerbatimEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <DetectChar char="]" attribute="Normal Text" context="Verbatim"/>
+      <context name="VerbatimEnv3" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv3Param"/>
       </context>
+      <context name="VerbatimEnv3Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim3">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim3"/>
+      </context>
+      <context name="Verbatim3" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{Verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
 
+      <context name="VerbatimEnv4" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv4Param"/>
+      </context>
+      <context name="VerbatimEnv4Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim4">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim4"/>
+      </context>
+      <context name="Verbatim4" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{BVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <context name="VerbatimEnv5" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv5Param"/>
+      </context>
+      <context name="VerbatimEnv5Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim5">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim5"/>
+      </context>
+      <context name="Verbatim5" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{LVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
       <!-- environment type 4: listings environment with optional parameter and HL switching-->
-      <context name="ListingsEnvParam" attribute="Normal Text" fallthrough="true" fallthroughContext="Verbatim" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <RegExpr String="language\s*=\s*(?=[^,]+)" minimal="true" attribute="Normal Text" context="HighlightningSelector"/>
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
-        <DetectChar char="]" attribute="Normal Text" context="Verbatim"/>
+      <context name="ListingsEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!ListingsEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
+      <context name="ListingsEnvParam" attribute="Normal Text" lineEndContext="#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!ListingsEnvParamInside"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="ListingsEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectIdentifier/>
+        <RegExpr String="\s*language\s*=\s*(?=[^],])" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="]" attribute="Normal Text" context="ListingsEnvParamEnd"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="ListingsEnvParamEnd" attribute="Normal Text" lineEndContext="#pop#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
 
       <!-- environment type 5: minted environment with optional and HL switching -->
+      <context name="MintedEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!MintedEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
       <context name="MintedEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay" />
-        <Detect2Chars char="}" char1="{" attribute="Normal Text" context="HighlightningSelector"/>
-        <Detect2Chars char="]" char1="{" attribute="Normal Text" context="HighlightningSelector"/>
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim"/>
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!MintedEnvParamInside"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
       </context>
+      <context name="MintedEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop!MintedEnvLang"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="MintedEnvLang" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
 
+      <!-- parse verbatim text for lstinline and minted -->
+      <context name="UnknownHighlighting" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{(lstlisting|minted)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>
+      </context>
+      <context name="UnknownHighlightingEnd" attribute="Environment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <DetectIdentifier/>
+      </context>
+
+
       <!-- Selector for different highlightning schemes, in case the language is not implemented we pop and thus fallback to verbatim -->
-      <context name="HighlightningSelector" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect String="C++" insensitive="true" context="HighlightningBeginC++"/>
-        <WordDetect String="Python" insensitive="true" context="HighlightningBeginPython"/>
-        <RegExpr String=".*(?=\}|\])" context="#pop"/>
+      <context name="HighlightingSelector" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect String="C++" insensitive="true" context="HighlightingBeginC++"/>
+        <WordDetect String="Python" insensitive="true" context="HighlightingBeginPython"/>
+        <DetectChar char="}" context="#pop!UnknownHighlighting"/>
+        <DetectChar char="]" context="#pop!UnknownHighlighting"/>
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningCommon" attribute="Normal Text" lineEndContext="#stay">
+      <context name="HighlightingCommon" attribute="Normal Text" lineEndContext="#stay">
         <RegExpr String="\\end\s*\{(lstlisting|minted)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>
       </context>
 
-      <context name="HighlightningBeginC++" attribute="Normal Text" lineEndContext="#stay">
-       <!-- Eat the trailing characters including } or ] after the language specification -->
-        <RegExpr String=".*(\}|\])" context="HighlightningC++"/>
+      <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingC++"/>
+        <DetectChar char="]" context="HighlightingC++"/>
+        <!-- Eat the trailing characters including } or ] after the language specification -->
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningC++" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightningCommon"/>
+      <context name="HighlightingC++" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##C++" includeAttrib="true"/>
       </context>
 
-      <context name="HighlightningBeginPython" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String=".*(\}|\])" context="HighlightningPython"/>
+      <context name="HighlightingBeginPython" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingPython"/>
+        <DetectChar char="]" context="HighlightingPython"/>
+        <RegExpr String="[^]}]*" context="#stay"/>
       </context>
 
-      <context name="HighlightningPython" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightningCommon"/>
+      <context name="HighlightingPython" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##Python"/>
       </context>
 
-      <!-- parse verbatim text -->
-      <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim|minted)\*?\})" attribute="Structure"  context="VerbFindEnd"/>
-      </context>
-
       <!-- end of verbatim environment -->
       <context name="VerbFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(verbatim|lstlisting|boxedverbatim|(B|L)?Verbatim|minted)\*?" attribute="Environment" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="VerbatimEnv" attribute="Environment"/>
       </context>
 
-      <!-- begin comment environment  -->
-      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
+      <!-- begin comment environment -->
+      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="BlockComment"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
        </context>
 
       <!-- parse comment text -->
       <context name="BlockComment" attribute="Comment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
         <RegExpr String="\\end(?=\s*\{comment\*?\})" attribute="Structure" context="CommFindEnd"/>
       </context>
 
       <!-- end of comment environment -->
       <context name="CommFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="comment\*?" attribute="Environment" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="CommentEnv" attribute="Environment"/>
       </context>
 
       <!-- environment type 4: math environment with its own mathmode -->
       <context name="MathEnv" attribute="Environment" lineEndContext="#stay">
         <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
 
       <!-- environment type 5: math environment with its own mathmode and parameter -->
-      <context name="MathEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\}\{[^\}]*\}" attribute="Normal Text" context="MathModeEnv"/>
-        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
+      <context name="MathEnvWithParam" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathEnvWithParamInside"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
       </context>
-
-      <!-- environment common -->
-      <context name="EnvCommon" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\*(?=\})" attribute="Environment" context="#stay"/>
-        <RegExpr String="\*[^\}]*" attribute="Error" context="#pop#pop#pop"/>
-        <RegExpr String="[^a-zA-Z\xd7][^\}]*" attribute="Error" context="#pop#pop#pop"/>
+      <context name="MathEnvWithParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvParamInside"/>
       </context>
+      <context name="MathEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!MathModeEnv"/>
+      </context>
 
       <!-- parse math environment -->
       <context name="MathModeEnv" attribute="Math" lineEndContext="#stay">
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Structure" context="FindBeginEnvironment" beginRegion="block"/>
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Structure" context="MathFindEnd" endRegion="block"/>
-        <StringDetect String="\(" attribute="Error" context="#stay" />
-        <StringDetect String="\[" attribute="Error" context="#stay" />
-        <StringDetect String="\)" attribute="Error" context="#stay" />
-        <StringDetect String="\]" attribute="Error" context="#stay" />
-        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Macro Mathmode" context="MathModeText" />
-        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeEnv" lookAhead="true"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
+      <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironmentInMathMode" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd" endRegion="block"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>
+        <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="[" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#pop"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
 
+      <!-- start of an environment in math mode -->
+      <context name="FindBeginEnvironmentInMathMode" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="BeginEnvironmentInMathMode"/>
+        <RegExpr String="." attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- filter the environment name and check the type in math mode -->
+      <context name="BeginEnvironmentInMathMode" attribute="Environment" lineEndContext="#stay">
+        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
+        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
+        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
+        <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>
+
       <!-- end of math environment -->
       <context name="MathFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align(at)?|flalign|xalignat|xxalignat|IEEEeqnarray|IEEEeqnarraybox|smallmatrix|pmatrix|bmatrix|Bmatrix|vmatrix|Vmatrix|cases)\*?" attribute="Environment" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop"  endRegion="block"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathFindEndInside"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathFindEndInside"/>
+        <RegExpr String="&envname;" attribute="Environment" context="NoMathFindEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
+      <context name="MathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="NoMathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
 
-          <!-- environment type 9: tabular -->
+      <!-- environment type 9: tabular -->
       <context name="TabEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
         <DetectChar char="}" attribute="Normal Text" context="Tab"/>
-        <RegExpr String="[a-zA-Z]" attribute="Environment" lookAhead="true" context="#pop"/>
-        <IncludeRules context="EnvCommon" />
-       </context>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
 
       <!-- parse tabular text -->
       <context name="Tab" attribute="Normal Text" lineEndContext="#stay">
         <DetectChar char="&amp;" attribute="Ampersand" context="#stay"/>
-        <StringDetect String="@{" attribute="Column Separator" context="Column Separator"/>
-        <RegExpr String="\\end(?=\s*\{(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?\})" attribute="Structure"  context="TabFindEnd"/>
+        <Detect2Chars char="@" char1="{" attribute="Column Separator" context="Column Separator"/>
+        <RegExpr String="\\end\b" attribute="Structure" context="TabFindEnd"/> <!-- endEnv -->
         <IncludeRules context="Normal Text" />
       </context>
 
       <context name="Column Separator" attribute="Column Separator" lineEndContext="#stay">
-              <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
-              <DetectChar char="}" attribute="Column Separator" context="#pop"/>
-              <RegExpr String="." attribute="Column Separator"  context="#stay"/>
-<!--          the last regexp is very stupid. Suggestions are welcome! Fallthrough did not help-->
+        <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
+        <DetectChar char="}" attribute="Column Separator" context="#pop"/>
       </context>
 
       <!-- end of tabular environment -->
       <context name="TabFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr String="\s*\{" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="(tabularx|tabular|supertabular|mpsupertabular|xtabular|mpxtabular|longtable)\*?" attribute="Environment" context="#stay"/>
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="TabEnv" attribute="Environment" context="#stay"/>
       </context>
 
-      <!-- math mode: starting with $ or \( -->
+      <!-- math mode: starting with $ -->
+      <context name="MathModeTex" attribute="Math" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!MathMode">
+        <DetectChar char="$" attribute="Math" context="#pop!MathModeDisplay" beginRegion="mathMode"/>
+      </context>
       <context name="MathMode" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+        <DetectChar char="$" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
       <!-- math mode: starting with $$ -->
       <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
-        <StringDetect String="$$" attribute="Math" context="#pop" endRegion="mathMode" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+        <Detect2Chars char="$" char1="$" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
+      <!-- math mode: starting with \( -->
+      <context name="MathModeLatex" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
       <!-- math mode: starting with \[ -->
-      <context name="MathModeEquation" attribute="Math" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode" />
-        <StringDetect String="$$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Error" context="#stay" />
-        <Detect2Chars char="\" char1=")" attribute="Error" context="#stay" />
-        <IncludeRules context="MathModeCommon" />
+      <context name="MathModeLatexEquation" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <IncludeRules context="MathModeCommon"/>
       </context>
 
-      <!-- math mode: \ensuremath{...} !-->
+      <!-- math mode: \ensuremath{...} -->
       <context name="MathModeEnsure" attribute="Math" lineEndContext="#stay">
-              <DetectChar char="{" attribute="Math" context="MathModeEnsure" />
-              <DetectChar char="}" attribute="Math" context="#pop" />
-              <IncludeRules context="MathModeCommon" />
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Math" context="#pop!MathModeEnsureInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
       </context>
+      <context name="MathModeEnsureInside" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Math" context="MathModeEnsureInside" />
+        <DetectChar char="}" attribute="Math" context="#pop" />
+        <IncludeRules context="MathModeCommon"/>
+      </context>
 
       <!-- math mode common -->
       <context name="MathModeCommon" attribute="Math" lineEndContext="#stay">
-        <RegExpr String="\\(begin|end)\s*\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|flalign|alignat|xalignat|xxalignat|IEEEeqnarray)\*?\}" attribute="Error" context="#stay"/>
-        <RegExpr String="\\begin(?=[^a-zA-Z])" attribute="Macro Mathmode" context="#stay" beginRegion="block" />
-        <RegExpr String="\\end(?=[^a-zA-Z])" attribute="Macro Mathmode" context="#stay" endRegion="block" />
-        <RegExpr String="\\(text|intertext|mbox)\s*(?=\{)" attribute="Macro Mathmode" context="MathModeText" />
-        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeCommon" lookAhead="true"/>
+        <RegExpr String="&regionmarker;" attribute="Region Marker" context="RegionComment" firstNonSpace="true"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
-        <RegExpr String="%\s*BEGIN.*$" attribute="Region Marker" context="#stay" beginRegion="regionMarker" firstNonSpace="true"/>
-        <RegExpr String="%\s*END.*$" attribute="Region Marker" context="#stay" endRegion="regionMarker" firstNonSpace="true"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
       </context>
+      <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">
+        <keyword String="beginEnv" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block"/>
+        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd" endRegion="block"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
+      <context name="MathEnvironment" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathEnvironmentEnd" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentEndInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>
+      </context>
 
       <!-- command in mathmode -->
       <context name="MathContrSeq" attribute="Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+\*?" attribute="Macro Mathmode" context="#pop"/>
-        <RegExpr String="[^a-zA-Z]" attribute="Macro Mathmode" context="#pop" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Macro Mathmode" context="#pop" />
       </context>
 
       <!-- text in mathmode -->
-      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >
-         <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="MathContrSeq">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
       </context>
+      <context name="MathModeTextInside" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      </context>
 
       <context name="MathModeTextParameterStart" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\$.*\$" minimal="true" attribute="Math" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RangeDetect char="$" char1="$" attribute="Math" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextInside" lookAhead="true"/>
         <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
         <DetectChar char="%" attribute="Comment" context="Comment"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
       </context>
 
-      <context name="MathModeTextParameter" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameter"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      <!-- iffalse aka multiline comment -->
+      <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
+        <DetectChar char="\" attribute="Comment" context="BackslashMultilineComment" lookAhead="true"/>
       </context>
-
-     <!--    iffalse aka multiline comment    -->
-        <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
-          <WordDetect String="\fi" attribute="Comment" context="#pop"/>
-          <WordDetect String="\else" attribute="Comment" context="#pop"/>
-        </context>
+      <context name="BackslashMultilineComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="iffalseend" attribute="Comment" context="#pop#pop"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
 
      <!-- comment -->
+      <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-              <RegExpr String="(FIXME|TODO):?" attribute="Alert" context="#stay"/>
-        <StringDetect String="\KileResetHL" attribute="Comment" context="Normal Text"/>
-        <StringDetect String="\KateResetHL" attribute="Comment" context="Normal Text"/>
+        <DetectSpaces/>
+        <IncludeRules context="##Alerts" />
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
       </context>
+      <context name="BackslashComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="ResetHL" attribute="Comment" context="#pop!Normal Text"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
     </contexts>
 
     <itemDatas>
@@ -556,12 +988,12 @@
       <itemData name="Builtin Macro" defStyleNum="dsBuiltIn" spellChecking="false"/>
       <itemData name="Macro Mathmode" defStyleNum="dsSpecialChar" spellChecking="false"/>
       <itemData name="Environment" defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Reference" defStyleNum="dsExtension" spellChecking="false"/>
       <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>
       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
       <itemData name="Bullet" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Ampersand" defStyleNum="dsOperator" bold="1" spellChecking="false"/>
       <itemData name="Column Separator" defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Alert" defStyleNum="dsAlert" spellChecking="false"/>
       <!-- in section headers -->
       <itemData name="Sectioning Text" defStyleNum="dsNormal" bold="1"/>
       <itemData name="Sectioning Macro" defStyleNum="dsFunction" bold="1" spellChecking="false"/>
@@ -571,7 +1003,7 @@
   </highlighting>
 
   <general>
-    <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+    <keywords weakDeliminator="\*" additionalDeliminator="$" wordWrapDeliminator=",{}[]"/>
     <comments>
       <comment name="singleLine" start="%" />
     </comments>
diff --git a/xml/lua.xml b/xml/lua.xml
--- a/xml/lua.xml
+++ b/xml/lua.xml
@@ -8,6 +8,11 @@
 
     CHANGES
 
+    [ Version 1.05 (2019-06-03) by Jonathan Poelen ]
+
+    - warn and coroutine.kill (Lua 5.4)
+    - end of a function as Keyword rather than Control
+
     [ Version 1.04 (2018-04-30) by Jonathan Poelen ]
 
     - based on Lua 5.3
@@ -43,7 +48,7 @@
     - NOTE, FIXME, TODO alerts added on comments
     - improved highlighting
 -->
-<language name="Lua" version="5" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+<language name="Lua" version="7" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
   <highlighting>
     <list name="keywords">
       <item>and</item>
@@ -74,6 +79,22 @@
       <item>while</item>
     </list>
 
+    <list name="startcontrol">
+      <item>do</item>
+      <item>if</item>
+      <item>repeat</item>
+    </list>
+
+    <list name="elsecontrol">
+      <item>else</item>
+      <item>elseif</item>
+    </list>
+
+    <list name="endcontrol">
+      <item>end</item>
+      <item>until</item>
+    </list>
+
     <list name="basevar">
       <item>_PROMPT</item>
       <item>_PROMPT2</item>
@@ -121,12 +142,14 @@
       <item>tonumber</item>
       <item>tostring</item>
       <item>type</item>
+      <item>warn</item>
       <item>xpcall</item>
 
       <!-- Coroutine manipulation -->
       <item>coroutine.create</item>
       <item>coroutine.isyieldable</item>
       <item>coroutine.resume</item>
+      <item>coroutine.kill</item>
       <item>coroutine.running</item>
       <item>coroutine.status</item>
       <item>coroutine.wrap</item>
@@ -453,13 +476,9 @@
         <keyword      attribute="Metamethod" context="#stay"       String="metamethod"/>
         <keyword      attribute="BVar"     context="#stay"         String="basevar"/>
 
-        <WordDetect   attribute="Keyword"  context="#stay" beginRegion="chunk" String="function" />
+        <WordDetect   attribute="Keyword"  context="Function" beginRegion="chunk" String="function" />
         <keyword      attribute="Keyword"  context="#stay" String="keywords" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="else" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elseif" />
-        <WordDetect   attribute="Control"  context="#stay" beginRegion="chunk" String="do" />
-        <WordDetect   attribute="Control"  context="#stay" beginRegion="chunk" String="if" />
-        <WordDetect   attribute="Control"  context="#stay" endRegion="chunk"   String="end" />
+        <keyword      attribute="Control"  context="StartControl" beginRegion="chunk" String="startcontrol" />
         <keyword      attribute="Control"  context="#stay" String="control" />
 
         <DetectChar   attribute="Symbols"  context="#stay" beginRegion="table" char="{" />
@@ -479,6 +498,17 @@
         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />
       </context>
 
+      <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">
+        <keyword      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elsecontrol" />
+        <keyword      attribute="Control"  context="#pop"  endRegion="chunk"   String="endcontrol" />
+        <IncludeRules context="Normal" />
+      </context>
+
+      <context name="Function" attribute="Normal Text"      lineEndContext="#stay">
+        <WordDetect   attribute="Keyword"  context="#pop"  endRegion="chunk"   String="end" />
+        <IncludeRules context="Normal" />
+      </context>
+
       <context name="String_single" attribute="Strings"     lineEndContext="Error">
         <DetectChar   attribute="Strings"  context="Special_char"  char="\" lookAhead="true"/>
         <DetectChar   attribute="Strings"  context="#pop"  char="'"/>
@@ -536,3 +566,4 @@
     <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'&quot;"/>
   </general>
 </language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -6,6 +6,7 @@
     Dual-Licensed under both GPL and BSD licenses.
 
     Extended 2009 Claes Holmerson. http://github.com/claes/kate-markdown/
+    Extended 2019 Nibaldo González S. <nibgonz@gmail.com> (changes under MIT license).
 -->
 <!--
     The [^\s]{1} is in the regex to avoid interfering with bullet list which
@@ -15,190 +16,623 @@
     Match space or newline, followed by "*", followed by one non-space,
     followed by anything non-asterisk, followed by "*", followed by
     space, end-of-sentence punctuation, or the end of the line.
+
+    TODO: We can be more specific and highlight text combinations in bold,
+          italic and strikethrough.
+          Example: **bold text and _italic and bold text_**
+                   __bold and ~~strikeout and bold~~__
 -->
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-<!ENTITY strongemphasisregex "(\s|^)[\*_]{3}[^\*_]+[\*_]{3}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY strongregex "(\s|^)[\*_]{2}[^\s]{1}[^\*_]+[\*_]{2}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY emphasisregex "(\s|^)[\*_]{1}[^\s]{1}[^\*_]+[\*_]{1}(\s|\.|,|;|:|\-|\?|$)">
-<!ENTITY reflinkregex '\[[^\]\^]+\]\s*\[[^\]]*\]\s*(\s+\"[^\"]*\"){0,1}'>
-<!ENTITY reflinktargetregex '\[[^\]\^]+\]\:\s+[^\s]+(\s+\"[^\"]*\"){0,1}'>
-<!ENTITY footnoteregex "\[\^[^\]]+\]">
-<!ENTITY inlinelinkregex "\[[^\]\^]+\]\s*\([^\(]*\)">
-<!ENTITY inlineimageregex "\!\[[^\]\^]+\]\([^\(]*\)">
-<!ENTITY refimageregex "\!\[[^\]\^]+\]\[[^\[]*\]">
-<!ENTITY autolinkregex '&lt;(https?|ftp):[^\"&gt;\s]+&gt;'>
-<!ENTITY mailtolinkregex "&lt;(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)&gt;">
-<!ENTITY rulerregex "\s*([\*\-_]\s?){3,}\s*">
+<!-- NOTE: To correctly detect bold, italic or strike out text, use minimal="true" in RegExpr rules -->
+<!ENTITY contentregex_ast "(?:(?:[^\*\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\*\s\\]|\\\S)">
+<!ENTITY contentregex_und "(?:(?:[^_\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^_\s\\]|\\\S)">
+<!-- strong + emphasis text -->
+<!ENTITY strongemphasisregex_ast "\*{3,5}&contentregex_ast;\*{3}">
+<!ENTITY strongemphasisregex_und "\b_{3,5}&contentregex_und;_{3}">
+<!ENTITY strongemphasisregex_ast_und "\*{2,5}(?:(?:_|_{3}|_{5})&contentregex_und;_+|(?:_{2}|_{4})&contentregex_und;_)\*{2}">
+<!ENTITY strongemphasisregex_ast_und2 "\*_{2,5}&contentregex_und;_{2,5}\*(?!\*)">
+<!ENTITY strongemphasisregex_und_ast "\b_{2,5}(?:(?:\*|\*{3}|\*{5})&contentregex_ast;\*+|(?:\*{2}|\*{4})&contentregex_ast;\*)_{2}">
+<!ENTITY strongemphasisregex_und_ast2 "\b_(?:\*{2,5}&contentregex_ast;\*{2,5}_{0,4}|_{0,4}\*{2,5}&contentregex_ast;\*{2,5})_\b">
+<!-- strong text -->
+<!ENTITY strongregex_ast "\*{2}(?:&contentregex_ast;\*{2}|\*{1,3}&contentregex_ast;\*{2}(?!\*))">
+<!ENTITY strongregex_und "\b_{2}(?:&contentregex_und;_{2}|_{1,3}&contentregex_und;_{2}(?!_))">
+<!-- emphasis text -->
+<!ENTITY emphasisregex_ast "\*(?:&contentregex_ast;\*|\*{1,4}&contentregex_ast;\*(?!\*))">
+<!ENTITY emphasisregex_und "\b_(?:&contentregex_und;_+|_{1,4}&contentregex_und;_)\b">
+<!-- links -->
+<!ENTITY startlink "(?:https?|ftp)\://">
+<!ENTITY link "&startlink;[^&quot;&gt;\s]+">
+<!-- link in normal text -->
+<!ENTITY implicitlink "\b&startlink;[^&quot;&gt;\s`\)]*[^\s!&quot;&apos;`\(\)\*,\.:;&lt;&gt;\?~\]\}\\](?=[[:punct:]]*(?:[\s\)]|$))">
+<!-- references: [name], [name][id], [name][id] "title", [name](https://example.com) -->
+<!ENTITY refchar "(?:\\.|[^\]\\])">
+<!ENTITY refname "(?:\\.|[^\s\[\]\\])&refchar;*">
+<!ENTITY reflinkid "\s*(?:&refname;)?">
+<!ENTITY reflinkidregex "(?:\s?\[&reflinkid;\]|\((?:\\.|[^\(\)\\])*\))">
+<!ENTITY reflinkregex "\[(?:(?=\s*&refname;\])|\s+(?=\]))">
+<!-- target ref.: [id]: https://example.com "Title" -->
+<!ENTITY reflinktargetregex '\[\s*(?:&refname;|\s)\]\:\s+(?=\S)'>
+<!-- footnote: [^name] -->
+<!ENTITY footnoteregex "\[\^&refchar;+\]">
+<!-- image: ![title](https://example.com), ![title][id] -->
+<!ENTITY startinlineimage "\!\[(?:\\.|[^\[\]\\])*\]\(">
+<!ENTITY endinlineimage "(?:\\.|[^\(\)\\])*\)">
+<!ENTITY inlineimageregex "&startinlineimage;(?=&endinlineimage;)">
+<!ENTITY refimageregex "\!\[(?:\\.|[^\[\]\\])*\]\[&reflinkid;\]">
+<!-- autolink & email: <https://example.com>, <example@kde.org>, <mailto:example@kde.org> -->
+<!ENTITY autolinkregex '&lt;&link;&gt;'>
+<!ENTITY email "[\-\.\w]+\@[\-a-z0-9]+(?:\.[\-a-z0-9]+)*\.[a-z]+">
+<!ENTITY mailtolinkregex "&lt;(?:mailto:)?(?=&email;&gt;)">
+<!-- horizontal rule: avoid conflicts with strong-emphasis text, lists and code blocks -->
+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">
 <!-- two spaces at end of line generates linebreak -->
 <!ENTITY linebreakregex "  $">
-<!ENTITY strikeoutregex "[~]{2}[^~].*[^~][~]{2}">
-<!-- pandoc style -->
+<!-- strikethrough text, pandoc style -->
+<!ENTITY strikeoutregex "[~]{2}[^~](?:.*[^~])?[~]{2}">
+<!-- start of fenced code block -->
+<!ENTITY fcode "(`{3,}|~{3,})">
+<!-- end of line & empty line -->
+<!ENTITY end "\s*$">
+<!ENTITY emptyline "^\s*$">
+<!-- indented code block -->
+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">
+<!-- bullet of list -->
+<!ENTITY listbullet "[\*\+\-]">
+<!-- metadata key & name of html tag -->
+<!ENTITY metadatakey "[a-zA-Z0-9][\w\-\s]*\:">
+<!ENTITY htmlname "[A-Za-z_\:][\w\.\:\-]*">
+<!-- comment -->
+<!ENTITY startcomment "&lt;!--">
+<!ENTITY endcomment "--&gt;">
+<!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
-<language name="Markdown" version="6" kateversion="5.0" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+
+<language name="Markdown" version="11" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
-        <DetectChar context="blockquote" char="&gt;" column="0"/>
-        <RegExpr attribute="h1" String="^#\s.*[#]?$"/>
-        <RegExpr attribute="h2" String="^##\s.*[#]?$"/>
-        <RegExpr attribute="h3" String="^###\s.*[#]?$"/>
-        <RegExpr attribute="h4" String="^####\s.*[#]?$"/>
-        <RegExpr attribute="h5" String="^#####\s.*[#]?$"/>
-        <RegExpr attribute="h6" String="^######\s.*[#]?$"/>
-        <RegExpr attribute="ruler" String="&rulerregex;"/>
-        <RegExpr attribute="strong" String="&strongregex;"/>
-        <RegExpr attribute="emphasis" String="&emphasisregex;"/>
-        <RegExpr attribute="strongemphasis" String="&strongemphasisregex;"/>
-        <RegExpr attribute="code" String="^([\s]{4,}|\t+).*$"/>
-        <!-- Next 2 lines modified: see https://github.com/jgm/skylighting/issues/84 -->
-        <RegExpr context="bullet" String="^[\*\+\-]\s" lookAhead="true"/>
-        <RegExpr context="numlist" String="^[\d]+\.\s" lookAhead="true"/>
-        <RegExpr attribute="meta" String="^(Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt):(.*)+$"/>
-        <IncludeRules context="inc"/>
+      <!-- Start of the Markdown document: find metadata or code block -->
+      <context name="Start Document" attribute="Normal Text" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthrough="true" fallthroughContext="Normal Text">
+        <!-- Some titles: (Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt) -->
+        <!-- Metadata: Markdown format -->
+        <RegExpr attribute="Metadata" context="metadata" String="\-{3}&end;" column="0" beginRegion="metadata"/>
+        <!-- Metadata: MultiMarkdown format -->
+        <RegExpr attribute="Metadata Title" context="metadata-mm-value" String="^&metadatakey;(?=\s|$)" column="0"/>
+        <!-- Code Block -->
+        <RegExpr attribute="Code" context="find-code-block-start" String="^&indentedcodeblock;" column="0"/>
       </context>
-      <context attribute="blockquote" lineEndContext="#stay" lineEmptyContext="#pop" name="blockquote">
-        <RegExpr attribute="bq-strong" String="&strongregex;"/>
-        <RegExpr attribute="bq-emphasis" String="&emphasisregex;"/>
+      <context name="metadata" attribute="Metadata" lineEndContext="#stay">
+        <StringDetect attribute="Metadata" context="#pop!Normal Text" String="---" column="0" endRegion="metadata"/>
+        <StringDetect attribute="Metadata" context="#pop!Normal Text" String="..." column="0" endRegion="metadata"/>
+        <RegExpr attribute="Metadata Title" String="^&metadatakey;(?=\s|$)" column="0"/>
+      </context>
+      <context name="metadata-mm-value" attribute="Metadata" lineEndContext="#pop!metadata-mm"/>
+      <context name="metadata-mm" attribute="Metadata" lineEndContext="#stay" lineEmptyContext="#pop!Normal Text" fallthrough="true" fallthroughContext="#pop!Normal Text">
+        <!-- Find Metadata key or value -->
+        <RegExpr attribute="Metadata Title" context="#pop!metadata-mm-value" String="^&metadatakey;(?=\s|$)" column="0"/>
+        <RegExpr attribute="Metadata" context="#pop!metadata-mm-value" String="^(?:\s{4}|\t)" column="0"/>
+      </context>
+      <context name="find-code-block-start" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthrough="true" fallthroughContext="#pop!Normal Text">
+        <IncludeRules context="find-code-block"/>
+      </context>
+
+      <!-- Normal Text Document -->
+      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="find-code-block">
+        <!-- Header -->
+        <DetectChar context="find-header" char="#" column="0" lookAhead="true"/>
+        <RegExpr attribute="Header H1" String="(?:\=\s*){2,}$" firstNonSpace="true"/>
+        <!-- Highlight code block after line only with spaces or comment -->
+        <RegExpr attribute="Normal Text" context="find-code-block" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
+        <!-- Horizontal rules, Blockquotes and Lists.
+             NOTE: The indentation of the lists is captured. -->
+        <RegExpr attribute="Horizontal Rule" context="find-code-block" String="^&rulerregex;" column="0"/>
+        <DetectChar attribute="Blockquote" context="blockquote" char="&gt;" firstNonSpace="true"/>
+        <RegExpr attribute="List" context="list" String="(\s*)&listbullet;(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist" String="(\s*)\d\.(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist2" String="(\s*)\d\d+\.(\s+)" column="0"/>
+        <!-- Find Strong, Emphasis and Strikethrough Text -->
+        <DetectChar context="find-strong-normal" char="*" lookAhead="true"/>
+        <DetectChar context="find-emphasis-normal" char="_" lookAhead="true"/>
+        <RegExpr attribute="Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="bullet" lineEndContext="#stay" lineEmptyContext="#pop" name="bullet">
-        <RegExpr attribute="bl-strong" String="&strongregex;"/>
-        <RegExpr attribute="bl-emphasis" String="&emphasisregex;"/>
+      <!-- Find indented code blocks. These are only allowed after an empty line or on the first line -->
+      <context name="find-code-block" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Code" String="^&indentedcodeblock;" column="0"/>
+        <RegExpr attribute="Normal Text" String="&end;" />
+        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;" column="0" beginRegion="comment"/>
+        <RegExpr attribute="Comment" context="comment" String="\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
+      </context>
+
+      <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Header H1" context="#pop" String="^#\s.*[#]?$"/>
+        <RegExpr attribute="Header H2" context="#pop" String="^##\s.*[#]?$"/>
+        <RegExpr attribute="Header H3" context="#pop" String="^###\s.*[#]?$"/>
+        <RegExpr attribute="Header H4" context="#pop" String="^####\s.*[#]?$"/>
+        <RegExpr attribute="Header H5" context="#pop" String="^#####\s.*[#]?$"/>
+        <RegExpr attribute="Header H6" context="#pop" String="^######\s.*[#]?$"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="#"/>
+      </context>
+      <context name="find-strong-normal" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="*"/>
+      </context>
+      <context name="find-emphasis-normal" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="_"/>
+      </context>
+
+      <!-- Blockquote -->
+      <context name="blockquote" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="default-blockquote-1"/>
+        <!-- Find code block -->
+        <RegExpr attribute="Normal Text" context="#pop!find-code-block" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="#pop!find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
+        <IncludeRules context="default-blockquote-2"/>
+      </context>
+      <!-- Blockquote within a list -->
+      <context name="blockquote-list" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="default-blockquote-1"/>
+        <!-- Don't find code block -->
+        <RegExpr attribute="Normal Text" context="#pop" String="&emptyline;" column="0"/>
+        <StringDetect attribute="Comment" context="#pop!comment" String="&startcomment;" firstNonSpace="true"/>
+        <IncludeRules context="default-blockquote-2"/>
+      </context>
+
+      <context name="default-blockquote-1" attribute="Blockquote: Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Blockquote" char="&gt;" firstNonSpace="true"/>
+        <!-- End with header, horizontal rule or list/numlist -->
+        <RegExpr context="#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s|&rulerregex;)" column="0" lookAhead="true"/>
+      </context>
+      <context name="default-blockquote-2" attribute="Blockquote: Normal Text" lineEndContext="#stay">
+        <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
+        <AnyChar context="find-strong-emphasis-blockquote" String="*_" lookAhead="true"/>
+        <RegExpr attribute="Blockquote: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="Blockquote: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="numlist" lineEndContext="#stay" lineEmptyContext="#pop" name="numlist">
-        <RegExpr attribute="nl-strong" String="&strongregex;"/>
-        <RegExpr attribute="nl-emphasis" String="&emphasisregex;"/>
+      <context name="find-strong-emphasis-blockquote" attribute="Blockquote: Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="Blockquote: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="Blockquote: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
+        <RegExpr attribute="Blockquote: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <AnyChar attribute="Blockquote: Normal Text" context="#pop" String="*_"/>
+      </context>
+
+      <!-- List and Numbered List -->
+      <!-- NOTE: The indentation of the lists is captured. New paragraphs, code blocks, blockquotes or
+           horizontal rules must have an indentation equal to or greater than the list, to be part of it. -->
+      <!-- * list -->
+      <context name="list" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s+&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s+&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured corresponds to the item list -->
+        <RegExpr context="content-list" String="%1%2\s" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+        <!-- Highlight checkbox at the start of the item (task list) -->
+        <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
+      </context>
+      <!-- 1. numlist (one digit) -->
+      <context name="numlist" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{2,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured -->
+        <RegExpr context="content-list" String="%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+      <!-- 10. numlist (two or more digits) -->
+      <context name="numlist2" attribute="List: Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="Code" String="%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="%1%2\s{3,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="Horizontal Rule" String="%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured -->
+        <RegExpr context="content-list" String="%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+
+      <!-- NOTE: Empty lines, blockquotes and horizontal rules send to contexts "list", "numlist" or "numlist2" (#pop),
+           to check the indentation of the text and determine if the content of the list ends. -->
+      <context name="content-list" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <RegExpr context="#pop" String="&emptyline;" column="0"/>
+        <!-- Blockquote and horzontal rule (check indentation) -->
+        <RegExpr context="#pop" String="^\s*(?:&gt;|&rulerregex;)" column="0" lookAhead="true"/>
+        <!-- End with header or new list/numlist -->
+        <RegExpr context="#pop#pop" String="(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
+        <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
+        <AnyChar context="find-strong-emphasis-list" String="*_" lookAhead="true"/>
+        <RegExpr attribute="List: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <!-- Common -->
         <IncludeRules context="inc"/>
+        <RegExpr attribute="List: Link" String="&implicitlink;"/>
       </context>
-      <context attribute="comment" lineEndContext="#stay" name="comment">
-        <RegExpr String="--&gt;" attribute="comment" context="#pop" endRegion="comment"/>
+      <context name="find-strong-emphasis-list" attribute="List: Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und2;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und_ast2;"/>
+        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
+        <RegExpr attribute="List: Strong Text" context="#pop" minimal="true" String="&strongregex_und;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast;"/>
+        <RegExpr attribute="List: Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_und;"/>
+        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_ast;" />
+        <RegExpr attribute="List: Emphasis Text" context="#pop" minimal="true" String="&emphasisregex_und;"/>
+        <AnyChar attribute="List: Normal Text" context="#pop" String="*_"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="bash-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+
+      <!-- Comments -->
+      <context name="comment" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="&endcomment;" endRegion="comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
+
+      <!-- Fenced Code Blocks -->
+      <context name="find-lang-fenced-code" attribute="Normal Text" lineEndContext="#pop">
+        <!-- Apply syntax highlighting to fenced code blocks for some languages -->
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;"/>
+        <RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|zsh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true"/> <!-- Block comment of Doxygen -->
+        <RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true"/> <!-- Included in the Haskell definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true"/> <!-- Included in the HTML definition. Also apply for TSX. -->
+        <RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl|perl6|p[lm]?6|nqp)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true"/> <!-- Included in the PHP definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$"/>
+      </context>
+      <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">
+        <IncludeRules context="code"/>
         <IncludeRules context="##Bash" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="cmake-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##CMake" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="cpp-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="c-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##C" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpp-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##C++" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="css-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="csharp-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##C#" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="css-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##CSS" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="email-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="BlockComment##Doxygen" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="email-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##Email" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="haskell-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="go-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Go" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="hamlet-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Hamlet" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="haskell-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##Haskell" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="html-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="html-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##HTML" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="json-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="java-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="javascript-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="jsx-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="json-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##JSON" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="php-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="find-code-block" name="markdown-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal Text"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Matlab" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mustache-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Mustache/Handlebars (HTML)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="perl-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Perl" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="php-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="phpsource##PHP/PHP" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="python-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="python-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##Python" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="qml-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="qml-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##QML" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="rust-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="r-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##reStructuredText" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Ruby" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rust-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##Rust" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="xml-code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mysql-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="typescript-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="xml-code">
+        <IncludeRules context="code"/>
         <IncludeRules context="##XML" includeAttrib="true"/>
       </context>
-      <context attribute="code" lineEndContext="#stay" name="code">
-        <WordDetect attribute="code" context="#pop" String="```"/>
+
+      <!-- Common -->
+      <context name="inc" attribute="Normal Text" lineEndContext="#stay">
+        <!-- Code -->
+        <RegExpr attribute="Code" String="`[^`]+`(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{2}[^`](?:.*[^`])?`{2}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{3}[^`](?:.*[^`])?`{3}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{4}[^`](?:.*[^`])?`{4}(?!`)"/>
+        <RegExpr attribute="Code" minimal="true" String="`{5,}[^`](?:.*[^`])?`{5,}"/>
+        <!-- Find Fenced Code Block -->
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <!-- Comment -->
+        <StringDetect attribute="Comment" context="comment" String="&startcomment;" beginRegion="comment"/>
+        <!-- Links and References -->
+        <RegExpr attribute="Reference-Link Target" context="reflinktarget" String="&reflinktargetregex;" firstNonSpace="true"/>
+        <RegExpr attribute="Footnote" String="&footnoteregex;"/>
+        <RegExpr attribute="Reference-Link" context="find-reflink" String="&reflinkregex;"/>
+        <RegExpr attribute="Inline Image" context="inlineimage" String="&inlineimageregex;"/>
+        <RegExpr attribute="Reference Image" String="&refimageregex;"/>
+        <RegExpr attribute="Auto-Link" context="autolink" String="&autolinkregex;" lookAhead="true"/>
+        <RegExpr attribute="Mailto-Link" context="mailtolink" String="&mailtolinkregex;"/>
+        <!-- Line Break -->
+        <RegExpr attribute="Line Break" minimal="true" String="&linebreakregex;"/>
+        <!-- Backslash Escapes -->
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="\"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="`"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="*"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="_"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="{"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="}"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="["/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="]"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="("/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1=")"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="#"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="+"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="-"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="."/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="!"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&lt;"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&gt;"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="&amp;"/>
+        <!-- Inline HTML -->
+        <RegExpr attribute="EntityRef" String="&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&htmlname;);"/>
+        <RegExpr context="find-html-block" String="&lt;/?&htmlname;(?:[\s&gt;]|/&gt;|$)" lookAhead="true"/>
       </context>
-      <context attribute="common" name="inc" lineEndContext="#stay">
-        <RegExpr attribute="code" String="`[^`]+`"/>
-        <RegExpr context="comment" String="&lt;!--" beginRegion="comment"/>
-        <RegExpr attribute="reflink" String="&reflinkregex;"/>
-        <RegExpr attribute="footnote" String="&footnoteregex;"/>
-        <RegExpr attribute="inlinelink" String="&inlinelinkregex;"/>
-        <RegExpr attribute="reflinktarget" String="&reflinktargetregex;"/>
-        <RegExpr attribute="inlineimage" String="&inlineimageregex;"/>
-        <RegExpr attribute="refimage" String="&refimageregex;"/>
-        <RegExpr attribute="autolink" String="&autolinkregex;"/>
-        <RegExpr attribute="mailtolink" String="&mailtolinkregex;"/>
-        <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/>
-        <RegExpr attribute="linebreak" minimal="true" String="&linebreakregex;"/>
-        <WordDetect attribute="code" context="bash-code" String="```bash"/>
-        <WordDetect attribute="code" context="cmake-code" String="```cmake"/>
-        <WordDetect attribute="code" context="cpp-code" String="```cpp"/>
-        <WordDetect attribute="code" context="css-code" String="```css"/>
-        <WordDetect attribute="code" context="email-code" String="```email"/>
-        <WordDetect attribute="code" context="haskell-code" String="```haskell"/>
-        <WordDetect attribute="code" context="html-code" String="```html"/>
-        <WordDetect attribute="code" context="json-code" String="```json"/>
-        <WordDetect attribute="code" context="php-code" String="```php"/>
-        <WordDetect attribute="code" context="python-code" String="```python"/>
-        <WordDetect attribute="code" context="qml-code" String="```qml"/>
-        <WordDetect attribute="code" context="rust-code" String="```rust"/>
-        <WordDetect attribute="code" context="xml-code" String="```xml"/>
-        <StringDetect attribute="code" context="code" String="```"/>
+      <context name="find-html-block" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="FindSpecialHTMLTags##HTML"/>
+        <IncludeRules context="FindHTMLTags##HTML"/>
       </context>
+
+      <!-- Links and email: <https://example.com>, <example@kde.org> -->
+      <context name="autolink" attribute="Auto-Link" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Auto-Link" char="&lt;"/>
+        <DetectChar attribute="Auto-Link" context="#pop" char="&gt;"/>
+        <RegExpr attribute="Link" String="&startlink;[^&quot;&gt;\s]+"/>
+      </context>
+      <context name="mailtolink" attribute="Email" lineEndContext="#pop">
+        <DetectChar attribute="Mailto-Link" context="#pop" char="&gt;"/>
+      </context>
+
+      <!-- References: [example][id], [example](http://example.com) -->
+      <context name="find-reflink" attribute="Reference-Link Name" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link Name" char="\" char1="]"/>
+        <RegExpr attribute="Reference-Link" context="#pop!find-reflink-id" String="\](?=&reflinkidregex;)"/> <!-- Find id -->
+        <DetectChar attribute="Reference-Link" context="#pop" char="]"/>
+        <!-- Image as link or reference -->
+        <RegExpr attribute="Inline Image" context="inlineimage" String="&startinlineimage;(?=&endinlineimage;&refchar;*\])"/>
+        <RegExpr attribute="Reference Image" String="&refimageregex;(?=&refchar;*\])"/>
+        <RegExpr attribute="Reference-Link Name" context="#stay" String="(?:\[(?:\\.|[^\[\]\\])*\](?:\\.|[^\[\]\\])*)+(?=\])" minimal="true"/>
+      </context>
+      <context name="find-reflink-id" attribute="Reference-Link" lineEndContext="#pop">
+        <DetectSpaces />
+        <!-- Ref.: [an example][id] "Optional title" -->
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-id" char="["/>
+        <!-- Inline Ref.: [an example](http://example.com/ "Title") -->
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-inline-id" char="("/>
+      </context>
+      <context name="reflink-inline-id" attribute="Reference-Link" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link" char="\" char1=")"/>
+        <DetectChar attribute="Reference-Link" context="#pop" char=")"/>
+        <RegExpr attribute="Reference-Link: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\)\\])+"/>
+        <RegExpr attribute="Reference-Link: Email" String="\b&email;\b"/>
+      </context>
+      <context name="reflink-id" attribute="Reference-Link ID" lineEndContext="#pop">
+        <Detect2Chars attribute="Reference-Link ID" char="\" char1="]"/>
+        <DetectChar attribute="Reference-Link" context="#pop!reflink-title" char="]"/>
+        <RegExpr attribute="Reference-Link: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\]\\])+"/>
+      </context>
+      <!-- [an example][id] "title" -->
+      <context name="reflink-title" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Reference-Link" context="#pop" String="\s+&quot;(?:\\.|[^&quot;\\])*&quot;"/>
+      </context>
+
+      <!-- Target Ref.: [foo]: http://example.com/  "Optional Title Here" -->
+      <context name="reflinktarget" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="Reference-Link Target: Link" context="#pop!reflinktarget-title" String="\s*&link;(?=\s|$)"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop!reflinktarget-link" String="\s*&lt;(?=&link;&gt;(?:\s|$))"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop!reflinktarget-title" String="\s*#[\w\.\:\-]+\b"/>
+      </context>
+      <context name="reflinktarget-link" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Reference-Link Target" context="#pop!reflinktarget-title" char="&gt;"/>
+        <RegExpr attribute="Reference-Link Target: Link" String="&link;"/>
+      </context>
+      <context name="reflinktarget-title" attribute="Reference-Link Target" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces attribute="Reference-Link Target"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="&quot;(?:\\.|[^&quot;\\])*&quot;"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="&apos;(?:\\.|[^&apos;\\])*&apos;"/>
+        <RegExpr attribute="Reference-Link Target" context="#pop" String="\((?:\\.|[^\)\\])*\)"/>
+      </context>
+
+      <!-- Image -->
+      <context name="inlineimage" attribute="Inline Image" lineEndContext="#pop">
+        <DetectChar attribute="Inline Image" context="#pop" char=")"/>
+        <Detect2Chars attribute="Inline Image" char="\" char1=")"/>
+        <RegExpr attribute="Inline Image: Link" String="\b&startlink;(?:\\.|[^&quot;&gt;\s\)\\])+"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="common" defStyleNum="dsNormal"/>
-      <itemData name="strongemphasis" defStyleNum="dsNormal" italic="true" bold="true"/>
-      <itemData name="emphasis" defStyleNum="dsNormal" italic="true"/>
-      <itemData name="strong" defStyleNum="dsNormal" bold="true"/>
-      <itemData name="ruler" defStyleNum="dsNormal" bold="true"/>
-      <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true"/>
-      <itemData name="linebreak" defStyleNum="dsNormal" underline="true" color="#999999"/>
-      <itemData name="h1" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h2" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h3" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h4" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h5" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="h6" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="blockquote" defStyleNum="dsDataType"/>
-      <itemData name="bq-emphasis" defStyleNum="dsDataType" italic="true"/>
-      <itemData name="bq-strong" defStyleNum="dsDataType" bold="true"/>
-      <itemData name="bullet" defStyleNum="dsString"/>
-      <itemData name="bl-emphasis" defStyleNum="dsString" italic="true"/>
-      <itemData name="bl-strong" defStyleNum="dsString" bold="true"/>
-      <itemData name="numlist" defStyleNum="dsString"/>
-      <itemData name="nl-emphasis" defStyleNum="dsString" italic="true"/>
-      <itemData name="nl-strong" defStyleNum="dsString" bold="true"/>
-      <itemData name="comment" defStyleNum="dsComment"/>
-      <itemData name="code" defStyleNum="dsBaseN"/>
-      <itemData name="reflink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="inlinelink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="autolink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="mailtolink" defStyleNum="dsOthers" underline="true"/>
-      <itemData name="footnote" defStyleNum="dsOthers" italic="true"/>
-      <itemData name="meta" defStyleNum="dsComment"/>
-      <itemData name="reflinktarget" defStyleNum="dsOthers" italic="false" bold="false"/>
-      <itemData name="inlineimage" defStyleNum="dsAlert" italic="false" bold="false"/>
-      <itemData name="refimage" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Emphasis Text" defStyleNum="dsNormal" italic="true"/>
+      <itemData name="Strong Text" defStyleNum="dsNormal" bold="true"/>
+      <itemData name="Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
+      <itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="Normal Text: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
+      <itemData name="Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
+      <itemData name="Line Break" defStyleNum="dsNormal" underline="true" color="#999999" spellChecking="false"/>
+      <itemData name="Header H1" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H2" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H3" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H4" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H5" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Header H6" defStyleNum="dsFunction" bold="true"/>
+      <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Blockquote: Normal Text" defStyleNum="dsAttribute"/>
+      <itemData name="Blockquote: Emphasis Text" defStyleNum="dsAttribute" italic="true"/>
+      <itemData name="Blockquote: Strong Text" defStyleNum="dsAttribute" bold="true"/>
+      <itemData name="Blockquote: Strong-Emphasis Text" defStyleNum="dsAttribute" italic="true" bold="true"/>
+      <itemData name="Blockquote: Strikethrough Text" defStyleNum="dsAttribute" strikeOut="true"/>
+      <itemData name="Blockquote: Link" defStyleNum="dsAttribute" underline="true" spellChecking="false"/>
+      <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
+      <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="List: Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="List: Emphasis Text" defStyleNum="dsNormal" italic="true"/>
+      <itemData name="List: Strong Text" defStyleNum="dsNormal" bold="true"/>
+      <itemData name="List: Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
+      <itemData name="List: Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="List: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
+      <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Code" defStyleNum="dsInformation"/>
+      <itemData name="Fenced Code" defStyleNum="dsInformation" spellChecking="false"/>
+      <itemData name="Auto-Link" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
+      <itemData name="Mailto-Link" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Email" defStyleNum="dsOthers" italic="true" underline="true" spellChecking="false"/>
+      <itemData name="Footnote" defStyleNum="dsOthers" italic="true"/>
+      <itemData name="Reference-Link" defStyleNum="dsComment" italic="false"/>
+      <itemData name="Reference-Link Name" defStyleNum="dsOthers" underline="true" italic="false"/>
+      <itemData name="Reference-Link ID" defStyleNum="dsComment" italic="false"/>
+      <itemData name="Reference-Link: Link" defStyleNum="dsComment" underline="true" italic="false" spellChecking="false"/>
+      <itemData name="Reference-Link: Email" defStyleNum="dsComment" italic="true" underline="true" spellChecking="false"/>
+      <itemData name="Reference-Link Target" defStyleNum="dsOthers" italic="false" bold="false"/>
+      <itemData name="Reference-Link Target: Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
+      <itemData name="Inline Image" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Reference Image" defStyleNum="dsAlert" italic="false" bold="false"/>
+      <itemData name="Inline Image: Link" defStyleNum="dsAlert" italic="false" bold="false" underline="true"/>
+      <itemData name="Metadata Title" defStyleNum="dsAnnotation"/>
+      <itemData name="Metadata" defStyleNum="dsComment" italic="0"/>
+      <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
+    <keywords additionalDeliminator="`"/>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment"/>
+      <comment name="multiLine" start="&startcomment;" end="&endcomment;" region="comment"/>
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
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">
 
-<language name="Matlab" version="2" kateversion="2.2" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
+<language name="Matlab" version="3" kateversion="5.0" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
   <highlighting>
 
     <!-- Reserved keywords in MATLAB -->
@@ -98,8 +98,10 @@
         <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" />
 
         <!-- If ' is not the adjoint operator, it starts a string or an unterminated string -->
-        <RegExpr context="#stay" attribute="String" String="'[^']*(''[^']*)*'(?=[^']|$)" />
-        <RegExpr context="#stay" attribute="Incomplete String" String="'[^']*(''[^']*)*" />
+        <RegExpr context="#stay" attribute="CharVector" String="'[^']*(''[^']*)*'(?=[^']|$)" />
+        <RegExpr context="#stay" attribute="Incomplete CharVector" String="'[^']*(''[^']*)*" />
+        <RegExpr context="#stay" attribute="String" String="&quot;[^&quot;]*(&quot;&quot;[^&quot;]*)*&quot;(?=[^&quot;]|$)" />
+        <RegExpr context="#stay" attribute="Incomplete String" String="&quot;[^&quot;]*(&quot;&quot;[^&quot;]*)*" />
 
         <!-- Handling of keywords, comments, system commands, identifiers, numbers and braces -->
         <keyword context="#stay" attribute="Keyword" String="KeywordsList" />
@@ -136,25 +138,18 @@
 
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
-      <itemData name="Variable" defStyleNum="dsNormal" />
-      <itemData name="Operator" defStyleNum="dsNormal"/>
+      <itemData name="Variable" defStyleNum="dsVariable" />
+      <itemData name="Operator" defStyleNum="dsOperator"/>
       <itemData name="Number" defStyleNum="dsFloat" />
       <itemData name="Delimiter" defStyleNum="dsNormal" />
-      <itemData name="String" defStyleNum="dsString" color="#b20000"/>
-      <itemData name="System" defStyleNum="dsBaseN" color="#b28c00"/>
-      <itemData name="Incomplete String" defStyleNum="dsChar" color="#a020f0"/>
-      <itemData name="Keyword"  defStyleNum="dsNormal" color="#0000ff"/>
-      <itemData name="Comment" defStyleNum="dsComment" color="#009900"/>
+      <itemData name="CharVector" defStyleNum="dsSpecialString" />
+      <itemData name="String" defStyleNum="dsString" />
+      <itemData name="System" defStyleNum="dsBaseN" />
+      <itemData name="Incomplete CharVector" defStyleNum="dsError" />
+      <itemData name="Incomplete String" defStyleNum="dsError" />
+      <itemData name="Keyword"  defStyleNum="dsKeyword" />
+      <itemData name="Comment" defStyleNum="dsComment" />
     </itemDatas>
-    <!-- MATLAB 6.5 default color scheme
-          keywords             #0000ff
-          comments             #228b22
-          strings              #b20000
-          unterminated strings #a020f0
-          system commands      #b28c00
-          errors               #ff0000
-          all others           #000000
-    -->
 
   </highlighting>
 
@@ -166,65 +161,3 @@
   </general>
 
 </language>
-<!--
-%%=====================================================
-% MATLAB test code for Kate/Kwrite syntax highlighting
-%%=====================================================
-
-% Numbers _____________________________________________
-5, 5.5, .1, 0.1, 0.4e5, 1.2e-5, 5i, 5.3i, 6j, .345+3i
-5', 5.5', .1', 0.1', 0.4e5', 1.2e-5', 5i', 5.3i', 6j', .345+3i'
-
-% Operators ___________________________________________
-% relational operators
-'asdf'~=4, c<=4, d>=4, a<b, a>b, a==b, b||c, b&&c
-% elementwise arithmetic operators
-a.^b, a.*b a./b, 1:4:5
-% single-character binary arithmetic
-a+3, a-3, a*2, a^3, a/3, a\3, a|b, a&b
-% unary operators
-a = ~g; g = @sfdgdsf(sdfsd,345); g.' + 1i.' - ('asdf').'
-% separators and delimiter
-(asd),[sadf];{asdf},;;,;;;()
-% continuation
-a = 1+ ...
-  2;
-
-% Strings and adjoint _________________________________
-% incomplete strings
-'string
-'str''
-'str''ing
-% complete strings
-'string' % simple string
-'''' % string containing '
-'str''ing' % one string containing '
-'string' 'string'  % two strings
-'asdf'  'asdf''' variable  % two strings and a variable
-'asdf''asdf''   fsgdfg' + (asdf)' - 'asdf'.' + []''''.';''
-'sadf'.' % string transpose
-% adjoint
-{'asdf'}' + 1
-('asdf')' + 1
-['asdf']' + 1
-'' var''' % empty string, var with >1 adjoints
-[5]'*{5}'*('asd')'.'+(5)'*6'*asdf'*asdf'.'  % many adjoints
-A'*B + 1      % adjoint
-A.'*B + 1     % transpose
-A.'.'*B + 1   % double transpose
-A'.' + 1      % adjoint, then transpose
-A.''          % transpose, then adjoint
-
-% System command ______________________________________
-!hostname
-!cp * /tmp
-
-% Reserved keywords ___________________________________
-function, persistent, global
-switch, case, otherwise
-if, else, elseif
-try, catch
-for, while, break, continue
-end, return
-function, FUNCTION, Function  % case sensitive!
--->
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="5" kateversion="3.4" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="6" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
diff --git a/xml/modelines.xml b/xml/modelines.xml
--- a/xml/modelines.xml
+++ b/xml/modelines.xml
@@ -8,7 +8,7 @@
   Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)
   -->
 <language name="Modelines"
-          version="4"
+          version="5"
           kateversion="5.0"
           section="Other"
           extensions=""
@@ -130,10 +130,10 @@
     <context name="Normal" attribute="Comment" lineEndContext="#pop">
       <DetectSpaces />
       <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />
-      <RegExpr String="kate-(mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
+      <RegExpr String="kate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
     </context>
 
-    <context name="Modeline" attribute="Comment" lineEndContext="#pop">
+    <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="Booleans" context="Booleans" attribute="Variable" />
       <keyword String="Integrals" context="Integrals" attribute="Variable" />
@@ -142,7 +142,7 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="Booleans" attribute="Comment" lineEndContext="#pop">
+    <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="True" attribute="Option ON" context="#stay" />
       <keyword String="False" attribute="Option OFF" context="#stay" />
@@ -150,7 +150,7 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="Integrals" attribute="Comment" lineEndContext="#pop">
+    <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <Int attribute="Number" context="#stay" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
@@ -164,13 +164,13 @@
       <LineContinue context="#pop" />
     </context>
 
-    <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop">
+    <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
       <LineContinue context="#pop" />
     </context>
-    <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop">
+    <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
     </context>
 
diff --git a/xml/mustache.xml b/xml/mustache.xml
--- a/xml/mustache.xml
+++ b/xml/mustache.xml
@@ -2,11 +2,11 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
 	<!ENTITY name          "[A-Za-z_:][\w.:_-]*">
-	<!ENTITY attributeName "(\s|^)[A-Za-z_:\*#\(\[][\)\]\w\.:_-]*">
-	<!ENTITY entref        "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
-	<!ENTITY tag           "&lt;\s*(&name;|&gt;)">
+	<!ENTITY attributeName "(?:\s|^)[A-Za-z_:\*#\(\[][\)\]\w\.:_-]*">
+	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+	<!ENTITY tag           "&lt;\s*(?:&name;|&gt;)">
 	<!-- Handlebars identifier -->
-	<!ENTITY identifier    "([a-zA-Z_$:\?]|[^[:ascii:]])([\w$:\?\-]|[^[:ascii:]])*">
+	<!ENTITY identifier    "(?:[a-zA-Z_$:\?]|[^[:ascii:]])(?:[\w$:\?\-]|[^[:ascii:]])*">
 ]>
 
 <!--
@@ -36,12 +36,13 @@
     (via IncludeRules) in the HTML highlighter.
 
     Change log:
+     * v3 [2019-10-03]: Minor fixes.
      * v2 [2019-02-24]: Also highlight template files (HTML).
                         Improve support for Handlebars.
      * v1 [2019-02-10]: Initial version
 -->
 
-<language name="Mustache/Handlebars (HTML)" version="2" kateversion="5.0"
+<language name="Mustache/Handlebars (HTML)" version="3" 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)"
@@ -85,7 +86,7 @@
 			<!-- For helpers (not included because it's redundant):
 			       Start: \{\{~?#?\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)
 			       End:   \{\{~?/\s*(?=(if|unless|with|link\-to|each(\-in)?)\b)  -->
-			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?\s*else(\s+(if|unless|with|link\-to|each(\-in)?))?\b" />
+			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?\s*else(?:\s+(?:if|unless|with|link\-to|each(?:\-in)?))?\b" />
 			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^][&gt;\*]?\s*&identifier;\b" beginRegion="MustacheBlock" />
 			<RegExpr context="#pop" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\s*\}\}" endRegion="MustacheBlock" />
 			<RegExpr context="#pop!MustacheVariableBlockEndFolding" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\b" />
@@ -98,8 +99,8 @@
 			<StringDetect context="#pop!MustachePartial" attribute="Mustache Variable" String="{{&gt;" />
 			<StringDetect context="#pop!MustacheMarkerSet" attribute="Mustache Variable" String="{{=" />
 			<StringDetect context="#pop!MustacheVariable" attribute="Mustache Variable" String="{{$" />
-			<RegExpr context="#pop!MustacheVariableUnescape" attribute="Mustache Variable Unescape" String="\{\{\{\s*(log|link)\b" />
-			<RegExpr context="#pop!MustacheVariable" attribute="Mustache Variable" String="\{\{\s*(log|link)\b" />
+			<RegExpr context="#pop!MustacheVariableUnescape" attribute="Mustache Variable Unescape" String="\{\{\{\s*(?:log|link)\b" />
+			<RegExpr context="#pop!MustacheVariable" attribute="Mustache Variable" String="\{\{\s*(?:log|link)\b" />
 
 			<StringDetect context="#pop!MustacheVariableUnescape" attribute="Mustache Variable Unescape" String="{{{" />
 			<Detect2Chars context="#pop!MustacheVariable" attribute="Mustache Variable" char="{" char1="{" />
@@ -214,7 +215,7 @@
 			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/header" insensitive="true" endRegion="header" />
 			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/main" insensitive="true" endRegion="main" />
 			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/nav" insensitive="true" endRegion="nav" />
-			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/sectiond" insensitive="true" endRegion="section" />
+			<WordDetect context="ElementTagEnd" attribute="Element Tag" String="&lt;/section" insensitive="true" endRegion="section" />
 
 			<RegExpr context="#stay" attribute="Element Tag" String="&lt;/\s*&gt;" />
 			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*&name;" />
@@ -271,7 +272,7 @@
 		<context name="Comment" attribute="Comment" lineEndContext="#stay">
 			<DetectSpaces/>
 			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" />
-			<RegExpr context="#stay" attribute="Error" String="-(-(?!-&gt;))+" />
+			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="##Alerts" />
 		</context>
@@ -283,7 +284,7 @@
 		</context>
 
 		<context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="Doctype Markupdecl" attribute="Doctype" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+			<RegExpr context="Doctype Markupdecl" attribute="Doctype" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
 		</context>
 		<context name="FindPI" attribute="Normal Text" lineEndContext="#stay">
 			<RegExpr context="PI" attribute="Processing Instruction" String="&lt;\?[\w:-]*" beginRegion="pi" />
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="8" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm;*.pl6;*.PL6;*.p6;*.pm6;" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" version="9" kateversion="2.4" 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>
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="9" kateversion="3.4" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="10" 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">
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,7 +1,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
   name="PowerShell"
-  version="4"
+  version="5"
   kateversion="5.0"
   extensions="*.ps1;*.ps1m;*.ps1d"
   section="Scripts"
@@ -892,7 +892,12 @@
         <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
       </context>
+      <context attribute="String Char" lineEndContext="#stay" name="StringEscape">
+        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]" context="#stay"/>
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}" context="#stay"/>
+      </context>
       <context attribute="String" lineEndContext="#pop" name="String">
+        <IncludeRules context="StringEscape"/>
         <LineContinue attribute="String" context="#pop"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
@@ -916,6 +921,7 @@
       <itemData name="Function"     defStyleNum="dsFunction" spellChecking="false"/>
       <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar" spellChecking="false"/>
       <itemData name="HereString"       defStyleNum="dsVerbatimString"/>
       <itemData name="Comment"      defStyleNum="dsComment"/>
       <itemData name="Cmdlets"      defStyleNum="dsBuiltIn" spellChecking="false"/>
diff --git a/xml/qml.xml b/xml/qml.xml
--- a/xml/qml.xml
+++ b/xml/qml.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Author: Milian Wolff <mail@milianw.de> -->
-<language name="QML" version="6" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
+<language name="QML" version="7" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
           mimetype="text/x-qml;application/x-qml" indenter="cstyle"
           author="Milian Wolff (mail@milianw.de)" license="MIT">
   <highlighting>
@@ -83,6 +83,10 @@
       <item>GradientStop</item>
       <item>MouseRegion</item>
     </list>
+    <!-- keywords not part of JavaScript -->
+    <list name="extra-keywords">
+      <item>readonly</item>
+    </list>
     <list name="types">
       <!-- see: http://doc.trolltech.com/4.7-snapshot/qml-extending-types.html -->
       <item>string</item>
@@ -101,6 +105,7 @@
         <DetectSpaces/>
         <WordDetect attribute="Import" context="Import" String="import"/>
         <keyword attribute="Elements" context="#stay" String="elements" />
+        <keyword attribute="Keywords" String="extra-keywords"/>
         <WordDetect attribute="Signal" context="Signal" String="signal" />
         <WordDetect attribute="Keywords" context="Property" String="default property" />
         <WordDetect attribute="Keywords" context="Property" String="property" />
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -11,7 +11,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="4" kateversion="2.4" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="5" kateversion="2.4" casesensitive="1">
 
   <highlighting>
 
@@ -24,11 +24,12 @@
         <RegExpr attribute="Citation" context="#stay" String="^\s*\.\. \[[&SimpleReferenceNameChars;]+\]\s" minimal="true" column="0"/>
         <RegExpr attribute="HyperlinkTarget" context="#stay" String="^\s*(\.\. (__:|_[&SimpleReferenceNameChars; ]+:(\s|$))|__ )" minimal="true" column="0"/>
         <StringDetect attribute="Code" String=".. code-block::" context="CodeBlock" firstNonSpace="true"/>
-        <RegExpr attribute="Directive" context="#stay" String="^\s*\.\. [\w\-_\.]+::(\s|$)" minimal="true" column="0"/>
+        <StringDetect attribute="Code" String=".. code::" context="CodeBlock" firstNonSpace="true"/>
+        <RegExpr attribute="Directive" context="#stay" String="^\s*\.\. ([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$)" minimal="true" column="0"/>
         <RegExpr attribute="Code" String="::$" context="CodeBlock" />
         <RegExpr attribute="SubstitutionDefinition" context="#stay" String="^\s*\.\. \|[&SimpleReferenceNameChars; ]+\|\s+[&SimpleReferenceNameChars;]+::\s" minimal="true" column="0"/>
         <RegExpr attribute="Field" String=":(?=([^:]*\\:)*[^:]*:(\s|$))" context="Field" firstNonSpace="true"/>
-        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.\s(?![\w\-_\.]+::(\s|$))" column="0"/>
+        <RegExpr attribute="Comment" context="Comment" String="^(\s*)\.\.(\s|$)(?!([\w\-_\.]+)(:[\w\-_\.]+)*::(\s|$))" column="0"/>
       </context>
 
       <context name="InlineMarkup" attribute="Normal" lineEndContext="#stay">
@@ -37,8 +38,9 @@
         <RegExpr attribute="InlineInternalTarget" context="#stay" String="&inlinestart;_`[^\s].*`&inlineend;" minimal="true"/>
         <RegExpr attribute="FootnoteReference" context="#stay" String="&inlinestart;\[[&SimpleReferenceNameChars;]+\]_&inlineend;" minimal="true"/>
         <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_&inlineend;" minimal="true"/>
-        <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:[\w\-_\.\+]+:)" minimal="true"/>
-        <RegExpr attribute="Role" String=":[\w\-_\.\+]+:(?=`)" context="Role"/>
+        <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:)" minimal="true"/>
+        <RegExpr attribute="Role" String=":([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:(?=`)" context="Role"/>
+        <RegExpr attribute="DefaultRole" context="#stay" String="&inlinestart;`[^\s].*`&inlineend;" minimal="true"/>
       </context>
 
       <context name="Field" attribute="Field" lineEndContext="#stay">
@@ -92,6 +94,7 @@
       <itemData name="Directive" defStyleNum="dsDataType" />
       <itemData name="SubstitutionDefinition" defStyleNum="dsDataType" />
       <itemData name="Role" defStyleNum="dsKeyword" />
+      <itemData name="DefaultRole" defStyleNum="dsDecVal" />
       <itemData name="Code" defStyleNum="dsDataType" />
       <itemData name="Comment" defStyleNum="dsComment" />
     </itemDatas>
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="6" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" version="7" 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>
@@ -45,6 +45,8 @@
 		<item>abstract</item>
 		<item>alignof</item>
 		<item>as</item>
+		<item>async</item>
+		<item>await</item>
 		<item>become</item>
 		<item>box</item>
 		<item>break</item>
@@ -53,6 +55,7 @@
 		<item>crate</item>
 		<item>default</item>
 		<item>do</item>
+		<item>dyn</item>
 		<item>else</item>
 		<item>enum</item>
 		<item>extern</item>
@@ -76,14 +79,12 @@
 		<item>pure</item>
 		<item>ref</item>
 		<item>return</item>
-		<item>Self</item>
-		<item>self</item>
 		<item>sizeof</item>
 		<item>static</item>
 		<item>struct</item>
 		<item>super</item>
 		<item>trait</item>
-		<item>type</item>
+		<item>try</item>
 		<item>typeof</item>
 		<item>union</item>
 		<item>unsafe</item>
@@ -93,52 +94,125 @@
 		<item>where</item>
 		<item>while</item>
 		<item>yield</item>
+		<!-- Also (these keywords are in other lists):
+		     type, Self, self. -->
 	</list>
 	<list name="traits">
-		<!-- FIXME: Some traits may be obsolete and must be removed -->
+		<!-- Core Traits -->
+		<item>Add</item>
+		<item>AddAssign</item>
+		<item>Alloc</item>
+		<item>Any</item>
 		<item>AsMut</item>
 		<item>AsRef</item>
-		<item>AsSlice</item>
-		<item>CharExt</item>
+		<item>Binary</item>
+		<item>BitAnd</item>
+		<item>BitAndAssign</item>
+		<item>BitOr</item>
+		<item>BitOrAssign</item>
+		<item>BitXor</item>
+		<item>BitXorAssign</item>
+		<item>Borrow</item>
+		<item>BorrowMut</item>
+		<item>BuildHasher</item>
 		<item>Clone</item>
+		<item>CoerceUnsized</item>
 		<item>Copy</item>
 		<item>Debug</item>
-		<item>Decodable</item>
 		<item>Default</item>
+		<item>Deref</item>
+		<item>DerefMut</item>
+		<item>DispatchFromDyn</item>
 		<item>Display</item>
+		<item>Div</item>
+		<item>DivAssign</item>
 		<item>DoubleEndedIterator</item>
 		<item>Drop</item>
-		<item>Encodable</item>
 		<item>Eq</item>
 		<item>ExactSizeIterator</item>
 		<item>Extend</item>
+		<item>FixedSizeArray</item>
 		<item>Fn</item>
+		<item>FnBox</item>
 		<item>FnMut</item>
 		<item>FnOnce</item>
 		<item>From</item>
-		<item>FromPrimitive</item>
+		<item>FromIterator</item>
+		<item>FromStr</item>
+		<item>FusedIterator</item>
+		<item>Future</item>
+		<item>Generator</item>
+		<item>GlobalAlloc</item>
 		<item>Hash</item>
+		<item>Hasher</item>
+		<item>Index</item>
+		<item>IndexMut</item>
 		<item>Into</item>
 		<item>IntoIterator</item>
 		<item>Iterator</item>
-		<item>IteratorExt</item>
-		<item>MutPtrExt</item>
+		<item>LowerExp</item>
+		<item>LowerHex</item>
+		<item>Mul</item>
+		<item>MulAssign</item>
+		<item>Neg</item>
+		<item>Not</item>
+		<item>Octal</item>
 		<item>Ord</item>
 		<item>PartialEq</item>
 		<item>PartialOrd</item>
-		<item>PtrExt</item>
-		<item>Rand</item>
-		<item>RustcDecodable</item>
-		<item>RustcEncodable</item>
+		<item>Pointer</item>
+		<item>Product</item>
+		<item>RangeBounds</item>
+		<item>Rem</item>
+		<item>RemAssign</item>
 		<item>Send</item>
+		<item>Shl</item>
+		<item>ShlAssign</item>
+		<item>Shr</item>
+		<item>ShrAssign</item>
 		<item>Sized</item>
+		<item>SliceIndex</item>
+		<item>Step</item>
+		<item>Sub</item>
+		<item>SubAssign</item>
+		<item>Sum</item>
+		<item>Sync</item>
+		<item>TrustedLen</item>
+		<item>Try</item>
+		<item>TryFrom</item>
+		<item>TryInto</item>
+		<item>Unpin</item>
+		<item>Unsize</item>
+		<item>UpperExp</item>
+		<item>UpperHex</item>
+		<item>Write</item>
+		<!-- Standard Library Traits -->
+		<item>AsSlice</item>
+		<item>BufRead</item>
+		<item>CharExt</item>
+		<item>Decodable</item>
+		<item>Encodable</item>
+		<item>Error</item>
+		<item>FromPrimitive</item>
+		<item>IteratorExt</item>
+		<item>MultiSpan</item>
+		<item>MutPtrExt</item>
+		<item>Pattern</item>
+		<item>PtrExt</item>
+		<item>Rand</item>
+		<item>Read</item>
+		<item>RefUnwindSafe</item>
+		<item>Seek</item>
 		<item>SliceConcatExt</item>
 		<item>SliceExt</item>
 		<item>Str</item>
 		<item>StrExt</item>
-		<item>Sync</item>
+		<item>TDynBenchFn</item>
+		<item>Termination</item>
 		<item>ToOwned</item>
+		<item>ToSocketAddrs</item>
 		<item>ToString</item>
+		<item>UnwindSafe</item>
 	</list>
 	<list name="types">
 		<item>bool</item>
@@ -213,6 +287,32 @@
 		<item>Failure</item>
 		<item>Cons</item>
 		<item>Nil</item>
+		<!-- Core Constants -->
+		<!-- char/f32 -->
+		<item>MAX</item>
+		<!-- char -->
+		<item>REPLACEMENT_CHARACTER</item>
+		<item>UNICODE_VERSION</item>
+		<!-- f32 -->
+		<item>DIGITS</item>
+		<item>EPSILON</item>
+		<item>INFINITY</item>
+		<item>MANTISSA_DIGITS</item>
+		<item>MAX_10_EXP</item>
+		<item>MAX_EXP</item>
+		<item>MIN</item>
+		<item>MIN_10_EXP</item>
+		<item>MIN_EXP</item>
+		<item>MIN_POSITIVE</item>
+		<item>NAN</item>
+		<item>NEG_INFINITY</item>
+		<item>RADIX</item>
+		<!-- path -->
+		<item>MAIN_SEPARATOR</item>
+		<!-- sync -->
+		<item>ONCE_INIT</item>
+		<!-- time -->
+		<item>UNIX_EPOCH</item>
 	</list>
 	<list name="cconstants">
 		<item>EXIT_FAILURE</item>
@@ -263,32 +363,43 @@
 			<DetectSpaces/>
 			<keyword String="fn" attribute="Keyword" context="Function"/>
 			<keyword String="type" attribute="Keyword" context="Type"/>
+			<keyword String="self" attribute="Self" context="#stay"/>
 			<keyword String="keywords" attribute="Keyword" context="#stay"/>
 			<keyword String="types" attribute="Type" context="#stay"/>
-			<keyword String="traits" attribute="Trait" context="#stay"/>
 			<keyword String="ctypes" attribute="CType" context="#stay"/>
-			<keyword String="self" attribute="Self" context="#stay"/>
 			<keyword String="constants" attribute="Constant" context="#stay"/>
 			<keyword String="cconstants" attribute="CConstant" context="#stay"/>
-			<Detect2Chars char="/" char1="/" attribute="Comment" context="Commentar 1"/>
-			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
-			<RegExpr String="\b0(x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/> <!-- Hexadecimal, Octal & Binary -->
-			<RegExpr String="\b[0-9][0-9_]*((\.[0-9][0-9_]*)?([eE][\+\-]?[0-9_]+)?(f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/> <!-- Float & Decimal -->
-			<RegExpr String="\b0(b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/> <!-- Invalid number -->
+			<keyword String="traits" attribute="Trait" context="#stay"/>
+			<IncludeRules context="FindComments"/>
+			<!-- Hexadecimal, Octal & Binary -->
+			<RegExpr String="\b0(x[0-9a-fA-F_]+|o[0-7_]+|b[01_]+)&rustIntSuf;\b" attribute="Number" context="#stay"/>
+			<!-- Float & Decimal -->
+			<RegExpr String="\b[0-9][0-9_]*((\.[0-9][0-9_]*)?([eE][\+\-]?[0-9_]+)?(f32|f64)?|&rustIntSuf;)\b" attribute="Number" context="#stay"/>
+			<!-- Invalid number -->
+			<RegExpr String="\b0(b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/>
 			<Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<RegExpr String="&rustIdent;::" attribute="Scope"/>
+			<RegExpr String="::(?=[^\s\:])" attribute="Scope"/> <!-- Points after keyword or group { } -->
 			<RegExpr String="&rustIdent;!" attribute="Macro"/>
 			<RegExpr String="&apos;&rustIdent;(?!&apos;)" attribute="Lifetime"/>
 			<DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" />
 			<DetectChar char="}" attribute="Symbol" context="#stay" endRegion="Brace" />
+			<!-- Raw Strings -->
 			<RegExpr String="b?r(#*)&quot;" attribute="String" context="RawString" dynamic="true"/>
+			<!-- Byte Strings -->
 			<Detect2Chars char="b" char1="&quot;" attribute="String" context="ByteString"/>
+			<!-- Strings -->
 			<DetectChar char="&quot;" attribute="String" context="String"/>
-			<RegExpr String="b&apos;(?=([^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/> <!-- Byte -->
+			<!-- Byte -->
+			<RegExpr String="b&apos;(?=([^&apos;\\]|\\&commonEscape;)&apos;)" attribute="Character" context="Character"/>
+			<!-- Character -->
 			<DetectChar char="&apos;" attribute="Character" context="Character"/>
-			<DetectChar char="[" attribute="Symbol" context="#stay" beginRegion="Bracket" />
-			<DetectChar char="]" attribute="Symbol" context="#stay" endRegion="Bracket" />
+			<DetectChar char="[" attribute="Normal Text" context="#stay" beginRegion="Bracket" />
+			<DetectChar char="]" attribute="Normal Text" context="#stay" endRegion="Bracket" />
+			<!-- Raw identifier prefix -->
+			<RegExpr String="r#(?=&rustIdent;)" attribute="Raw Identifier" context="#stay"/>
+			<AnyChar String=";,.@~:$?=&gt;&lt;&amp;-+|*!/^%" attribute="Symbol" context="#stay"/>
 			<DetectIdentifier/>
 		</context>
 		<context attribute="Attribute" lineEndContext="#stay" name="Attribute">
@@ -297,28 +408,30 @@
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Function">
 			<DetectSpaces/>
-			<DetectChar char="(" attribute="Normal Text" context="#pop"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop"/>
+			<DetectChar char="(" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<IncludeRules context="FindComments"/>
 		</context>
 		<context attribute="Definition" lineEndContext="#stay" name="Type">
 			<DetectSpaces/>
-			<DetectChar char="=" attribute="Normal Text" context="#pop"/>
-			<DetectChar char="&lt;" attribute="Normal Text" context="#pop"/>
-			<DetectChar char=";" attribute="Normal Text" context="#pop"/>
+			<DetectChar char="=" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char="&lt;" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<DetectChar char=";" attribute="Normal Text" context="#pop" lookAhead="true"/>
+			<IncludeRules context="FindComments"/>
 		</context>
-                <!-- Rustc allows strings to extend over multiple lines, and the
-                only thing a backshash at end-of-line does is remove the whitespace. -->
-                <context attribute="String" lineEndContext="#stay" name="String">
-                        <DetectChar char="\" attribute="CharEscape" context="CharEscapeWithUnicode"/>
-                        <DetectChar attribute="String" context="#pop" char="&quot;"/>
-                </context>
+		<!-- Rustc allows strings to extend over multiple lines, and the
+		     only thing a backshash at end-of-line does is remove the whitespace. -->
+		<context attribute="String" lineEndContext="#stay" name="String">
+			<DetectChar char="\" attribute="CharEscape" context="CharEscapeWithUnicode"/>
+			<DetectChar attribute="String" context="#pop" char="&quot;"/>
+		</context>
 		<context attribute="String" lineEndContext="#stay" name="ByteString">
 			<DetectChar char="\" attribute="CharEscape" context="CharEscape"/>
 			<DetectChar attribute="String" context="#pop" char="&quot;"/>
 		</context>
 		<context attribute="String" lineEndContext="#stay" name="RawString" dynamic="true">
 			<RegExpr String="&quot;%1" attribute="String" context="#pop" dynamic="true"/>
-		</context>		
+		</context>
 		<context attribute="Character" lineEndContext="#pop" name="Character" fallthrough="true" fallthroughContext="#pop">
 			<RegExpr String="[^&apos;\\](?=&apos;)" attribute="Character" context="#stay"/>
 			<RegExpr String="\\(&unicodeEscape;|&commonEscape;)(?=&apos;)" attribute="CharEscape" context="#stay"/>
@@ -333,6 +446,10 @@
 			<RegExpr String="&unicodeEscape;" attribute="CharEscape" context="#pop"/>
 			<IncludeRules context="CharEscape"/>
 		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+			<Detect2Chars char="/" char1="/" attribute="Comment" context="Commentar 1"/>
+			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
+		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
 			<IncludeRules context="##Alerts" />
 			<IncludeRules context="##Modelines" />
@@ -365,6 +482,7 @@
 		<itemData name="Symbol"       defStyleNum="dsOperator"/>
 		<itemData name="Attribute"    defStyleNum="dsAttribute"/>
 		<itemData name="Lifetime"     defStyleNum="dsOthers" spellChecking="0"/>
+		<itemData name="Raw Identifier" defStyleNum="dsAnnotation" spellChecking="0"/>
 		<itemData name="Error"        defStyleNum="dsError"/>
 	</itemDatas>
 </highlighting>
@@ -376,4 +494,4 @@
 	<keywords casesensitive="1" />
 </general>
 </language>
-
+<!-- kate: replace-tabs off; -->
diff --git a/xml/typescript.xml b/xml/typescript.xml
--- a/xml/typescript.xml
+++ b/xml/typescript.xml
@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-	<!ENTITY identifier "([a-zA-Z_$]|[^[:ascii:]])([\w$]|[^[:ascii:]])*">
-	<!ENTITY numSuffix  "(?=n?([^\w]|$))">
-	<!ENTITY objectOp   "[\?!]?">
-	<!ENTITY endLine    "\s*($|//|(/\*.*\*/\s*)+$)">
+	<!ENTITY identifier   "(?:[a-zA-Z_$]|[^[:ascii:]])(?:[\w$]|[^[:ascii:]])*">
+	<!ENTITY numSuffix    "(?=n?(?:[^\w]|$))">
+	<!ENTITY objectOp     "[\?!]?">
+	<!ENTITY objectPoint  "\s*&objectOp;\.">
+	<!ENTITY endLine      "\s*(?:$|//|(?:/\*.*\*/\s*)+(?:$|//))">
+	<!ENTITY utilityTypes "\b(?:Partial|Readonly|Record|Pick|Omit|Exclude|Extract|NonNullable|ReturnType|InstanceType|Required|ThisType)(?=\s*&lt;)">
 ]>
 
 <!--
@@ -39,6 +41,10 @@
     incorporate these keywords (for example: "qml.xml").
 
     Change log:
+     * v6 [2019-10-01]: Add "asserts" keyword in type predicates.
+                        Highlight types after the "as" keyword.
+     * v5 [2019-08-30]: Avoid that ?: be used as conditional expressions.
+     * v4 [2019-07-16]: Fixed highlighting of keywords before ":" in conditional expressions.
      * v3 [2019-02-18]: Add support to bigint and the "is" keyword.
                         Fixes keyword delimiters. Don't highlight regex
                         after "]" and ")". Multiple fixes and improvements.
@@ -48,7 +54,7 @@
 -->
 
 <language name="TypeScript"
-          version="3"
+          version="6"
           kateversion="5.53"
           section="Scripts"
           extensions="*.ts"
@@ -73,7 +79,6 @@
 		<include>reserved##JavaScript</include>
 		<item>type</item>
 		<item>arguments</item>
-
 		<!-- Class -->
 		<item>readonly</item>
 		<item>abstract</item>
@@ -1659,9 +1664,9 @@
 			<IncludeRules context="FindStrings" />
 
 			<!-- Abstract -->
-			<RegExpr context="#stay" attribute="Reserved" String="\b(abstract)(?=\s+(class|interface)\b)" />
+			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
 			<!-- New -->
-			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=\s*&objectOp;\.\s*target\b)" />
+			<RegExpr context="NewTarget" attribute="Keyword" String="\bnew(?=&objectPoint;\s*target\b)" />
 			<RegExpr context="MemberObject" attribute="Objects" String="\bnew(?=&objectOp;\.)" />
 			<WordDetect context="#stay" attribute="Keyword" String="new" />
 
@@ -1680,20 +1685,15 @@
 			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
 			<keyword context="#stay" attribute="Reserved" String="reserved" />
 
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
 			<!-- Built-in Classes -->
-			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
-			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
-			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
-			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
-			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
-			<keyword context="#stay" attribute="Built-in Objects" String="class_builtin" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="class_dom" />
-			<keyword context="FindMemberObjectNode" attribute="Built-in Objects" String="class_node" />
-			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+			<IncludeRules context="BuiltInClasses" />
 			<!-- Objects -->
-			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=\s*&objectOp;\.)" />
+			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
 			<DetectChar context="MemberObject" char="." />
 
+			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
 			<!-- Import -->
 			<WordDetect context="Import" attribute="Module" String="import" />
 			<!-- Export types -->
@@ -1711,15 +1711,57 @@
 			<DetectChar context="Object" attribute="Symbol" char="{" beginRegion="Brace" />
 			<DetectChar context="#stay" attribute="Symbol" char="[" beginRegion="List" />
 			<DetectChar context="NoRegExp" attribute="Symbol" char="]" endRegion="List" />
+			<!-- NOTE: Avoid highlighting identifier?: string, -->
+			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=.*&identifier;\s*\:)" />
 			<DetectChar context="#stay" attribute="Symbol" char="?" /> <!-- Fix of conditional expression from the JavaScript highlighting -->
 
-			<!-- Highlight types after ":" and between "<" and ">" -->
+			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
 			<DetectChar context="Types" attribute="Symbol" char=":" />
-			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(&identifier;|[\[\{\(&lt;]).*&gt;)" />
+			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
 
 			<IncludeRules context="Normal##JavaScript" />
 		</context>
 
+		<context name="BuiltInClasses" attribute="Normal Text" lineEndContext="#stay">
+			<WordDetect context="FindMemberObjectMath" attribute="Built-in Objects" String="Math" />
+			<WordDetect context="FindMemberObjectPromise" attribute="Built-in Objects" String="Promise" />
+			<WordDetect context="FindMemberObjectJSON" attribute="Built-in Objects" String="JSON" />
+			<WordDetect context="FindMemberObjectConsole" attribute="Built-in Objects" String="console" />
+			<WordDetect context="FindMemberObjectProcess" attribute="Built-in Objects" String="process" />
+			<keyword context="#stay" attribute="Built-in Objects" String="class_builtin" />
+			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="class_dom" />
+			<keyword context="FindMemberObjectNode" attribute="Built-in Objects" String="class_node" />
+			<keyword context="FindMemberObjectDOM" attribute="Built-in Objects" String="dom_variable" />
+		</context>
+
+		<!-- Highlight keywords before ":" in conditional expressions. -->
+		<context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
+			<DetectChar context="#pop" attribute="Symbol" char=":" />
+			<DetectChar context="#stay" attribute="Symbol" char="?" />
+
+			<!-- Keywords -->
+			<WordDetect context="#stay" attribute="Reserved" String="type" />
+			<keyword context="#stay" attribute="Keyword" String="keywords" /> <!-- NoRegExp? -->
+			<keyword context="#stay" attribute="Reserved" String="reserved" />
+			<!-- Utility Types -->
+			<RegExpr context="#stay" attribute="Built-in Objects" String="&utilityTypes;" />
+			<!-- Built-in Classes -->
+			<IncludeRules context="BuiltInClasses" />
+			<!-- Import -->
+			<WordDetect context="#stay" attribute="Module" String="import" />
+			<!-- Export types -->
+			<keyword context="#stay" attribute="Module" String="control_export_types" />
+			<!-- Keywords -->
+			<keyword context="#stay" attribute="Module" String="module" />
+			<keyword context="NoRegExp" attribute="Keyword" String="primitives" />
+			<keyword context="#stay" attribute="Keyword" String="types_operator_expression" />
+
+			<!-- NOTE: The identifiers before ":" should be highlighted as "Normal Text".
+			     However, currently, the "Parameter" attribute is equivalent to "Normal Text". -->
+			<!-- <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*&objectOp;:)" /> -->
+			<IncludeRules context="Normal" />
+		</context>
+
 		<context name="Object" attribute="Normal Text" lineEndContext="#stay">
 			<DetectChar context="#pop" attribute="Symbol" char="}" endRegion="Brace" />
 			<keyword context="NoRegExp" attribute="Keyword" String="keywords" />
@@ -1739,17 +1781,17 @@
 		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
 			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(\b\d[\d_]*\.?|(\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(\.\d[\d_]*|\b\d[\d_]*\.(\d[\d_]*)?)&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;" />
+			<RegExpr context="NoRegExp" attribute="Float" String="(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
 			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
 			<!-- Avoid highlighting numbers of JavaScript -->
-			<RegExpr context="NoRegExp" String="\b([1-9]|0\d)\d*" />
+			<RegExpr context="NoRegExp" String="\b(?:[1-9]|0\d)\d*" />
 		</context>
 
 		<context name="FindFunctionName" attribute="Normal Text" lineEndContext="#stay">
 			<!-- function(...) and function<...>(...) -->
-			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*(&lt;((\{([^\{\}]|(\{[^\{\}]*\}))*\})|(\(([^\(\)]|(\([^\(\)]*\)))*\))|(\[([^\[\]]|(\[[^\[\]]*\]))*\])|('(\\.|[^'])*')|(&quot;(\\.|[^&quot;])*&quot;)|(`(\\.|[^`])*`)|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()" />
+			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()" />
 		</context>
 
 		<context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
@@ -1766,7 +1808,7 @@
 			<IncludeRules context="Normal" />
 		</context>
 
-		<!-- Highlight types after the "type" keyword -->
+		<!-- Type Declaration: Highlight types after the "type" keyword -->
 
 		<context name="TypeDeclaration" attribute="Normal Text" lineEndContext="#stay">
 			<DetectSpaces />
@@ -1776,7 +1818,7 @@
 			<IncludeRules context="Normal" />
 		</context>
 
-		<!-- Highlight types after ":" -->
+		<!-- Type Parameter: Highlight types after ":" -->
 
 		<context name="Types" attribute="Normal Text" lineEndContext="#pop">
 			<IncludeRules context="FixPopLineEndContext" />
@@ -1810,14 +1852,23 @@
 			<RegExpr context="#pop" String="\S" firstNonSpace="true" lookAhead="true" />
 		</context>
 
+		<!-- Default: Type Parameter, Type Declaration, Angle Brackets -->
+
 		<context name="DefaultTypes" attribute="Normal Text" lineEndContext="#stay">
+			<!-- Types Keywords -->
 			<keyword context="NoRegExpSameLine" attribute="Types" String="types" />
+			<!-- Assertions -->
+			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="asserts" />
 			<!-- Type Guards -->
 			<WordDetect context="NoRegExpSameLine" attribute="Keyword" String="is" />
 
 			<!-- FIXME: For a strange reason, the keywords before "}" are not highlighted.
 			     This rule fixes it provisionally. -->
-			<RegExpr context="#stay" attribute="Types" String="\b(string|number|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" />
+			<RegExpr context="#stay" attribute="Types" String="\b(?:string|number|boolean|symbol|any|void|never|unknown|undefined|null|object)(?=\})" />
+
+			<!-- Don't start this context again -->
+			<AnyChar context="#stay" attribute="Symbol" String="?:" />
+			<WordDetect context="#stay" attribute="Module" String="as" />
 		</context>
 		<context name="TypesFindBrackets" attribute="Normal Text" lineEndContext="#stay">
 			<DetectChar context="TypesSquareBracket" attribute="Symbol" char="[" beginRegion="List" />
@@ -1881,7 +1932,7 @@
 			<IncludeRules context="Normal" />
 		</context>
 		<context name="ImportRequireKey" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-			<RegExpr context="#stay" attribute="Keyword" String="\s*\b(require)\s*(?=\()" />
+			<RegExpr context="#stay" attribute="Keyword" String="\s*require\s*(?=\()" />
 			<DetectChar context="ImportRequire" attribute="Symbol" char="(" beginRegion="import" />
 		</context>
 		<context name="ImportRequire" attribute="Normal Text" lineEndContext="#stay">
@@ -1906,7 +1957,7 @@
 			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="." />
 			<Detect2Chars context="#stay" attribute="Symbol" char="!" char1="." />
 
-			<RegExpr context="#stay" attribute="Objects" String="&identifier;(?=\s*&objectOp;\.)" />
+			<RegExpr context="#stay" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
 			<IncludeRules context="FindFunctionName" /> <!-- #pop -->
 			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
 			<IncludeRules context="NoRegExp" />
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="6" kateversion="3.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="7" kateversion="3.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>
@@ -220,7 +220,7 @@
 
         <RegExpr attribute="Control" context="architecture_main" insensitive="true" dynamic="true" lookAhead="true"
                  String="&bos;architecture\s+(&varname;)&eos;"/>
-        <StringDetect attribute="Control" context="entity"
+        <StringDetect attribute="Control" context="entity" insensitive="true"
                  String="entity"/>
         <RegExpr attribute="Control" context="package" insensitive="true" lookAhead="true" dynamic="true" beginRegion="PackageRegion1"
                  String="&bos;package\s+(&varname;)\s+is&eos;"/>
@@ -414,7 +414,7 @@
         <IncludeRules context="preDetection"/>
         <RegExpr attribute="Reference"   context="#stay" String="&bos;%4&eos;" dynamic="true"/>
         <RegExpr attribute="Name"        context="#stay" String="&bos;%3&eos;" dynamic="true"/>
-        <RegExpr attribute="Keyword"     context="instanceMap" beginRegion="InstanceMapRegion"
+        <RegExpr attribute="Keyword"     context="instanceMap" insensitive="true" beginRegion="InstanceMapRegion"
                  String="&bos;(port|generic)\s+map\s*\(" />
         <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="InstanceRegion1"/>
         <IncludeRules context="generalDetection"/>
@@ -598,7 +598,9 @@
       </context>
 
 <!-- other environments -->
-      <context name="comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts"/>
+      </context>
 
       <context name="string" attribute="Vector" lineEndContext="#stay">
         <DetectChar attribute="Vector" context="#pop" char="&quot;"/>
