diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,14 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.13.4.1
+
+  * Update syntax definitions: ada, bash, cmake, css, html, isocpp, java,
+    javascript, kotlin, latex, makefile, markdown, php, python, qml, r,
+    sass, scss, typescript, zsh.
+
+  * Don't require word boundary at end of Int, Float, HlCHex, HlCOct (#170).
+    KDE does not.  This fixes things like `7L` in R.
+
 ## 0.13.4
 
   * Add `dosbat` syntax (MS DOS batch file) (#169).
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.13.4
+version:             0.13.4.1
 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
@@ -666,8 +666,7 @@
 pDec :: A.Parser ()
 pDec = do
   mbMinus
-  _ <- A.takeWhile1 (A.inClass "0-9")
-  guardWordBoundary
+  void $ A.takeWhile1 (A.inClass "0-9")
 
 parseOct :: ByteString -> TokenizerM Text
 parseOct inp = do
@@ -682,7 +681,7 @@
   _ <- A.char '0'
   _ <- A.satisfy (A.inClass "Oo")
   _ <- A.takeWhile1 (A.inClass "0-7")
-  guardWordBoundary
+  return ()
 
 parseHex :: ByteString -> TokenizerM Text
 parseHex inp = do
@@ -697,14 +696,7 @@
   _ <- A.char '0'
   _ <- A.satisfy (A.inClass "Xx")
   _ <- A.takeWhile1 (A.inClass "0-9a-fA-F")
-  guardWordBoundary
-
-guardWordBoundary :: A.Parser ()
-guardWordBoundary = do
-  mbw <- A.peekChar
-  case mbw of
-       Just c  ->  guard $ isWordBoundary '0' c
-       Nothing -> return ()
+  return ()
 
 mbMinus :: A.Parser ()
 mbMinus = (() <$ A.char '-') <|> return ()
diff --git a/test/expected/abc.cpp.native b/test/expected/abc.cpp.native
--- a/test/expected/abc.cpp.native
+++ b/test/expected/abc.cpp.native
@@ -405,8 +405,8 @@
   ]
 , [ ( NormalTok , "        " )
   , ( BuiltInTok , "std::" )
-  , ( NormalTok , "cout" )
-  , ( OperatorTok , " <<" )
+  , ( NormalTok , "cout " )
+  , ( OperatorTok , "<<" )
   , ( NormalTok , " w " )
   , ( OperatorTok , "<<" )
   , ( NormalTok , " " )
@@ -415,8 +415,8 @@
   , ( OperatorTok , "<<" )
   , ( NormalTok , " " )
   , ( BuiltInTok , "std::" )
-  , ( NormalTok , "boolalpha" )
-  , ( OperatorTok , " <<" )
+  , ( NormalTok , "boolalpha " )
+  , ( OperatorTok , "<<" )
   , ( NormalTok , " can_make_word" )
   , ( OperatorTok , "(" )
   , ( NormalTok , "w" )
diff --git a/test/expected/abc.kotlin.native b/test/expected/abc.kotlin.native
--- a/test/expected/abc.kotlin.native
+++ b/test/expected/abc.kotlin.native
@@ -87,12 +87,12 @@
   , ( OperatorTok , ")" )
   ]
 , []
-, [ ( NormalTok , "/*" ) ]
-, [ ( NormalTok
+, [ ( CommentTok , "/*" ) ]
+, [ ( CommentTok
     , " *  Not the most elegant way but interesting from an highlighting perspective ;)"
     )
   ]
-, [ ( NormalTok , " */" ) ]
+, [ ( CommentTok , " */" ) ]
 , [ ( KeywordTok , "public" )
   , ( NormalTok , " " )
   , ( KeywordTok , "class" )
diff --git a/test/expected/abc.r.native b/test/expected/abc.r.native
--- a/test/expected/abc.r.native
+++ b/test/expected/abc.r.native
@@ -43,7 +43,10 @@
   , ( NormalTok , " char, " )
   , ( AttributeTok , "arr.ind=" )
   , ( ConstantTok , "TRUE" )
-  , ( NormalTok , ")[, 1L])))" )
+  , ( NormalTok , ")[, " )
+  , ( DecValTok , "1" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , "])))" )
   ]
 , [ ( NormalTok , "    charBlocks " )
   , ( OtherTok , "<-" )
@@ -67,9 +70,15 @@
   , ( ControlFlowTok , "if" )
   , ( NormalTok , " (" )
   , ( FunctionTok , "dim" )
-  , ( NormalTok , "(charBlocks)[1L] " )
+  , ( NormalTok , "(charBlocks)[" )
+  , ( DecValTok , "1" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , "] " )
   , ( SpecialCharTok , ">" )
-  , ( NormalTok , " 0L) {" )
+  , ( NormalTok , " " )
+  , ( DecValTok , "0" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , ") {" )
   ]
 , [ ( NormalTok , "      " )
   , ( FunctionTok , "t" )
diff --git a/test/expected/hk91.html.native b/test/expected/hk91.html.native
--- a/test/expected/hk91.html.native
+++ b/test/expected/hk91.html.native
@@ -2,14 +2,21 @@
   , ( NormalTok , "HTML" )
   , ( DataTypeTok , ">" )
   ]
-, [ ( KeywordTok , "<html>" ) ]
-, [ ( KeywordTok , "<head>" ) ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "html" )
+  , ( DataTypeTok , ">" )
+  ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "head" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<script" )
+  , ( DataTypeTok , "<" )
+  , ( KeywordTok , "script" )
   , ( OtherTok , " type=" )
   , ( StringTok , "\"text/javascript\"" )
-  , ( KeywordTok , ">" )
+  , ( DataTypeTok , ">" )
   ]
 , [ ( NormalTok , "    " )
   , ( KeywordTok , "function" )
@@ -63,9 +70,17 @@
   , ( OperatorTok , ";" )
   ]
 , [ ( NormalTok , "    }" ) ]
-, [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "</" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( NormalTok , "  " ) , ( KeywordTok , "<script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "<" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , [ ( NormalTok , "    " )
   , ( FunctionTok , "$" )
   , ( NormalTok , "(" )
@@ -83,13 +98,29 @@
   , ( OperatorTok , ";" )
   ]
 , [ ( NormalTok , "    })" ) , ( OperatorTok , ";" ) ]
-, [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "</" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</head>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "head" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "<body>" ) ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "body" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</body>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "body" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</html>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "html" )
+  , ( DataTypeTok , ">" )
+  ]
 ]
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -178,7 +178,8 @@
            ] @=? tokenize defConfig c "1111111111111111111111"
 
       , testCase "Chinese characters in HTML (#110)" $ Right
-          [ [ ( NormalTok , "\35797\65306" ) , ( KeywordTok , "<a>" ) ]
+          [ [ ( NormalTok , "\35797\65306" ) , ( DataTypeTok , "<" ) ,
+              ( KeywordTok , "a" ) , ( DataTypeTok , ">" ) ]
           ] @=? tokenize defConfig html "试：<a>"
 
       , testCase "Bash closing brace (#119)" $ Right
diff --git a/xml/ada.xml b/xml/ada.xml
--- a/xml/ada.xml
+++ b/xml/ada.xml
@@ -1,13 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language>
+<!DOCTYPE language
+[
+  <!ENTITY b2 "[0-1]++(_?[0-1])*+">
+  <!ENTITY b3 "[0-2]++(_?[0-2])*+">
+  <!ENTITY b4 "[0-3]++(_?[0-3])*+">
+  <!ENTITY b5 "[0-4]++(_?[0-4])*+">
+  <!ENTITY b6 "[0-5]++(_?[0-5])*+">
+  <!ENTITY b7 "[0-6]++(_?[0-6])*+">
+  <!ENTITY b8 "[0-7]++(_?[0-7])*+">
+  <!ENTITY b9 "[0-8]++(_?[0-8])*+">
+  <!ENTITY b10 "[0-9]++(_?[0-9])*+">
+  <!ENTITY b11 "[0-9a-a]++(_?[0-9]a-a)*+">
+  <!ENTITY b12 "[0-9a-b]++(_?[0-9]a-b)*+">
+  <!ENTITY b13 "[0-9a-c]++(_?[0-9]a-c)*+">
+  <!ENTITY b14 "[0-9a-d]++(_?[0-9]a-d)*+">
+  <!ENTITY b15 "[0-9a-e]++(_?[0-9]a-e)*+">
+  <!ENTITY b16 "[0-9a-f]++(_?[0-9]a-f)*+">
+]>
 <language name="Ada"
-          version="6"
-          kateversion="5.0"
+          version="7"
+          kateversion="5.79"
           section="Sources"
           extensions="*.adb;*.ads;*.ada;*.a"
           indenter="ada"
           mimetype="text/x-adasrc">
   <highlighting>
+    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-P.html -->
+
+    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-2-9.html -->
     <list name="keywords">
       <item>abort</item>
       <item>abs</item>
@@ -21,6 +41,7 @@
       <item>at</item>
       <item>begin</item>
       <item>body</item>
+      <item>case</item>
       <item>constant</item>
       <item>declare</item>
       <item>delay</item>
@@ -37,10 +58,12 @@
       <item>function</item>
       <item>generic</item>
       <item>goto</item>
+      <item>if</item>
       <item>in</item>
       <item>interface</item>
       <item>is</item>
       <item>limited</item>
+      <item>loop</item>
       <item>mod</item>
       <item>new</item>
       <item>not</item>
@@ -57,14 +80,17 @@
       <item>protected</item>
       <item>raise</item>
       <item>range</item>
-      <item>rem</item>
       <item>record</item>
+      <item>rem</item>
       <item>renames</item>
       <item>requeue</item>
       <item>return</item>
       <item>reverse</item>
+      <item>select</item>
       <item>separate</item>
+      <item>some</item>
       <item>subtype</item>
+      <item>synchronized</item>
       <item>tagged</item>
       <item>task</item>
       <item>terminate</item>
@@ -77,6 +103,7 @@
       <item>with</item>
       <item>xor</item>
     </list>
+
     <list name="pragmas">
       <item>all_calls_remote</item>
       <item>assert</item>
@@ -128,6 +155,7 @@
       <item>volatile</item>
       <item>volatile_components</item>
     </list>
+
     <list name="types">
       <item>boolean</item>
       <item>character</item>
@@ -145,38 +173,151 @@
       <item>wide_wide_character</item>
       <item>wide_wide_string</item>
     </list>
+
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Default">
-        <RegExpr attribute="Keyword" context="#stay" String="\brecord\b"       insensitive="true" beginRegion="RecordRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bcase\b"         insensitive="true" beginRegion="CaseRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bif\b"           insensitive="true" beginRegion="IfRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bloop\b"         insensitive="true" beginRegion="LoopRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bselect\b"       insensitive="true" beginRegion="SelectRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bbegin\b"        insensitive="true" beginRegion="BeginRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\b"          insensitive="true"   endRegion="BeginRegion"/>
+        <DetectSpaces />
+
         <StringDetect attribute="Region Marker" context="Region Marker" String="--  BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="--  END" endRegion="RegionMarker" firstNonSpace="true" />
+        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
+        <AnyChar context="Numeric" String="0123456789" lookAhead="1"/>
+        <DetectChar context="String" char="&quot;" lookAhead="1"/>
+
+        <WordDetect attribute="Keyword" context="#stay" String="record" insensitive="true" beginRegion="RecordRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="case"   insensitive="true" beginRegion="CaseRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="if"     insensitive="true" beginRegion="IfRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="loop"   insensitive="true" beginRegion="LoopRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="select" insensitive="true" beginRegion="SelectRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="begin"  insensitive="true" beginRegion="BeginRegion"/>
+
+        <WordDetect attribute="Keyword" context="End"   String="end"    insensitive="true" lookAhead="1"/>
+        <WordDetect attribute="Keyword" context="Null"  String="null"   insensitive="true"/>
+
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Pragmas" context="#stay" String="pragmas" />
         <keyword attribute="Data Type" context="#stay" String="types" />
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Decimal" context="#stay"/>
+
+        <DetectIdentifier />
+
         <RegExpr attribute="Char" context="#stay" String="'.'"/>
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
       </context>
-      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker"/>
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+
+      <context attribute="Keyword" lineEndContext="#pop" name="End">
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
+        <DetectIdentifier attribute="Keyword" context="#pop" endRegion="BeginRegion"/>
       </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Null" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect attribute="Keyword" context="#pop" String="record" insensitive="true"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Numeric">
+        <RegExpr attribute="Float" context="NumericExp" String="\b&b10;\.&b10;"/>
+        <RegExpr attribute="Decimal" context="NumericExp" String="\b&b10;(?!#)"/>
+        <WordDetect attribute="Base" context="Base2" String="2#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base3" String="3#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base4" String="4#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base5" String="5#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base6" String="6#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base7" String="7#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base8" String="8#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base9" String="9#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base10" String="10#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base11" String="11#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base12" String="12#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base13" String="13#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base14" String="14#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base15" String="15#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base16" String="16#" additionalDeliminator="#"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NumericExp" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Exponent" context="#pop#pop" String="(?:[eE][-+]?&b10;)"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base2" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b2;\.&b2;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b2;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base3" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b3;\.&b3;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b3;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base4" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b4;\.&b4;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b4;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base5" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b5;\.&b5;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b5;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base6" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b6;\.&b6;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b6;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base7" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b7;\.&b7;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b7;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base8" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b8;\.&b8;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b8;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base9" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b9;\.&b9;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b9;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base10" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b10;\.&b10;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b10;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base11" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b11;\.&b11;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b11;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base12" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b12;\.&b12;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b12;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base13" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b13;\.&b13;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b13;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base14" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b14;\.&b14;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b14;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base15" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b15;\.&b15;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b15;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base16" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b16;\.&b16;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b16;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BaseExp" fallthroughContext="#pop#pop#pop">
+        <DetectChar attribute="Base" context="#pop#pop!NumericExp" char="#"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String" fallthroughContext="PartialString">
+        <RangeDetect attribute="String" context="#pop" char="&quot;" char1="&quot;"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop#pop" name="PartialString">
+      </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces attribute="Comment"/>
         <IncludeRules context="##Comments" />
+        <DetectIdentifier attribute="Comment"/>
       </context>
     </contexts>
     <itemDatas>
@@ -186,6 +327,8 @@
       <itemData name="Data Type"   defStyleNum="dsDataType"/>
       <itemData name="Decimal"     defStyleNum="dsDecVal" />
       <itemData name="Float"       defStyleNum="dsFloat" />
+      <itemData name="Base"        defStyleNum="dsBaseN" />
+      <itemData name="Exponent"    defStyleNum="dsDecVal" />
       <itemData name="Char"        defStyleNum="dsChar" />
       <itemData name="String"      defStyleNum="dsString" />
       <itemData name="Comment"     defStyleNum="dsComment" />
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -66,7 +66,7 @@
 
 <language
     name="Bash"
-    version="47"
+    version="49"
     kateversion="5.79"
     section="Scripts"
     extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD"
@@ -533,7 +533,7 @@
 
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
-          <IncludeRules context="BashOneLine"/>
+        <IncludeRules context="BashOneLine"/>
       </context>
 
       <!-- used by other syntaxes -->
@@ -1046,8 +1046,9 @@
         <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
-        <IncludeRules context="Start"/>
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">
+        <AnyChar context="BashOneLine" String="&amp;|;`" lookAhead="1"/>
+        <IncludeRules context="CommandArgs"/>
       </context>
 
       <!-- Highlight the builtin `:` (true) and the followed redirection, then fall into `HereDocMLComment` -->
@@ -1073,7 +1074,7 @@
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocQ" />
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="true" fallthroughContext="HereDocText">
@@ -1081,27 +1082,32 @@
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocIQ" />
       </context>
 
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">
+        <!-- Only if the redirect is before the command, but as this is too complicated,
+             check if the redirect is at the beginning of the line. -->
+        <StringDetect attribute="Redirection" context="BashOneLine" String="%1" dynamic="true" firstNonSpace="1"/>
         <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="true" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocIQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
@@ -1357,7 +1363,7 @@
       <!-- called as soon as ${xxx@ is encoutered -->
       <context attribute="Normal Text" lineEndContext="#stay" name="VarTransformation" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <AnyChar attribute="Parameter Expansion" context="#stay" String="QEPAa"/>
+        <AnyChar attribute="Parameter Expansion" context="#stay" String="UuLQEPAKa"/>
       </context>
 
       <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -25,8 +25,8 @@
 
 <language
     name="CMake"
-    version="46"
-    kateversion="5.0"
+    version="47"
+    kateversion="5.62"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
     style="CMake"
@@ -4083,12 +4083,10 @@
       <item>UPPER_CASE</item>
       <item>MAKE_C_IDENTIFIER</item>
       <item>IN_LIST</item>
-      <item>LIST</item>
       <item>JOIN</item>
       <item>REMOVE_DUPLICATES</item>
       <item>FILTER</item>
       <item>PATH_EQUAL</item>
-      <item>PATH</item>
       <item>SHELL_PATH</item>
       <item>CONFIG</item>
       <item>OUTPUT_CONFIG</item>
@@ -4160,6 +4158,56 @@
       <item>COMMA</item>
       <item>SEMICOLON</item>
     </list>
+    <list name="genex-LIST-subcommands">
+      <item>LENGTH</item>
+      <item>GET</item>
+      <item>SUBLIST</item>
+      <item>FIND</item>
+      <item>JOIN</item>
+      <item>APPEND</item>
+      <item>PREPEND</item>
+      <item>INSERT</item>
+      <item>POP_BACK</item>
+      <item>POP_FRONT</item>
+      <item>REMOVE_ITEM</item>
+      <item>REMOVE_AT</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>FILTER</item>
+      <item>TRANSFORM</item>
+      <item>FRANSFORM</item>
+      <item>REVERSE</item>
+      <item>SORT</item>
+    </list>
+    <list name="genex-PATH-subcommands">
+      <item>HAS_ROOT_NAME</item>
+      <item>HAS_ROOT_DIRECTORY</item>
+      <item>HAS_ROOT_PATH</item>
+      <item>HAS_FILENAME</item>
+      <item>HAS_EXTENSION</item>
+      <item>HAS_STEM</item>
+      <item>HAS_RELATIVE_PART</item>
+      <item>HAS_PARENT_PATH</item>
+      <item>IS_ABSOLUTE</item>
+      <item>IS_RELATIVE</item>
+      <item>IS_PREFIX</item>
+      <item>GET_ROOT_NAME</item>
+      <item>GET_ROOT_DIRECTORY</item>
+      <item>GET_ROOT_PATH</item>
+      <item>GET_FILENAME</item>
+      <item>GET_EXTENSION</item>
+      <item>GET_STEM</item>
+      <item>GET_RELATIVE_PART</item>
+      <item>GET_PARENT_PATH</item>
+      <item>CMAKE_PATH</item>
+      <item>APPEND</item>
+      <item>REMOVE_FILENAME</item>
+      <item>REPLACE_FILENAME</item>
+      <item>REMOVE_EXTENSION</item>
+      <item>REPLACE_EXTENSION</item>
+      <item>NORMAL_PATH</item>
+      <item>RELATIVE_PATH</item>
+      <item>ABSOLUTE_PATH</item>
+    </list>
 
     <list name="standard-modules">
       <item>AndroidTestUtilities</item>
@@ -6650,10 +6698,22 @@
         <DetectChar attribute="Comment" context="Comment" char="#"/>
         <DetectChar attribute="Generator Expression" context="#pop" char="&gt;"/>
         <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false"/>
+        <WordDetect String="LIST" attribute="Generator Expression Keyword" context="genex_LIST_ctx"/>
+        <WordDetect String="PATH" attribute="Generator Expression Keyword" context="genex_PATH_ctx"/>
         <IncludeRules context="Detect Aliased Targets"/>
         <IncludeRules context="Detect Variable Substitutions"/>
         <DetectIdentifier/>
       </context>
+      <context attribute="Generator Expression" lineEndContext="#stay" name="genex_LIST_ctx" fallthroughContext="#pop">
+        <DetectChar char=":" context="#stay"/>
+        <DetectSpaces/>
+        <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-LIST-subcommands" insensitive="false"/>
+      </context>
+      <context attribute="Generator Expression" lineEndContext="#stay" name="genex_PATH_ctx" fallthroughContext="#pop">
+        <DetectChar char=":" context="#stay"/>
+        <DetectSpaces/>
+        <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-PATH-subcommands" insensitive="false"/>
+      </context>
 
     </contexts>
 
@@ -6683,6 +6743,7 @@
       <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 Sub-Command" defStyleNum="dsKeyword" color="#c05050" selColor="#c05050" spellChecking="false"/>
       <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false"/>
       <itemData name="Standard Module" defStyleNum="dsImport" spellChecking="false"/>
       <itemData name="Deprecated Module" defStyleNum="dsImport" spellChecking="false"/>
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -4,6 +4,7 @@
   <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
   <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
   <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
+  <!ENTITY ident   "[-]?(&nmstart;)(&nmchar;)*">
 ]>
 
 <!--
@@ -38,7 +39,7 @@
 
 -->
 
-<language name="CSS" version="14" kateversion="5.53" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="CSS" version="15" kateversion="5.53" 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>
@@ -779,7 +780,6 @@
             <item>justify</item>
             <item>konq-center</item>
             <item>disc</item>
-            <item>circle</item>
             <item>square</item>
             <item>box</item>
             <item>decimal</item>
@@ -904,6 +904,73 @@
             <item>contain</item>
             <item>cover</item>
 
+            <!-- cursor -->
+            <item>pointer</item>
+            <item>default</item>
+            <item>context-menu</item>
+            <item>help</item>
+            <item>pointer</item>
+            <item>progress</item>
+            <item>wait</item>
+            <item>cell</item>
+            <item>crosshair</item>
+            <item>text</item>
+            <item>vertical-text</item>
+            <item>alias</item>
+            <item>copy</item>
+            <item>move</item>
+            <item>no-drop</item>
+            <item>not-allowed</item>
+            <item>grab</item>
+            <item>grabbing</item>
+            <item>all-scroll</item>
+            <item>col-resize</item>
+            <item>row-resize</item>
+            <item>n-resize</item>
+            <item>e-resize</item>
+            <item>s-resize</item>
+            <item>w-resize</item>
+            <item>ne-resize</item>
+            <item>nw-resize</item>
+            <item>se-resize</item>
+            <item>sw-resize</item>
+            <item>ew-resize</item>
+            <item>ns-resize</item>
+            <item>nesw-resize</item>
+            <item>nwse-resize</item>
+            <item>zoom-in</item>
+            <item>zoom-out</item>
+
+            <!-- contain -->
+            <item>none</item>
+            <item>strict</item>
+            <item>content</item>
+            <item>size</item>
+            <item>inline-size</item>
+            <item>layout</item>
+            <item>style</item>
+            <item>paint</item>
+
+            <!-- scroll-snap-type -->
+            <item>mandatory</item>
+            <item>proximity</item>
+
+            <!-- text-orientation -->
+            <item>mixed</item>
+            <item>upright</item>
+            <item>sideways</item>
+            <item>sideways-right</item>
+            <item>use-glyph-orientation</item>
+
+            <!-- shape-outside, clip-path, text-emphasis -->
+            <item>filled</item>
+            <item>open</item>
+            <item>dot</item>
+            <item>circle</item>
+            <item>double-circle</item>
+            <item>triangle</item>
+            <item>sesame</item>
+
             <!-- display -->
             <!-- https://developer.mozilla.org/fr/docs/Web/CSS/display -->
             <item>block</item>
@@ -1195,6 +1262,7 @@
             <item>oklab</item>
             <item>oklch</item>
             <item>color</item>
+            <item>color-mix</item>
 
             <!-- CSS4 -->
             <item>toggle</item>
@@ -1390,6 +1458,7 @@
             <item>lang</item>
             <item>last-child</item>
             <item>last-of-type</item>
+            <item>left</item>
             <item>link</item>
             <item>not</item>
             <item>nth-child</item>
@@ -1404,6 +1473,7 @@
             <item>read-only</item>
             <item>read-write</item>
             <item>required</item>
+            <item>right</item>
             <item>root</item>
             <item>scope</item>
             <item>target</item>
@@ -1522,9 +1592,9 @@
                 <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
                 <DetectChar attribute="Separator Symbol" context="#stay" char="," />
                 <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Id" context="#stay" String="#&ident;" />
                 <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
+                <RegExpr attribute="Selector Tag" context="#stay" String="&ident;" />
             </context>
 
             <!-- find functions // rgba(255,255,255,0.75) -->
@@ -1540,7 +1610,7 @@
                 <keyword attribute="Color" context="#stay" String="colors" />
                 <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;)*" />
+                <RegExpr attribute="Normal Text" context="#stay" String="&ident;" />
             </context>
 
             <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
@@ -1549,8 +1619,8 @@
 
             <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
                 <!-- https://drafts.csswg.org/css-values-4/#lengths -->
-                <!-- https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units -->
-                <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|fr)\b)(?![-+])" />
+                <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units -->
+                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)(?![-+])" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
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="15" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="16" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
@@ -18,55 +18,72 @@
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
+    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype" />
+    <IncludeRules context="FindElements" />
     <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>
 
+  <context name="FindElements" attribute="Other Text" lineEndContext="#pop">
+    <RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))" />
+    <RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="&lt;/(?=(&name;))" />
+  </context>
+
+  <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop">
+    <IncludeRules context="FindHTMLTags" />
+    <IncludeRules context="FindSpecialHTMLTags" />
+    <StringDetect attribute="Element" context="#pop!El Open" String="%1" dynamic="true" />
+  </context>
+
+  <context name="ElementTagNameClose" attribute="Other Text" lineEndContext="#pop">
+    <IncludeRules context="FindHTMLTagsClose" />
+    <StringDetect attribute="Element" context="#pop!El Close" String="%1" dynamic="true" />
+  </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" />
+    <WordDetect attribute="Element" context="#pop!CSS" String="style" insensitive="true" beginRegion="style" />
+    <WordDetect attribute="Element" context="#pop!JS" String="script" insensitive="true" beginRegion="script" />
   </context>
 
   <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
-    <WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;ul" insensitive="true" beginRegion="ul" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;ol" insensitive="true" beginRegion="ol" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;dl" insensitive="true" beginRegion="dl" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;article" insensitive="true" beginRegion="article" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;aside" insensitive="true" beginRegion="aside" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;details" insensitive="true" beginRegion="details" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;figure" insensitive="true" beginRegion="figure" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;footer" insensitive="true" beginRegion="footer" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;header" insensitive="true" beginRegion="header" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;main" insensitive="true" beginRegion="main" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;nav" insensitive="true" beginRegion="nav" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;section" insensitive="true" beginRegion="section" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/ul" insensitive="true" endRegion="ul" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/ol" insensitive="true" endRegion="ol" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/dl" insensitive="true" endRegion="dl" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/article" insensitive="true" endRegion="article" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/aside" insensitive="true" endRegion="aside" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/details" insensitive="true" endRegion="details" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/figure" insensitive="true" endRegion="figure" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/footer" insensitive="true" endRegion="footer" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/header" insensitive="true" endRegion="header" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/main" insensitive="true" endRegion="main" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/nav" insensitive="true" endRegion="nav" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/section" insensitive="true" endRegion="section" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="pre" insensitive="true" beginRegion="pre" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="div" insensitive="true" beginRegion="div" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="table" insensitive="true" beginRegion="table" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="ul" insensitive="true" beginRegion="ul" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="ol" insensitive="true" beginRegion="ol" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="dl" insensitive="true" beginRegion="dl" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="article" insensitive="true" beginRegion="article" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="aside" insensitive="true" beginRegion="aside" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="details" insensitive="true" beginRegion="details" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="figure" insensitive="true" beginRegion="figure" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="footer" insensitive="true" beginRegion="footer" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="header" insensitive="true" beginRegion="header" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="main" insensitive="true" beginRegion="main" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="nav" insensitive="true" beginRegion="nav" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="section" insensitive="true" beginRegion="section" />
   </context>
 
+  <context name="FindHTMLTagsClose" attribute="Normal Text" lineEndContext="#stay">
+    <WordDetect attribute="Element" context="#pop!El Close" String="pre" insensitive="true" endRegion="pre" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="div" insensitive="true" endRegion="div" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="table" insensitive="true" endRegion="table" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="ul" insensitive="true" endRegion="ul" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="ol" insensitive="true" endRegion="ol" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="dl" insensitive="true" endRegion="dl" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="article" insensitive="true" endRegion="article" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="aside" insensitive="true" endRegion="aside" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="details" insensitive="true" endRegion="details" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="figure" insensitive="true" endRegion="figure" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="footer" insensitive="true" endRegion="footer" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="header" insensitive="true" endRegion="header" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="main" insensitive="true" endRegion="main" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="nav" insensitive="true" endRegion="nav" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="section" insensitive="true" endRegion="section" />
+  </context>
+
   <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
     <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
@@ -80,7 +97,7 @@
 
   <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="Attribute" context="#stay" String="^&attributeName;|\s+&attributeName;" />
-    <DetectChar attribute="Attribute" context="Value" char="=" />
+    <DetectChar attribute="Attribute Separator" context="Value" char="=" />
   </context>
 
   <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">
@@ -137,46 +154,39 @@
   </context>
 
   <context name="El Open" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
-    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
     <IncludeRules context="FindAttributes" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="El Close" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="El Close 2" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="El Close 3" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="CSS" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
-    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="style" />
+    <DetectChar attribute="Element Symbols" context="CSS content" char="&gt;" />
     <IncludeRules context="FindAttributes" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
   <context name="CSS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
+    <RegExpr attribute="Element Symbols" context="CSS content Close" String="&lt;/(?=style\b)" insensitive="true" />
     <IncludeRules context="##CSS" includeAttrib="true"/>
   </context>
+  <context name="CSS content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="style" />
+  </context>
 
   <context name="JS" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)type(?=\=|\s|$)" insensitive="true"/>
-    <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="JS content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="script" />
     <IncludeRules context="FindAttributes" />
     <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
@@ -186,12 +196,19 @@
     <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
   </context>
   <context name="Default JS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <IncludeRules context="FindScriptTagClose" />
     <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
   </context>
 
+  <context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+    <RegExpr attribute="Element Symbols" context="ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true" />
+  </context>
+  <context name="ScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="script" />
+  </context>
+
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
-    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <RegExpr attribute="Element Symbols" context="#pop!ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true" />
     <DetectSpaces />
     <IncludeRules context="##Comments" />
   </context>
@@ -251,7 +268,7 @@
   </context>
 
   <context name="JSX" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="JSX content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="JSX content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="JSX content" attribute="Other Text" lineEndContext="#stay">
@@ -260,7 +277,7 @@
   </context>
 
   <context name="TypeScript" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="TypeScript content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="TypeScript content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">
@@ -269,22 +286,22 @@
   </context>
 
   <context name="MustacheJS" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="MustacheJS content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="MustacheJS content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
     <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
     <IncludeRules context="Base##Mustache/Handlebars (HTML)" includeAttrib="true"/>
   </context>
 
   <context name="Script HTML template" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="Script HTML template content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="Script HTML template content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
     <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
     <IncludeRules context="FindHTML" />
@@ -299,7 +316,9 @@
   <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" />
   <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" />
   <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" />
+  <itemData name="Element Symbols" defStyleNum="dsDataType" spellChecking="false" />
   <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" />
+  <itemData name="Attribute Separator" defStyleNum="dsOthers" spellChecking="false" />
   <itemData name="Value" defStyleNum="dsString" spellChecking="false" />
   <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" />
   <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" />
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -35,7 +35,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="28"
+    version="29"
     kateversion="5.79"
     indenter="cstyle"
     style="C++"
@@ -551,7 +551,7 @@
       </context>
       <context name="String8EscapeX" attribute="String" lineEndContext="#pop">
         <HlCStringChar attribute="String Char" context="#pop!StringNoHex"/>
-        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+        <IncludeRules context="string special char x" />
       </context>
 
       <context name="String16" attribute="String" lineEndContext="#pop">
@@ -561,7 +561,7 @@
       </context>
       <context name="String16EscapeX" attribute="String" lineEndContext="#pop">
         <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
-        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+        <IncludeRules context="string special char x" />
       </context>
 
       <context name="String32" attribute="String" lineEndContext="#pop">
@@ -571,7 +571,7 @@
       </context>
       <context name="String32EscapeX" attribute="String" lineEndContext="#pop">
         <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
-        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+        <IncludeRules context="string special char x" />
       </context>
 
       <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
@@ -580,11 +580,16 @@
 
       <context name="string special char" attribute="String" lineEndContext="#pop">
         <HlCStringChar attribute="String Char"/>
-        <RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;|&format_like;"/>
+        <!-- \x{n...} is defined in "string special char x" -->
+        <RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|u{[0-9A-Fa-f]+}|o{[0-7]+}|N{[- A-Z0-9]+})|&printf_like;|&format_like;"/>
         <AnyChar attribute="String" String="%{}"/>
-        <RegExpr attribute="Error" String="\\(?:u[^&quot;]{0,3}|U[^&quot;]{0,7}|.)"/>
+        <RegExpr attribute="Error" String="\\(?:u{([0-9A-Fa-f]+|})?|u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7}|o{([0-7]+|})?|N{([- A-Z0-9]+|})?|.)"/>
         <LineContinue attribute="Separator Symbol"/>
       </context>
+      <context name="string special char x" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" String="\\x{[0-9A-Fa-f]+}" context="#pop"/>
+        <RegExpr attribute="Error" String="\\x({([0-9A-Fa-f]+|})?)?" context="#pop"/>
+      </context>
 
       <context name="string normal char" attribute="String" lineEndContext="#pop">
         <DetectChar attribute="String" context="UDLStringSuffix" char="&quot;" />
@@ -606,7 +611,8 @@
         <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;" />
+        <IncludeRules context="match comments" />
+        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;#" />
         <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
         <DetectChar attribute="String" context="String8" char="&quot;" />
         <AnyChar attribute="Decimal" context="Integer" String="0123456789" lookAhead="true" />
@@ -645,40 +651,44 @@
       <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop" />
 
       <context name="DetectNSEnd" attribute="Normal Text" lineEndContext="#stay">
-        <AnyChar attribute="Symbol" context="#pop" String="&ns_punctuators; &#9;" />
-        <AnyChar attribute="Separator Symbol" context="#pop" String="&separators;" />
+        <Detect2Chars char=":" char1=":"/>
+        <IncludeRules context="match comments and region markers" />
+        <AnyChar context="#pop" String="&ns_punctuators;&separators; &#9;#:" lookAhead="1"/>
         <!-- This keyword may appear in InternalsNS context. For example in code:
           details::some_class::template some_templated_static();
           and it should be displayed as keyword, not like part of details namespace...
           -->
-        <WordDetect attribute="Keyword" context="#stay" String="template" />
+        <WordDetect attribute="Keyword" context="#pop" String="template" />
         <DetectIdentifier context="#stay"/>
       </context>
 
-      <context name="Standard Classes" attribute="Standard Classes" lineEndContext="#stay">
+      <context name="Standard Classes" attribute="Standard Classes" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Boost Stuff" attribute="Boost Stuff" lineEndContext="#stay">
+      <context name="Boost Stuff" attribute="Boost Stuff" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="InternalsNS" attribute="Internals" lineEndContext="#stay">
+      <context name="InternalsNS" attribute="Internals" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Standard Classes In PP" attribute="Standard Classes" lineEndContext="#pop">
+      <context name="Standard Classes In PP" attribute="Standard Classes" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Boost Stuff In PP" attribute="Boost Stuff" lineEndContext="#pop">
+      <context name="Boost Stuff In PP" attribute="Boost Stuff" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="InternalsNS In PP" attribute="Internals" lineEndContext="#pop">
+      <context name="InternalsNS In PP" attribute="Internals" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
diff --git a/xml/java.xml b/xml/java.xml
--- a/xml/java.xml
+++ b/xml/java.xml
@@ -7,7 +7,7 @@
 	<!ENTITY float "(\b&int;(\.((&int;&exp;?+|&exp;)[fFdD]?\b|[fFdD]\b)?|&exp;[fFdD]?\b|[fFdD]\b)|\.&int;&exp;?[fFdD]?\b)">
 	<!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fFdD]?\b">
 ]>
-<language name="Java" version="11" kateversion="5.62" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Java" version="12" kateversion="5.62" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
@@ -3705,6 +3705,8 @@
 			
 <!-- 			end new classes -->
 		</list>
+
+		<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html#jls-Keyword -->
 		<list name="keywords">
 			<item>abstract</item>
 			<item>class</item>
@@ -3714,7 +3716,6 @@
 			<item>false</item>
 			<item>implements</item>
 			<item>instanceof</item>
-			<item>@interface</item>
 			<item>interface</item>
 			<item>native</item>
 			<item>new</item>
@@ -3730,6 +3731,11 @@
 			<item>transient</item>
 			<item>true</item>
 			<item>volatile</item>
+			<!-- contextual -->
+			<item>non-sealed</item>
+			<item>permits</item>
+			<item>record</item>
+			<item>sealed</item>
 		</list>
 		<list name="control flow">
 			<item>assert</item>
@@ -3748,6 +3754,7 @@
 			<item>throw</item>
 			<item>try</item>
 			<item>while</item>
+			<item>yield</item>
 		</list>
 		<list name="types">
 			<item>boolean</item>
@@ -3764,6 +3771,25 @@
 			<item>var</item>
 			<item>void</item>
 		</list>
+
+		<list name="annotations">
+			<!-- builtin -->
+			<item>@Override</item>
+			<item>@Deprecated</item>
+			<item>@SuppressWarnings</item>
+			<item>@SafeVarargs</item>
+			<item>@FunctionalInterface</item>
+			<item>@interface</item>
+			<!-- java.lang.annotation -->
+			<item>@Retention</item>
+			<item>@Documented</item>
+			<item>@Target</item>
+			<item>@Inherited</item>
+			<item>@Repeatable</item>
+		</list>
+
+		<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html -->
+
 		<contexts>
 			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
 				<DetectSpaces context="#stay"/>
@@ -3783,6 +3809,7 @@
 
 				<AnyChar context="Number" String="0123456789" lookAhead="1"/>
 
+				<StringDetect attribute="Text Block" context="TextBlock" String="&quot;&quot;&quot;"/>
 				<DetectChar attribute="String" context="String" char="&quot;"/>
 				<DetectChar context="Char" char="'" lookAhead="1"/>
 
@@ -3795,6 +3822,7 @@
 				<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="import" />
 
 				<RegExpr attribute="Function" context="#stay" String="\b[_a-zA-Z]\w*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
+				<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="non-sealed" />
 				<DetectIdentifier attribute="Normal Text"/>
 			</context>
 
@@ -3831,6 +3859,11 @@
 				<RegExpr attribute="Error" context="#pop" String="\\(u+[0-9a-fA-F]*|.)?"/>
 			</context>
 
+			<context attribute="Text Block" lineEndContext="#stay" name="TextBlock">
+				<DetectChar context="StringEscapedChar" char="\" lookAhead="1"/>
+				<StringDetect attribute="Text Block" context="#pop" String="&quot;&quot;&quot;"/>
+			</context>
+
 			<context attribute="Normal Text" lineEndContext="#stay" name="Printf" fallthroughContext="#pop">
 				<DetectChar attribute="Symbol" context="#pop!InPrintf" char="("/>
 				<DetectSpaces attribute="Normal Text" context="#stay"/>
@@ -3898,6 +3931,7 @@
 			<itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Float"        defStyleNum="dsFloat" spellChecking="false"/>
 			<itemData name="Char"         defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="Text Block"   defStyleNum="dsString"/>
 			<itemData name="String"       defStyleNum="dsString"/>
 			<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
 			<itemData name="PrintfString" defStyleNum="dsString"/>
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -7,7 +7,7 @@
   <!ENTITY DecimalIntegerLiteral "(0|[1-9][0-9]*+(_[0-9]++)*+)">
   <!ENTITY DecimalDigits "([0-9]++(_[0-9]++)*+)">
   <!ENTITY ExponentPart "([eE][+-]?&DecimalDigits;)">
-  <!ENTITY float "&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
+  <!ENTITY float "\b&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
 ]>
 
 <!--
@@ -23,7 +23,7 @@
    * QML
    * CoffeeScript (embedded)
 -->
-<language name="JavaScript" version="24" kateversion="5.53" section="Scripts" extensions="*.js;*.mjs;*.cjs;*.kwinscript;*.julius"
+<language name="JavaScript" version="25" kateversion="5.53" section="Scripts" extensions="*.js;*.mjs;*.cjs;*.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="">
 
@@ -1650,38 +1650,42 @@
       <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal" />
 
       <!-- Normal Syntax of JavaScript. -->
-      <!-- NOTE: These IncludeRules rules, except BuiltInClasses and FindBrackets are included in qml.xml -->
+      <!-- NOTE: These IncludeRules rules, except BuiltInClasses, FindBrackets, FindPrivateOperator, FindE4X are included in qml.xml -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces/>
+        <IncludeRules context="FindSomeSymbols" />
+        <IncludeRules context="FindBrackets" />
+        <IncludeRules context="FindPrivateOperator" />
+        <IncludeRules context="FindComments" />
         <IncludeRules context="FindNumbers" />
+        <IncludeRules context="FindMembers" />
         <IncludeRules context="FindKeywords" />
         <IncludeRules context="FindStrings" />
         <IncludeRules context="BuiltInClasses" />
         <IncludeRules context="FindObjectMembersAndFunctions" />
-        <IncludeRules context="FindBrackets" />
-        <IncludeRules context="JSBase" />
+        <IncludeRules context="FindIdentifier" />
+        <IncludeRules context="FindE4X" />
+        <IncludeRules context="FindRegex" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSomeSymbols">
+        <IncludeRules context="FindArrowFunction" />
+        <!-- symbol that is not used in any other context (fast path) -->
+        <AnyChar attribute="Symbol" String=":!%&amp;+,-*=&gt;?|~^;" />
+      </context>
 
       <!-- Base Syntax. Used by the TypeScript highlighter. -->
       <context attribute="Normal Text" lineEndContext="#stay" name="JSBase">
-        <AnyChar context="NoRegExp" String="])" />
-        <!--DetectIdentifier-->
-        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
-        <RegExpr context="NoRegExp" String="&identifier;" />
-
+        <DetectChar attribute="Symbol" char="?" />
+        <IncludeRules context="FindIdentifier" />
+        <IncludeRules context="FindE4X" />
         <IncludeRules context="FindComments" />
-
-        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
-        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=/\*|//)" />
-        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
-        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
-
-        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
-
-        <!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
-        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
-        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
+        <IncludeRules context="FindRegex" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="JSBaseSomeSymboles">
+        <IncludeRules context="FindArrowFunction" />
+        <!-- symbol that is not used in any other context (fast path) -->
+        <AnyChar attribute="Symbol" String="!%&amp;+,-*=&gt;|~^;" />
+      </context>
 
 
       <!-- Content Contexts -->
@@ -1704,8 +1708,27 @@
         <DetectChar attribute="Symbol" context="#pop#pop" char="/" />
       </context>
 
+      <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindE4X">
+        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=[^/]|/\*|//|$)" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
+      </context>
+
+      <!--DetectIdentifier-->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindIdentifier">
+        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
+        <RegExpr context="NoRegExp" String="&identifier;" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindRegex">
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+      </context>
+
       <!-- Object, within { ... } -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindBrackets">
+        <DetectChar attribute="Normal Text" context="#stay" char="(" />
+        <DetectChar attribute="Normal Text" context="NoRegExp" char=")" />
         <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
         <DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
         <DetectChar attribute="Normal Text" context="NoRegExp" char="]" endRegion="List" />
@@ -1732,6 +1755,11 @@
         <IncludeRules context="Normal" />
       </context>
 
+      <!-- '#' in "#identifier" -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindPrivateOperator">
+        <DetectChar attribute="Private Member Operator" char="#" />
+      </context>
+
       <!-- Keywords -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindKeywords">
         <WordDetect attribute="Keyword" context="FunctionDeclaration" String="function" />
@@ -1743,24 +1771,42 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="FunctionDeclaration" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces />
+        <IncludeRules context="FindPrivateOperator" />
         <RegExpr attribute="Function Declaration" context="#pop" String="&identifier;(?=\s*\()" /> <!-- NoRegExp -->
         <IncludeRules context="FindComments" />
       </context>
 
       <!-- Numbers -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindNumbers">
-        <RegExpr attribute="Float" context="NoRegExp" String="\b&float;" />
-        <RegExpr attribute="Hex" context="NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
+        <RegExpr attribute="Float" context="NoRegExp" String="&float;" />
+        <AnyChar context="Integer" String="0123456789" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Integer">
+        <RegExpr attribute="Hex" context="#pop!NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
         <!-- 07 is octal, 08 is decimal -->
-        <RegExpr attribute="Octal" context="NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
-        <RegExpr attribute="Binary" context="NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
-        <RegExpr attribute="Decimal" context="NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
+        <RegExpr attribute="Octal" context="#pop!NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
+        <RegExpr attribute="Binary" context="#pop!NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
+        <!-- 0000_8 is invalid -->
+        <RegExpr attribute="Decimal" context="#pop!NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="NumericSufix" fallthrough="true" fallthroughContext="#pop!NoRegExp">
         <DetectChar attribute="Normal Text" context="#pop!NoRegExp" char="n" />
+        <IncludeRules context="NumericSufixError" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NumericSufixError">
         <RegExpr attribute="Error" context="#pop!NoRegExp" String="[0-9]*(&identifier;)?"/>
       </context>
 
+      <!-- Find => -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindArrowFunction">
+        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
+      </context>
+
+      <!-- Find Objects Member -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindMembers">
+        <DetectChar attribute="Symbol" context="Object Member" char="." lookAhead="true" />
+      </context>
+
       <!-- Find Objects Member and Functions -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindObjectMembersAndFunctions">
         <!-- Tagged Template Literals -->
@@ -1769,7 +1815,6 @@
         <RegExpr attribute="Function Name" context="Function" String="(&identifier;)(?=\s*\()" lookAhead="true" />
         <IncludeRules context="BuiltInConstants" />
         <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
-        <DetectChar attribute="Symbol" context="Object Member" char="." lookAhead="true" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Function">
         <keyword attribute="Function (Built-in)" context="#pop" String="functions" />
@@ -1778,6 +1823,7 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
+        <IncludeRules context="FindPrivateOperator" />
         <IncludeRules context="DefaultMemberObject" />
         <!-- Common functions and properties, only for autocomplete keywords -->
         <keyword attribute="Object Member" context="#pop!NoRegExp" String="dom_property" />
@@ -2031,6 +2077,7 @@
       <itemData name="Comment"      defStyleNum="dsComment" />
       <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
       <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Private Member Operator" defStyleNum="dsNormal" spellChecking="false" />
       <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
       <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
       <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
diff --git a/xml/kotlin.xml b/xml/kotlin.xml
--- a/xml/kotlin.xml
+++ b/xml/kotlin.xml
@@ -8,7 +8,7 @@
     <!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fF]?\b">
 ]>
 <!-- kotlin language syntax http://kotlinlang.org -->
-<language name="Kotlin" version="10" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
+<language name="Kotlin" version="11" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
     <highlighting>
         <list name="keywords">
             <item>package</item>
@@ -58,8 +58,16 @@
             <item>typealias</item>
             <item>typeof</item>
             <item>override</item>
+            <item>abstract</item>
             <item>infix</item>
             <item>operator</item>
+
+            <item>annotation</item>
+            <item>const</item>
+            <item>lateinit</item>
+            <item>inner</item>
+            <item>external</item>
+            <item>noinline</item>
         </list>
         <list name="controlFlowKeyword">
             <item>if</item>
@@ -100,6 +108,8 @@
             <item>Double</item>
 
             <item>Boolean</item>
+
+            <item>dynamic</item>
         </list>
 
         <contexts>
@@ -117,8 +127,7 @@
                 <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
                 <DetectChar attribute="Annotation" context="Annotation" char="@" />
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="Comment"/>
 
                 <AnyChar attribute="Symbol" context="#stay" String="()[]&amp;|+,-/*&lt;=&gt;;!%?:~^"/>
 
@@ -147,6 +156,11 @@
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
 
+            <context attribute="Normal Text" lineEndContext="#stay" name="Comment">
+                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
+                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+            </context>
+
             <context attribute="Normal Text" lineEndContext="#stay" name="Number">
                 <IncludeRules context="FindFloat"/>
                 <RegExpr attribute="Hex" context="#pop" String="\b0[xX]&hex;[lL]?\b"/>
@@ -164,7 +178,10 @@
             </context>
 
             <context attribute="Normal Text" lineEndContext="#pop" name="Annotation" fallthroughContext="#pop">
-                <DetectIdentifier attribute="Annotation" context="#pop"/>
+                <DetectIdentifier attribute="Annotation"/>
+                <DetectChar attribute="Symbol" char=":"/>
+                <RangeDetect attribute="Annotation" context="#pop" char="[" char1="]"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context attribute="Normal Text" lineEndContext="#stay" name="Char">
@@ -220,10 +237,12 @@
                 <WordDetect attribute="Keyword" context="TypeName" String="as" />
                 <DetectIdentifier attribute="Imports" context="#stay"/>
                 <DetectChar attribute="Symbol" context="#pop" char=";"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="VariableDeclaration" lineEndContext="#stay" attribute="Normal Text">
                 <DetectIdentifier attribute="Variable" context="#pop" />
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text">
@@ -233,6 +252,8 @@
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="SuperTypes" char=":" />
                 <DetectChar attribute="Symbol" context="#pop" char="{" lookAhead="true" />
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text">
@@ -244,10 +265,13 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="#stay"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text">
                 <keyword attribute="Keyword" context="#stay" String="keywords"/>
+                <DetectChar attribute="Annotation" context="Annotation" char="@" />
                 <DetectChar attribute="Symbol" context="#stay" char="." />
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
@@ -256,6 +280,8 @@
                 <AnyChar attribute="Symbol" context="#pop" String="{=" lookAhead="true" />
 
                 <DetectIdentifier attribute="Function" context="#stay"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeParameters" lineEndContext="#stay" attribute="Normal Text">
@@ -268,9 +294,13 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>
+
+                <IncludeRules context="Comment"/>
             </context>
             <context name="DataTypeSuffix" lineEndContext="#pop" attribute="Normal Text" fallthroughContext="#pop">
                 <DetectChar attribute="Symbol" context="#pop" char="?"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="Parameters" lineEndContext="#stay" attribute="Normal Text">
@@ -280,6 +310,7 @@
                 <DetectChar attribute="Symbol" context="Expression" char="=" />
                 <DetectIdentifier attribute="Variable" context="#stay"/>
                 <DetectChar attribute="Symbol" context="#stay" char=","/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeName" lineEndContext="#stay" attribute="Normal Text">
@@ -287,6 +318,7 @@
                 <DetectChar attribute="Symbol" context="FunctionType" char="(" />
                 <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
                 <DetectIdentifier attribute="Data Type" context="#pop!DataTypeSuffix"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="FunctionType" lineEndContext="#stay" attribute="Normal Text">
@@ -294,6 +326,7 @@
                 <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>
                 <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
                 <DetectChar attribute="Symbol" context="#stay" char="," />
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="Expression" lineEndContext="#stay" attribute="Normal Text">
@@ -314,14 +347,14 @@
                 <DetectChar context="String" char="&quot;" lookAhead="1"/>
                 <DetectChar context="Char" char="'" lookAhead="1"/>
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="Comment"/>
 
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
             <context name="MaybeTypeParameters" lineEndContext="#pop" attribute="Normal Text">
                 <RegExpr context="#pop!TypeParameters" String="&lt;\w" lookAhead="1" />
                 <DetectChar attribute="Symbol" context="#pop" char="&lt;"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="ExpressionInner" lineEndContext="#stay" attribute="Normal Text">
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -4,7 +4,7 @@
     <!ENTITY bullet "&#xd7;">
     <!ENTITY envname "[a-zA-Z]+\*?">
 ]>
-<language name="LaTeX" version="21" section="Markup" kateversion="5.79" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="22" section="Markup" kateversion="5.79" 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
@@ -3824,7 +3824,7 @@
         <DetectSpaces/>
         <RegExpr String=".+" attribute="Error" context="#stay"/>
       </context>
-      <context name="HighlightingMakefile" attribute="Normal Text" lineEndContext="#stay">
+      <context name="HighlightingMakefile" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="strings_and_vars##Makefile">
         <IncludeRules context="HighlightingCommon"/>
         <IncludeRules context="##Makefile" includeAttrib="true"/>
       </context>
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language>
+<!DOCTYPE language
+[
+    <!ENTITY varname "(([+!?](?!=))?[^:#=\s+!?]*)++">
+]>
 <!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> -->
 <!-- Modified by Joseph Wenninger <jowenn@kde.org> -->
 <!-- Modified by Rui Santana <santana.rui@gmail.com> -->
@@ -12,24 +15,36 @@
 <!-- v10 by Peter J. Mello <admin@petermello.net>
      Add recognition of POSIX 2013 '::=' operator for variable assignment -->
 <language name="Makefile" section="Other"
-          version="14" kateversion="5.0"
+          version="16" kateversion="5.79"
           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"
           mimetype="text/x-makefile" priority="11"
           author="Per Wigren (wigren@home.se)" license="">
 
   <!-- https://www.gnu.org/software/make/manual/make.pdf -->
+  <!-- https://www.gnu.org/software/make/manual/html_node/Quick-Reference.html -->
 
   <highlighting>
-    <list name="keywords" >
+    <list name="keywords">
       <item>include</item>
       <item>-include</item>
+      <item>sinclude</item>
       <item>override</item>
       <item>define</item>
+      <item>undefine</item>
       <item>endef</item>
+      <item>export</item>
+      <item>unexport</item>
+      <item>private</item>
+      <item>vpath</item>
     </list>
+    <list name="special_keywords">
+      <item>export</item>
+      <item>unexport</item>
+      <item>override</item>
+      <item>private</item>
+    </list>
     <!-- https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html -->
     <list name="gmake_if_keywords">
-      <item>if</item>
       <item>ifeq</item>
       <item>ifneq</item>
       <item>ifdef</item>
@@ -168,38 +183,54 @@
       <item>info</item>
     </list>
     <contexts>
-      <context name="normal" attribute="Normal" lineEndContext="#stay">
+      <context name="normal" attribute="Normal" lineEndContext="#stay" fallthroughContext="strings_and_vars">
         <DetectSpaces/>
         <DetectChar attribute="Comment" context="Comment" char="#"/>
+
+        <!-- first because a variable can have the same name as a keyword -->
+        <RegExpr attribute="Variable" context="assign" String="&varname;(?=\s*([+!?]|::?:?)?=)" firstNonSpace="true"/>
+
         <keyword attribute="ControlFlow" String="bmake_if_keywords" context="bmake_conditional" beginRegion="bmake_if" firstNonSpace="true"/>
         <!--TODO: trailing non-space after .else should be highlighted as an error -->
         <keyword attribute="ControlFlow" String="bmake_else_keywords" context="bmake_conditional" endRegion="bmake_if" beginRegion="bmake_if" firstNonSpace="true"/>
-        <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if"/>
+        <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if" firstNonSpace="true"/>
 
-        <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay" beginRegion="gmake_if" firstNonSpace="true"/>
-        <!--TODO: trailing non-space after .else should be highlighted as an error -->
-        <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true"/>
-        <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if"/>
+        <keyword attribute="ControlFlow" String="gmake_if_keywords" context="strings_and_vars" beginRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
+        <!--TODO: trailing non-space after else should be highlighted as an error -->
+        <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
+        <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
 
-        <RegExpr attribute="Variable" context="assign" String="(([+!?](?!=))?[^:#=\s+!?]*)++(?=\s*([+!?]|::?:?)?=)"/>
-        <keyword attribute="Keyword"  context="#stay" String="keywords"/>
+        <WordDetect attribute="Keyword" context="define" String="define" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="override" String="override" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="export" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="unexport" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="undefine" firstNonSpace="true" weakDeliminator=":"/>
+        <keyword attribute="Keyword"  context="strings_and_vars" String="keywords" firstNonSpace="true" weakDeliminator=":"/>
+
         <keyword attribute="Keyword"  context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/>
         <keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/>
         <RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_message" String="bmake_message_stmt" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/>
-        <keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/>
+        <keyword attribute="Keyword" context="strings_and_vars" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/>
 
-        <RegExpr attribute="Section"  context="prereq" String="^\.[^.][^:]*:" column="0"/>
-        <RegExpr attribute="Target"   context="prereq" String="^[^:]*:" column="0"/>
+        <RegExpr attribute="Section" context="prereq" String="^\.[^.][^:]*:" column="0"/>
+        <RegExpr attribute="Target"  context="target" String="^([^:\\&amp;]|\\([:\\#&amp;]|(?=[^:\\#&amp;])))*+(?=[^:]*+:|\\$)" column="0"/>
+
+        <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
         <DetectIdentifier/>
-        <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
-        <DetectChar attribute="String" context="string'" char="'"/>
+      </context>
+
+      <context name="target" attribute="Target" lineEndContext="#pop">
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="::"/>
+        <DetectChar attribute="TargetSeparator" context="#pop!prereq" char=":"/>
         <DetectChar attribute="Operator" context="dollar" char="$"/>
-        <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
-        <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
-        <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
+        <LineContinue attribute="Operator" context="#pop"/>
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="&amp;::"/>
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="&amp;:"/>
+        <StringDetect attribute="Target" String="\:"/>
+        <DetectIdentifier attribute="Target"/>
       </context>
 
       <context name="strings_and_vars" attribute="Normal" lineEndContext="#pop">
@@ -219,6 +250,7 @@
                  else ifdef foo
                  else ifeq (bar, foo)
         -->
+        <DetectIdentifier attribute="Normal"/>
       </context>
 
       <context name="bmake_include" attribute="Normal" lineEndContext="#pop">
@@ -272,8 +304,13 @@
         <DetectChar attribute="Operator" context="dollar" char="$"/>
       </context>
 
-      <context name="prereq" attribute="Prereq" lineEndContext="rule">
+      <context name="prereq" attribute="Prereq" lineEndContext="rule" fallthroughContext="#pop!prereq2">
         <DetectSpaces/>
+        <keyword attribute="Keyword"  context="export" String="special_keywords" weakDeliminator=".@,+%-/^*?="/>
+        <RegExpr attribute="Variable" context="assign" String="[a-zA-Z_]+(?=\s*([+!?]|::?:?)?=)|"/>
+      </context>
+      <context name="prereq2" attribute="Prereq" lineEndContext="rule">
+        <DetectSpaces/>
         <keyword attribute="SpecialPrereq" context="#stay" String="bmake_special_sources"/>
         <DetectIdentifier/>
         <LineContinue attribute="Operator" context="#stay"/>
@@ -284,7 +321,7 @@
         <DetectChar attribute="Operator" context="inline-rule" char=";"/>
       </context>
 
-      <context name="inline-rule" attribute="Normal" lineEndContext="#pop!rule" fallthroughContext="#pop!inline-rule-cmd" fallthrough="1">
+      <context name="inline-rule" attribute="Normal" lineEndContext="#pop!rule" fallthroughContext="#pop!inline-rule-cmd">
         <DetectSpaces/>
         <LineContinue attribute="Operator" context="#stay"/>
         <AnyChar attribute="Operator" context="silent" String="@-"/>
@@ -303,21 +340,25 @@
       </context>
 
       <context name="rule" attribute="Normal" lineEndContext="#stay">
-        <LineContinue attribute="Operator" context="#stay"/>
+        <DetectChar char="&#9;" column="0"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
         <!-- pop if there is a leading non-tab,
         and in particular, mark leading spaces as errors -->
-        <RegExpr attribute="Error" context="#pop#pop#pop" String="^ +" firstNonSpace="1"/>
-        <RegExpr context="#pop#pop#pop" String="^[^\t]" lookAhead="1" firstNonSpace="1"/>
+        <RegExpr attribute="Error" context="#pop#pop#pop" String="^ ++(?!#)" column="0"/>
+        <RegExpr context="#pop#pop#pop" String="^(?=\s*#)|^[^#\t]" lookAhead="1" column="0"/>
         <DetectSpaces/>
         <DetectIdentifier/>
         <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
         <DetectChar attribute="String" context="string'" char="'"/>
         <DetectChar attribute="Operator" context="dollar" char="$"/>
+        <LineContinue attribute="Operator" context="rule_continuation"/>
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
         <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
-        <DetectChar attribute="Comment" context="Comment" char="#"/>
       </context>
+      <context name="rule_continuation" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces context="#pop"/>
+      </context>
 
       <context name="silent" attribute="Silent" lineEndContext="#pop">
         <LineContinue attribute="Operator" context="#stay"/>
@@ -354,6 +395,7 @@
         <RegExpr attribute="Special" context="#pop#pop" String="@[-_\d\w]*@"/>
         <Detect2Chars attribute="String" char="\" char1="#"/>
         <DetectChar attribute="Comment" context="#pop#pop!Comment" char="#"/>
+        <RegExpr attribute="String" String="[^$@\\#]+"/>
       </context>
 
       <context name="dollar" attribute="Operator" lineEndContext="#pop">
@@ -362,11 +404,11 @@
         <RegExpr attribute="Operator" context="#pop" String="."/>
       </context>
 
-      <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(" fallthrough="1">
+      <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(">
         <keyword attribute="Keyword" context="callFunc(" String="functions"/>
       </context>
 
-      <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{" fallthrough="1">
+      <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{">
         <keyword attribute="Keyword" context="callFunc{" String="functions"/>
       </context>
 
@@ -389,6 +431,35 @@
         <AnyChar attribute="Error" context="#stay" String="=#"/>
       </context>
 
+      <context name="override" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!export">
+        <DetectSpaces/>
+        <WordDetect attribute="Keyword" context="#pop!define" String="define"/>
+        <WordDetect attribute="Keyword" context="#pop!export" String="undefine"/>
+      </context>
+
+      <context name="define" attribute="Normal" lineEndContext="define_body">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <RegExpr attribute="Variable" context="define_op" String="&varname;"/>
+      </context>
+      <context name="define_op" attribute="Operator" lineEndContext="#pop!define_body">
+        <DetectSpaces attribute="Normal"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+      <context name="define_body" attribute="String" lineEndContext="#stay">
+        <DetectSpaces attribute="String"/>
+        <WordDetect attribute="Keyword" context="#pop#pop" String="endef" firstNonSpace="true"/>
+        <DetectIdentifier attribute="String"/>
+        <LineContinue attribute="Operator"/>
+        <DetectChar attribute="Operator" context="dollar" char="$"/>
+        <RegExpr attribute="Special" String="@[-_\d\w]*@"/>
+      </context>
+
+      <context name="export" attribute="Variable" lineEndContext="#pop" fallthroughContext="#pop!assign">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+      </context>
+
       <context name="bmake_var_modifier_arg" attribute="VarModifier" lineEndContext="#pop">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
         <Detect2Chars context="#stay" char="\" char1="}"/>
@@ -398,7 +469,7 @@
       </context>
 
       <!-- TODO: once all modifiers are properly handled change fallthroughContext to "expect}" -->
-      <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg" fallthrough="true">
+      <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
 
                     <!--
@@ -529,6 +600,7 @@
       <itemData name="RealOperator" defStyleNum="dsKeyword" spellChecking="0"/>
       <itemData name="SpecialTarget" defStyleNum="dsOthers" spellChecking="0" bold="1"/>
       <itemData name="SpecialPrereq" defStyleNum="dsDataType" spellChecking="0" bold="1"/>
+      <itemData name="TargetSeparator" defStyleNum="dsDecVal" spellChecking="0"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -90,7 +90,7 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="26" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="27" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
       <!-- Start of the Markdown document: find metadata or code block -->
@@ -526,8 +526,7 @@
         <RegExpr context="find-html-block" String="&lt;/?&htmlname;(?:[\s&gt;]|/&gt;|$)" lookAhead="true"/>
       </context>
       <context name="find-html-block" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
-        <IncludeRules context="FindSpecialHTMLTags##HTML"/>
-        <IncludeRules context="FindHTMLTags##HTML"/>
+        <IncludeRules context="FindElements##HTML"/>
       </context>
 
       <!-- Links and email: <https://example.com>, <example@kde.org> -->
diff --git a/xml/php.xml b/xml/php.xml
--- a/xml/php.xml
+++ b/xml/php.xml
@@ -77,7 +77,7 @@
   <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="24" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="25" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://php.watch/versions -->
     <!-- Based on 8.1 -->
@@ -208,6 +208,11 @@
 
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <!-- https://secure.php.net/manual/en/reserved.constants.php -->
+    <!--
+      Use this command line to extract page constants:
+
+      wget -O- ${url} | sed -nE 's#.*<strong><code>([^< ]+) *</code></strong>.*#      <item>\1</item>#p'
+    -->
     <list name="constants">
       <!-- PHP 5.6 (Compile-Time Constants) -->
       <item>__CLASS__</item>
@@ -692,8 +697,13 @@
       <item>CRYPT_STD_DES</item>
       <item>CRYPT_SHA256</item>
       <item>CRYPT_SHA512</item>
+      <item>CURLALTSVC_H1</item>
+      <item>CURLALTSVC_H2</item>
+      <item>CURLALTSVC_H3</item>
+      <item>CURLALTSVC_READONLYFILE</item>
       <item>CURLAUTH_ANY</item>
       <item>CURLAUTH_ANYSAFE</item>
+      <item>CURLAUTH_AWS_SIGV4</item>
       <item>CURLAUTH_BASIC</item>
       <item>CURLAUTH_BEARER</item>
       <item>CURLAUTH_DIGEST</item>
@@ -754,6 +764,7 @@
       <item>CURLE_OPERATION_TIMEOUTED</item>
       <item>CURLE_OUT_OF_MEMORY</item>
       <item>CURLE_PARTIAL_FILE</item>
+      <item>CURLE_PROXY</item>
       <item>CURLE_READ_ERROR</item>
       <item>CURLE_RECV_ERROR</item>
       <item>CURLE_SEND_ERROR</item>
@@ -777,6 +788,7 @@
       <item>CURLFTPAUTH_DEFAULT</item>
       <item>CURLFTPAUTH_SSL</item>
       <item>CURLFTPAUTH_TLS</item>
+      <item>CURLFTPMETHOD_DEFAULT</item>
       <item>CURLFTPSSL_ALL</item>
       <item>CURLFTPSSL_CONTROL</item>
       <item>CURLFTPSSL_NONE</item>
@@ -786,6 +798,8 @@
       <item>CURLFTP_CREATE_DIR_RETRY</item>
       <item>CURLHEADER_SEPARATE</item>
       <item>CURLHEADER_UNIFIED</item>
+      <item>CURLHSTS_ENABLE</item>
+      <item>CURLHSTS_READONLYFILE</item>
       <item>CURLINFO_APPCONNECT_TIME_T</item>
       <item>CURLINFO_CONNECT_TIME</item>
       <item>CURLINFO_CONNECT_TIME_T</item>
@@ -794,6 +808,7 @@
       <item>CURLINFO_CONTENT_LENGTH_UPLOAD</item>
       <item>CURLINFO_CONTENT_LENGTH_UPLOAD_T</item>
       <item>CURLINFO_CONTENT_TYPE</item>
+      <item>CURLINFO_EFFECTIVE_METHOD</item>
       <item>CURLINFO_EFFECTIVE_URL</item>
       <item>CURLINFO_FILETIME</item>
       <item>CURLINFO_FILETIME_T</item>
@@ -811,13 +826,16 @@
       <item>CURLINFO_PRIMARY_PORT</item>
       <item>CURLINFO_PRIVATE</item>
       <item>CURLINFO_PROTOCOL</item>
+      <item>CURLINFO_PROXY_ERROR</item>
       <item>CURLINFO_PROXY_SSL_VERIFYRESULT</item>
       <item>CURLINFO_REDIRECT_COUNT</item>
       <item>CURLINFO_REDIRECT_TIME</item>
       <item>CURLINFO_REDIRECT_TIME_T</item>
       <item>CURLINFO_REDIRECT_URL</item>
+      <item>CURLINFO_REFERER</item>
       <item>CURLINFO_REQUEST_SIZE</item>
       <item>CURLINFO_RESPONSE_CODE</item>
+      <item>CURLINFO_RETRY_AFTER</item>
       <item>CURLINFO_SCHEME</item>
       <item>CURLINFO_SIZE_DOWNLOAD</item>
       <item>CURLINFO_SIZE_DOWNLOAD_T</item>
@@ -835,6 +853,7 @@
       <item>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</item>
       <item>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</item>
       <item>CURLMOPT_MAXCONNECTS</item>
+      <item>CURLMOPT_MAX_CONCURRENT_STREAMS</item>
       <item>CURLMOPT_MAX_HOST_CONNECTIONS</item>
       <item>CURLMOPT_MAX_PIPELINE_LENGTH</item>
       <item>CURLMOPT_MAX_TOTAL_CONNECTIONS</item>
@@ -848,10 +867,14 @@
       <item>CURLM_OK</item>
       <item>CURLM_OUT_OF_MEMORY</item>
       <item>CURLOPT_ABSTRACT_UNIX_SOCKET</item>
+      <item>CURLOPT_ALTSVC</item>
+      <item>CURLOPT_ALTSVC_CTRL</item>
       <item>CURLOPT_AUTOREFERER</item>
+      <item>CURLOPT_AWS_SIGV4</item>
       <item>CURLOPT_BINARYTRANSFER</item>
       <item>CURLOPT_BUFFERSIZE</item>
       <item>CURLOPT_CAINFO</item>
+      <item>CURLOPT_CAINFO_BLOB</item>
       <item>CURLOPT_CAPATH</item>
       <item>CURLOPT_CERTINFO</item>
       <item>CURLOPT_CLOSEPOLICY</item>
@@ -868,13 +891,16 @@
       <item>CURLOPT_CUSTOMREQUEST</item>
       <item>CURLOPT_DEFAULT_PROTOCOL</item>
       <item>CURLOPT_DISALLOW_USERNAME_IN_URL</item>
-      <item>CURLOPT_DOH_URL</item>
       <item>CURLOPT_DNS_CACHE_TIMEOUT</item>
       <item>CURLOPT_DNS_INTERFACE</item>
       <item>CURLOPT_DNS_LOCAL_IP4</item>
       <item>CURLOPT_DNS_LOCAL_IP6</item>
       <item>CURLOPT_DNS_SHUFFLE_ADDRESSES</item>
       <item>CURLOPT_DNS_USE_GLOBAL_CACHE</item>
+      <item>CURLOPT_DOH_SSL_VERIFYHOST</item>
+      <item>CURLOPT_DOH_SSL_VERIFYPEER</item>
+      <item>CURLOPT_DOH_SSL_VERIFYSTATUS</item>
+      <item>CURLOPT_DOH_URL</item>
       <item>CURLOPT_EGDSOCKET</item>
       <item>CURLOPT_ENCODING</item>
       <item>CURLOPT_EXPECT_100_TIMEOUT_MS</item>
@@ -899,6 +925,8 @@
       <item>CURLOPT_HEADER</item>
       <item>CURLOPT_HEADERFUNCTION</item>
       <item>CURLOPT_HEADEROPT</item>
+      <item>CURLOPT_HSTS</item>
+      <item>CURLOPT_HSTS_CTRL</item>
       <item>CURLOPT_HTTP09_ALLOWED</item>
       <item>CURLOPT_HTTP200ALIASES</item>
       <item>CURLOPT_HTTPAUTH</item>
@@ -910,13 +938,18 @@
       <item>CURLOPT_INFILESIZE</item>
       <item>CURLOPT_INTERFACE</item>
       <item>CURLOPT_IPRESOLVE</item>
+      <item>CURLOPT_ISSUERCERT_BLOB</item>
       <item>CURLOPT_KEEP_SENDING_ON_ERROR</item>
       <item>CURLOPT_KEYPASSWD</item>
       <item>CURLOPT_KRB4LEVEL</item>
       <item>CURLOPT_LOGIN_OPTIONS</item>
       <item>CURLOPT_LOW_SPEED_LIMIT</item>
       <item>CURLOPT_LOW_SPEED_TIME</item>
+      <item>CURLOPT_MAIL_RCPT_ALLLOWFAILS</item>
+      <item>CURLOPT_MAXAGE_CONN</item>
       <item>CURLOPT_MAXCONNECTS</item>
+      <item>CURLOPT_MAXFILESIZE_LARGE</item>
+      <item>CURLOPT_MAXLIFETIME_CONN</item>
       <item>CURLOPT_MAXREDIRS</item>
       <item>CURLOPT_MAX_RECV_SPEED_LARGE</item>
       <item>CURLOPT_MAX_SEND_SPEED_LARGE</item>
@@ -945,15 +978,20 @@
       <item>CURLOPT_PROXYTYPE</item>
       <item>CURLOPT_PROXYUSERPWD</item>
       <item>CURLOPT_PROXY_CAINFO</item>
+      <item>CURLOPT_PROXY_CAINFO_BLOB</item>
       <item>CURLOPT_PROXY_CAPATH</item>
       <item>CURLOPT_PROXY_CRLFILE</item>
+      <item>CURLOPT_PROXY_ISSUERCERT</item>
+      <item>CURLOPT_PROXY_ISSUERCERT_BLOB</item>
       <item>CURLOPT_PROXY_KEYPASSWD</item>
       <item>CURLOPT_PROXY_PINNEDPUBLICKEY</item>
       <item>CURLOPT_PROXY_SERVICE_NAME</item>
       <item>CURLOPT_PROXY_SSLCERT</item>
       <item>CURLOPT_PROXY_SSLCERTTYPE</item>
+      <item>CURLOPT_PROXY_SSLCERT_BLOB</item>
       <item>CURLOPT_PROXY_SSLKEY</item>
       <item>CURLOPT_PROXY_SSLKEYTYPE</item>
+      <item>CURLOPT_PROXY_SSLKEY_BLOB</item>
       <item>CURLOPT_PROXY_SSLVERSION</item>
       <item>CURLOPT_PROXY_SSL_CIPHER_LIST</item>
       <item>CURLOPT_PROXY_SSL_OPTIONS</item>
@@ -975,6 +1013,7 @@
       <item>CURLOPT_RESUME_FROM</item>
       <item>CURLOPT_RETURNTRANSFER</item>
       <item>CURLOPT_SAFE_UPLOAD</item>
+      <item>CURLOPT_SASL_AUTHZID</item>
       <item>CURLOPT_SASL_IR</item>
       <item>CURLOPT_SERVICE_NAME</item>
       <item>CURLOPT_SHARE</item>
@@ -982,18 +1021,22 @@
       <item>CURLOPT_SSH_AUTH_TYPES</item>
       <item>CURLOPT_SSH_COMPRESSION</item>
       <item>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</item>
+      <item>CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256</item>
       <item>CURLOPT_SSH_PRIVATE_KEYFILE</item>
       <item>CURLOPT_SSH_PUBLIC_KEYFILE</item>
       <item>CURLOPT_SSLCERT</item>
       <item>CURLOPT_SSLCERTPASSWD</item>
       <item>CURLOPT_SSLCERTTYPE</item>
+      <item>CURLOPT_SSLCERT_BLOB</item>
       <item>CURLOPT_SSLENGINE</item>
       <item>CURLOPT_SSLENGINE_DEFAULT</item>
       <item>CURLOPT_SSLKEY</item>
       <item>CURLOPT_SSLKEYPASSWD</item>
       <item>CURLOPT_SSLKEYTYPE</item>
+      <item>CURLOPT_SSLKEY_BLOB</item>
       <item>CURLOPT_SSLVERSION</item>
       <item>CURLOPT_SSL_CIPHER_LIST</item>
+      <item>CURLOPT_SSL_EC_CURVES</item>
       <item>CURLOPT_SSL_ENABLE_ALPN</item>
       <item>CURLOPT_SSL_ENABLE_NPN</item>
       <item>CURLOPT_SSL_FALSESTART</item>
@@ -1019,7 +1062,9 @@
       <item>CURLOPT_TRANSFERTEXT</item>
       <item>CURLOPT_UNIX_SOCKET_PATH</item>
       <item>CURLOPT_UNRESTRICTED_AUTH</item>
+      <item>CURLOPT_UPKEEP_INTERVAL_MS</item>
       <item>CURLOPT_UPLOAD</item>
+      <item>CURLOPT_UPLOAD_BUFFERSIZE</item>
       <item>CURLOPT_URL</item>
       <item>CURLOPT_USERAGENT</item>
       <item>CURLOPT_USERNAME</item>
@@ -1027,26 +1072,8 @@
       <item>CURLOPT_VERBOSE</item>
       <item>CURLOPT_WRITEFUNCTION</item>
       <item>CURLOPT_WRITEHEADER</item>
+      <item>CURLOPT_XFERINFOFUNCTION</item>
       <item>CURLOPT_XOAUTH2_BEARER</item>
-      <item>CURLSSH_AUTH_GSSAPI</item>
-      <item>CURL_HTTP_VERSION_2_0</item>
-      <item>CURL_LOCK_DATA_CONNECT</item>
-      <item>CURL_LOCK_DATA_PSL</item>
-      <item>CURL_VERSION_ALTSVC</item>
-      <item>CURL_VERSION_ASYNCHDNS</item>
-      <item>CURL_VERSION_BROTLI</item>
-      <item>CURL_VERSION_CONV</item>
-      <item>CURL_VERSION_CURLDEBUG</item>
-      <item>CURL_VERSION_DEBUG</item>
-      <item>CURL_VERSION_GSSAPI</item>
-      <item>CURL_VERSION_GSSNEGOTIATE</item>
-      <item>CURL_VERSION_IDN</item>
-      <item>CURL_VERSION_MULTI_SSL</item>
-      <item>CURL_VERSION_NTLM</item>
-      <item>CURL_VERSION_NTLM_WB</item>
-      <item>CURL_VERSION_SPNEGO</item>
-      <item>CURL_VERSION_SSPI</item>
-      <item>CURL_VERSION_TLSAUTH_SRP</item>
       <item>CURLPAUSE_ALL</item>
       <item>CURLPAUSE_CONT</item>
       <item>CURLPAUSE_RECV</item>
@@ -1056,6 +1083,7 @@
       <item>CURLPIPE_HTTP1</item>
       <item>CURLPIPE_MULTIPLEX</item>
       <item>CURLPIPE_NOTHING</item>
+      <item>CURLPROTO_MQTT</item>
       <item>CURLPROTO_SMB</item>
       <item>CURLPROTO_SMBS</item>
       <item>CURLPROXY_HTTP</item>
@@ -1065,27 +1093,69 @@
       <item>CURLPROXY_SOCKS4A</item>
       <item>CURLPROXY_SOCKS5</item>
       <item>CURLPROXY_SOCKS5_HOSTNAME</item>
+      <item>CURLPX_BAD_ADDRESS_TYPE</item>
+      <item>CURLPX_BAD_VERSION</item>
+      <item>CURLPX_CLOSED</item>
+      <item>CURLPX_GSSAPI</item>
+      <item>CURLPX_GSSAPI_PERMSG</item>
+      <item>CURLPX_GSSAPI_PROTECTION</item>
+      <item>CURLPX_IDENTD</item>
+      <item>CURLPX_IDENTD_DIFFER</item>
+      <item>CURLPX_LONG_HOSTNAME</item>
+      <item>CURLPX_LONG_PASSWD</item>
+      <item>CURLPX_LONG_USER</item>
+      <item>CURLPX_NO_AUTH</item>
+      <item>CURLPX_OK</item>
+      <item>CURLPX_RECV_ADDRESS</item>
+      <item>CURLPX_RECV_AUTH</item>
+      <item>CURLPX_RECV_CONNECT</item>
+      <item>CURLPX_RECV_REQACK</item>
+      <item>CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED</item>
+      <item>CURLPX_REPLY_COMMAND_NOT_SUPPORTED</item>
+      <item>CURLPX_REPLY_CONNECTION_REFUSED</item>
+      <item>CURLPX_REPLY_GENERAL_SERVER_FAILURE</item>
+      <item>CURLPX_REPLY_HOST_UNREACHABLE</item>
+      <item>CURLPX_REPLY_NETWORK_UNREACHABLE</item>
+      <item>CURLPX_REPLY_NOT_ALLOWED</item>
+      <item>CURLPX_REPLY_TTL_EXPIRED</item>
+      <item>CURLPX_REPLY_UNASSIGNED</item>
+      <item>CURLPX_REQUEST_FAILED</item>
+      <item>CURLPX_RESOLVE_HOST</item>
+      <item>CURLPX_SEND_AUTH</item>
+      <item>CURLPX_SEND_CONNECT</item>
+      <item>CURLPX_SEND_REQUEST</item>
+      <item>CURLPX_UNKNOWN_FAIL</item>
+      <item>CURLPX_UNKNOWN_MODE</item>
+      <item>CURLPX_USER_REJECTED</item>
       <item>CURLSHOPT_SHARE</item>
       <item>CURLSHOPT_UNSHARE</item>
       <item>CURLSSH_AUTH_AGENT</item>
       <item>CURLSSH_AUTH_ANY</item>
       <item>CURLSSH_AUTH_DEFAULT</item>
+      <item>CURLSSH_AUTH_GSSAPI</item>
       <item>CURLSSH_AUTH_HOST</item>
       <item>CURLSSH_AUTH_KEYBOARD</item>
       <item>CURLSSH_AUTH_NONE</item>
       <item>CURLSSH_AUTH_PASSWORD</item>
       <item>CURLSSH_AUTH_PUBLICKEY</item>
       <item>CURLSSLOPT_ALLOW_BEAST</item>
+      <item>CURLSSLOPT_AUTO_CLIENT_CERT</item>
+      <item>CURLSSLOPT_NATIVE_CA</item>
+      <item>CURLSSLOPT_NO_PARTIALCHAIN</item>
       <item>CURLSSLOPT_NO_REVOKE</item>
+      <item>CURLSSLOPT_REVOKE_BEST_EFFORT</item>
       <item>CURLVERSION_NOW</item>
       <item>CURL_HTTP_VERSION_1_0</item>
       <item>CURL_HTTP_VERSION_1_1</item>
       <item>CURL_HTTP_VERSION_2</item>
       <item>CURL_HTTP_VERSION_2TLS</item>
+      <item>CURL_HTTP_VERSION_2_0</item>
       <item>CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE</item>
       <item>CURL_HTTP_VERSION_NONE</item>
+      <item>CURL_LOCK_DATA_CONNECT</item>
       <item>CURL_LOCK_DATA_COOKIE</item>
       <item>CURL_LOCK_DATA_DNS</item>
+      <item>CURL_LOCK_DATA_PSL</item>
       <item>CURL_LOCK_DATA_SSL_SESSION</item>
       <item>CURL_MAX_READ_SIZE</item>
       <item>CURL_NETRC_IGNORED</item>
@@ -1114,15 +1184,37 @@
       <item>CURL_TIMECOND_IFMODSINCE</item>
       <item>CURL_TIMECOND_IFUNMODSINCE</item>
       <item>CURL_TIMECOND_LASTMOD</item>
+      <item>CURL_TIMECOND_NONE</item>
+      <item>CURL_VERSION_ALTSVC</item>
+      <item>CURL_VERSION_ASYNCHDNS</item>
+      <item>CURL_VERSION_BROTLI</item>
+      <item>CURL_VERSION_CONV</item>
+      <item>CURL_VERSION_CURLDEBUG</item>
+      <item>CURL_VERSION_DEBUG</item>
+      <item>CURL_VERSION_GSASL</item>
+      <item>CURL_VERSION_GSSAPI</item>
+      <item>CURL_VERSION_GSSNEGOTIATE</item>
+      <item>CURL_VERSION_HSTS</item>
       <item>CURL_VERSION_HTTP2</item>
+      <item>CURL_VERSION_HTTP3</item>
       <item>CURL_VERSION_HTTPS_PROXY</item>
+      <item>CURL_VERSION_IDN</item>
       <item>CURL_VERSION_IPV6</item>
       <item>CURL_VERSION_KERBEROS4</item>
       <item>CURL_VERSION_KERBEROS5</item>
+      <item>CURL_VERSION_LARGEFILE</item>
       <item>CURL_VERSION_LIBZ</item>
+      <item>CURL_VERSION_MULTI_SSL</item>
+      <item>CURL_VERSION_NTLM</item>
+      <item>CURL_VERSION_NTLM_WB</item>
       <item>CURL_VERSION_PSL</item>
+      <item>CURL_VERSION_SPNEGO</item>
       <item>CURL_VERSION_SSL</item>
+      <item>CURL_VERSION_SSPI</item>
+      <item>CURL_VERSION_TLSAUTH_SRP</item>
+      <item>CURL_VERSION_UNICODE</item>
       <item>CURL_VERSION_UNIX_SOCKETS</item>
+      <item>CURL_VERSION_ZSTD</item>
       <item>CURL_WRAPPERS_ENABLED</item>
       <item>CURRENCY_SYMBOL</item>
       <item>CYRUS_CALLBACK_NOLITERAL</item>
@@ -1173,6 +1265,8 @@
       <item>DBASE_TYPE_DBASE</item>
       <item>DBASE_TYPE_FOXPRO</item>
       <item>DBASE_VERSION</item>
+      <item>DBA_LMDB_USE_SUB_DIR</item>
+      <item>DBA_LMDB_NO_SUB_DIR</item>
       <item>DBPLUS_ERR_CLOSE</item>
       <item>DBPLUS_ERR_CORRUPT_TUPLE</item>
       <item>DBPLUS_ERR_CRC</item>
@@ -1238,8 +1332,10 @@
       <item>DECIMAL_POINT</item>
       <item>DELETED_EVENT</item>
       <item>DIRECTORY_SEPARATOR</item>
+      <item>DISP_E_BADINDEX</item>
       <item>DISP_E_DIVBYZERO</item>
       <item>DISP_E_OVERFLOW</item>
+      <item>DISP_E_PARAMNOTFOUND</item>
       <item>DNS_A</item>
       <item>DNS_AAAA</item>
       <item>DNS_ALL</item>
@@ -1508,6 +1604,7 @@
       <item>FILTER_FLAG_ENCODE_AMP</item>
       <item>FILTER_FLAG_ENCODE_HIGH</item>
       <item>FILTER_FLAG_ENCODE_LOW</item>
+      <item>FILTER_FLAG_GLOBAL_RANGE</item>
       <item>FILTER_FLAG_HOSTNAME</item>
       <item>FILTER_FLAG_HOST_REQUIRED</item>
       <item>FILTER_FLAG_IPV4</item>
@@ -2158,6 +2255,8 @@
       <item>LIBXML_XINCLUDE</item>
       <item>LIBXSLT_DOTTED_VERSION</item>
       <item>LIBXSLT_VERSION</item>
+      <item>LOCALE_NEUTRAL</item>
+      <item>LOCAL_CREDS_PERSISTENT</item>
       <item>LOCK_EX</item>
       <item>LOCK_NB</item>
       <item>LOCK_SH</item>
@@ -2372,6 +2471,7 @@
       <item>MSG_OOB</item>
       <item>MSG_PEEK</item>
       <item>MSG_WAITALL</item>
+      <item>MSG_ZEROCOPY</item>
       <item>MSQL_ASSOC</item>
       <item>MSQL_BOTH</item>
       <item>MSQL_NUM</item>
@@ -3343,12 +3443,14 @@
       <item>POSIX_RLIMIT_DATA</item>
       <item>POSIX_RLIMIT_FSIZE</item>
       <item>POSIX_RLIMIT_INFINITY</item>
+      <item>POSIX_RLIMIT_KQUEUES</item>
       <item>POSIX_RLIMIT_LOCKS</item>
       <item>POSIX_RLIMIT_MEMLOCK</item>
       <item>POSIX_RLIMIT_MSGQUEUE</item>
       <item>POSIX_RLIMIT_NICE</item>
       <item>POSIX_RLIMIT_NOFILE</item>
       <item>POSIX_RLIMIT_NPROC</item>
+      <item>POSIX_RLIMIT_NPTS</item>
       <item>POSIX_RLIMIT_RSS</item>
       <item>POSIX_RLIMIT_RTPRIO</item>
       <item>POSIX_RLIMIT_RTTIME</item>
@@ -3655,6 +3757,7 @@
       <item>SCANDIR_SORT_ASCENDING</item>
       <item>SCANDIR_SORT_DESCENDING</item>
       <item>SCANDIR_SORT_NONE</item>
+      <item>SCM_CREDS2</item>
       <item>SEARCHD_ERROR</item>
       <item>SEARCHD_OK</item>
       <item>SEARCHD_RETRY</item>
@@ -3744,6 +3847,24 @@
       <item>SI_TIMER</item>
       <item>SI_TKILL</item>
       <item>SI_USER</item>
+      <item>SKF_AD_ALU_XOR_X</item>
+      <item>SKF_AD_CPU</item>
+      <item>SKF_AD_HATYPE</item>
+      <item>SKF_AD_IFINDEX</item>
+      <item>SKF_AD_MARK</item>
+      <item>SKF_AD_MAX</item>
+      <item>SKF_AD_NLATTR</item>
+      <item>SKF_AD_NLATTR_NEST</item>
+      <item>SKF_AD_OFF</item>
+      <item>SKF_AD_PAY_OFFSET</item>
+      <item>SKF_AD_PKTTYPE</item>
+      <item>SKF_AD_PROTOCOL</item>
+      <item>SKF_AD_QUEUE</item>
+      <item>SKF_AD_RANDOM</item>
+      <item>SKF_AD_RXHASH</item>
+      <item>SKF_AD_VLAN_TAG</item>
+      <item>SKF_AD_VLAN_TAG_PRESENT</item>
+      <item>SKF_AD_VLAN_TPID</item>
       <item>SNMP_BIT_STR</item>
       <item>SNMP_COUNTER</item>
       <item>SNMP_COUNTER64</item>
@@ -3933,6 +4054,10 @@
       <item>SODIUM_CRYPTO_BOX_SEALBYTES</item>
       <item>SODIUM_CRYPTO_BOX_SECRETKEYBYTES</item>
       <item>SODIUM_CRYPTO_BOX_SEEDBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES_MAX</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES_MIN</item>
@@ -3966,6 +4091,8 @@
       <item>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX</item>
       <item>SODIUM_CRYPTO_PWHASH_STRPREFIX</item>
       <item>SODIUM_CRYPTO_SCALARMULT_BYTES</item>
+      <item>SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES</item>
+      <item>SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_SCALARMULT_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_SECRETBOX_KEYBYTES</item>
       <item>SODIUM_CRYPTO_SECRETBOX_MACBYTES</item>
@@ -3979,6 +4106,8 @@
       <item>SODIUM_CRYPTO_SIGN_SEEDBYTES</item>
       <item>SODIUM_CRYPTO_STREAM_KEYBYTES</item>
       <item>SODIUM_CRYPTO_STREAM_NONCEBYTES</item>
+      <item>SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES</item>
+      <item>SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES</item>
       <item>SODIUM_LIBRARY_MAJOR_VERSION</item>
       <item>SODIUM_LIBRARY_MINOR_VERSION</item>
       <item>SODIUM_LIBRARY_VERSION</item>
@@ -4004,13 +4133,19 @@
       <item>SORT_NUMERIC</item>
       <item>SORT_REGULAR</item>
       <item>SORT_STRING</item>
+      <item>SO_ACCEPTFILTER</item>
+      <item>SO_BPF_EXTENSIONS</item>
       <item>SO_BROADCAST</item>
       <item>SO_DEBUG</item>
       <item>SO_DONTROUTE</item>
+      <item>SO_DONTTRUNC</item>
       <item>SO_ERROR</item>
       <item>SO_FREE</item>
+      <item>SO_INCOMING_CPU</item>
       <item>SO_KEEPALIVE</item>
       <item>SO_LINGER</item>
+      <item>SO_MARK</item>
+      <item>SO_MEMINFO</item>
       <item>SO_NOSERVER</item>
       <item>SO_OOBINLINE</item>
       <item>SO_RCVBUF</item>
@@ -4018,10 +4153,14 @@
       <item>SO_RCVTIMEO</item>
       <item>SO_REUSEADDR</item>
       <item>SO_REUSEPORT</item>
+      <item>SO_RTABLE</item>
+      <item>SO_SETFIB</item>
       <item>SO_SNDBUF</item>
       <item>SO_SNDLOWAT</item>
       <item>SO_SNDTIMEO</item>
       <item>SO_TYPE</item>
+      <item>SO_WANTMORE</item>
+      <item>SO_ZEROCOPY</item>
       <item>SPH_ATTR_BOOL</item>
       <item>SPH_ATTR_FLOAT</item>
       <item>SPH_ATTR_INTEGER</item>
@@ -4461,7 +4600,14 @@
       <item>S_SESSION</item>
       <item>S_SQL</item>
       <item>S_VARS</item>
+      <item>TCP_CONGESTION</item>
+      <item>TCP_DEFER_ACCEPT</item>
+      <item>TCP_KEEPALIVE</item>
+      <item>TCP_KEEPCNT</item>
+      <item>TCP_KEEPIDLE</item>
+      <item>TCP_KEEPINTVL</item>
       <item>TCP_NODELAY</item>
+      <item>TCP_NOTSENT_LOWAT</item>
       <item>THOUSANDS_SEP</item>
       <item>THOUSEP</item>
       <item>TIDY_NODETYPE_ASP</item>
@@ -4972,6 +5118,7 @@
       <item>VT_I1</item>
       <item>VT_I2</item>
       <item>VT_I4</item>
+      <item>VT_I8</item>
       <item>VT_INT</item>
       <item>VT_NULL</item>
       <item>VT_R4</item>
@@ -4979,6 +5126,7 @@
       <item>VT_UI1</item>
       <item>VT_UI2</item>
       <item>VT_UI4</item>
+      <item>VT_UI8</item>
       <item>VT_UINT</item>
       <item>VT_UNKNOWN</item>
       <item>VT_VARIANT</item>
@@ -5905,6 +6053,7 @@
       <item>curl_share_strerror</item>
       <item>curl_strerror</item>
       <item>curl_unescape</item>
+      <item>curl_upkeep</item>
       <item>curl_version</item>
       <item>current</item>
       <item>cyrus_authenticate</item>
@@ -7139,6 +7288,7 @@
       <item>imap_header</item>
       <item>imap_headerinfo</item>
       <item>imap_headers</item>
+      <item>imap_is_open</item>
       <item>imap_last_error</item>
       <item>imap_list</item>
       <item>imap_listmailbox</item>
@@ -7229,6 +7379,7 @@
       <item>ini_alter</item>
       <item>ini_get</item>
       <item>ini_get_all</item>
+      <item>ini_parse_quantity</item>
       <item>ini_restore</item>
       <item>ini_set</item>
       <item>inotify_add_watch</item>
@@ -7425,6 +7576,7 @@
       <item>libxml_clear_errors</item>
       <item>libxml_disable_entity_loader</item>
       <item>libxml_get_errors</item>
+      <item>libxml_get_external_entity_loader</item>
       <item>libxml_get_last_error</item>
       <item>libxml_set_external_entity_loader</item>
       <item>libxml_set_streams_context</item>
@@ -7648,6 +7800,7 @@
       <item>memcache_debug</item>
       <item>memory_get_peak_usage</item>
       <item>memory_get_usage</item>
+      <item>memory_reset_peak_usage</item>
       <item>metaphone</item>
       <item>method_exists</item>
       <item>mhash</item>
@@ -7783,6 +7936,7 @@
       <item>mysqli_error_list</item>
       <item>mysqli_escape_string</item>
       <item>mysqli_execute</item>
+      <item>mysqli_execute_query</item>
       <item>mysqli_fetch_all</item>
       <item>mysqli_fetch_array</item>
       <item>mysqli_fetch_assoc</item>
@@ -8274,6 +8428,7 @@
       <item>oci_set_edition</item>
       <item>oci_set_module_name</item>
       <item>oci_set_prefetch</item>
+      <item>oci_set_prefetch_lob</item>
       <item>oci_statement_type</item>
       <item>oci_unregister_taf_callback</item>
       <item>octdec</item>
@@ -8285,6 +8440,9 @@
       <item>odbc_columns</item>
       <item>odbc_commit</item>
       <item>odbc_connect</item>
+      <item>odbc_connection_string_is_quoted</item>
+      <item>odbc_connection_string_quote</item>
+      <item>odbc_connection_string_should_quote</item>
       <item>odbc_cursor</item>
       <item>odbc_data_source</item>
       <item>odbc_do</item>
@@ -8354,6 +8512,7 @@
       <item>opendir</item>
       <item>openlog</item>
       <item>openssl_cipher_iv_length</item>
+      <item>openssl_cipher_key_length</item>
       <item>openssl_csr_export</item>
       <item>openssl_csr_export_to_file</item>
       <item>openssl_csr_get_public_key</item>
@@ -9254,6 +9413,7 @@
       <item>sodium_crypto_stream_xchacha20</item>
       <item>sodium_crypto_stream_xchacha20_keygen</item>
       <item>sodium_crypto_stream_xchacha20_xor</item>
+      <item>sodium_crypto_stream_xchacha20_xor_ic</item>
       <item>sodium_crypto_stream_xor</item>
       <item>sodium_hex2bin</item>
       <item>sodium_increment</item>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -16,15 +16,15 @@
 		[Special cases: %prog and %default - see http://docs.python.org/library/optparse.html]
 	-->
 	<!ENTITY strsubstitution_py2 "&#37;(?:(?:\([a-zA-Z0-9_]+\))?[#0\- +]?(?:[1-9][0-9]*|\*)?(?:\.(?:[1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG&#37;]|prog|default)">
-	<!-- http://docs.python.org/2/library/string.html#format-string-syntax:
+	<!-- http://docs.python.org/3/library/string.html#format-string-syntax:
 	     replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
 	     field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
 	     arg_name          ::=  [identifier | integer]
 	     attribute_name    ::=  identifier
 	     element_index     ::=  integer | index_string
 	     index_string      ::=  <any source character except "]"> +
-	     conversion        ::=  "r" | "s"
-	     format_spec       ::=  [[fill]align][sign][#][0][width][,][.precision][type]
+	     conversion        ::=  "r" | "s" | "a"
+	     format_spec       ::=  [[fill]align][sign][z][#][0][width][_,][.precision][type]
 	     fill              ::=  <any character>
 	     align             ::=  "<" | ">" | "=" | "^"
 	     sign              ::=  "+" | "-" | " "
@@ -32,7 +32,8 @@
 	     precision         ::=  integer
 	     type              ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
 	-->
-	<!ENTITY strsubstitution_py3 "\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?(?:![rs])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX&#37;]?)?\}">
+	<!ENTITY format_spec "(?:![rsa])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?z?#?0?[0-9]*[_,]?(?:\.[0-9]+)?[bcdeEfFgGnosxX&#37;]?)?">
+	<!ENTITY strsubstitution_py3 "\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?&format_spec;?\}">
 
 	<!ENTITY rawString "(?:ru|u?r|)(?:'(?:[^']++|\\')*+'|&quot;(?:[^&quot;]++|\\&quot;)*+&quot;)">
 	<!ENTITY formatString "(?:r?f|fr?)(?:'(?:[^'{]++|\\'|\{\{|\{[^}]++\})*+'|&quot;(?:[^&quot;]++|\\&quot;|\{\{|\{[^}]*+\})*+&quot;)">
@@ -52,7 +53,7 @@
 <!-- v2.07 add support for %prog and co, see bug 142832 -->
 <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
 <!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="26" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="27" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -313,6 +314,8 @@
 			<item>__enter__</item>
 			<item>__exit__</item>
 			<item>__match_args__</item>
+			<item>__buffer__</item>
+			<item>__release_buffer__</item>
 			<item>__bytes__</item>
 			<item>__format__</item>
 			<item>__next__</item>
@@ -410,23 +413,23 @@
 			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
 				<DetectSpaces attribute="Normal Text"/>
 
-				<keyword attribute="Import" String="import" context="#stay"/>
-				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
-				<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
+				<DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>
+				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
+				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
+
+				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
+
+				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
 				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
+				<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
 				<keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>
 				<keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>
-				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
-				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
-				<keyword attribute="Extensions" String="bindings" context="#stay"/>
+				<keyword attribute="Import" String="import" context="#stay"/>
 				<keyword attribute="Exceptions" String="exceptions" context="#stay"/>
 				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
-
-				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
-				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
-				<DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>
-
-				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
+				<keyword attribute="Extensions" String="bindings" context="#stay"/>
 
 				<IncludeRules context="Number" />
 				<IncludeRules context="CommentVariants" />
@@ -491,7 +494,7 @@
 				<LineContinue attribute="Normal Text" context="#pop!CheckForStringNext"/>
 			</context>
 
-			<context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+			<context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
 				<DetectSpaces/>
 				<LineContinue attribute="Normal Text" context="#stay"/>
 				<IncludeRules context="StringVariants"/>
@@ -509,16 +512,16 @@
 				<RegExpr attribute="String" String="u?'"                  insensitive="true" context="#pop!Single A-string"/>
 				<RegExpr attribute="String" String="u?&quot;"             insensitive="true" context="#pop!Single Q-string"/>
 
-				<RegExpr attribute="Raw String" String="u?r'''"                insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
-				<RegExpr attribute="Raw String" String="u?r&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="Raw String" String="u?r'"                  insensitive="true" context="#pop!Raw A-string"/>
-				<RegExpr attribute="Raw String" String="u?r&quot;"             insensitive="true" context="#pop!Raw Q-string"/>
-
 				<StringDetect attribute="F-String" String="f'''"                insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>
 				<StringDetect attribute="F-String" String="f&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>
 				<StringDetect attribute="F-String" String="f'"                  insensitive="true" context="#pop!Single A-F-String"/>
 				<StringDetect attribute="F-String" String="f&quot;"             insensitive="true" context="#pop!Single Q-F-String"/>
 
+				<RegExpr attribute="Raw String" String="u?r'''"                insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
+				<RegExpr attribute="Raw String" String="u?r&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
+				<RegExpr attribute="Raw String" String="u?r'"                  insensitive="true" context="#pop!Raw A-string"/>
+				<RegExpr attribute="Raw String" String="u?r&quot;"             insensitive="true" context="#pop!Raw Q-string"/>
+
 				<RegExpr attribute="Raw F-String" String="(?:fr|rf)'''"                insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>
 				<RegExpr attribute="Raw F-String" String="(?:fr|rf)&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>
 				<RegExpr attribute="Raw F-String" String="(?:fr|rf)'"                  insensitive="true" context="#pop!Raw A-F-String"/>
@@ -653,8 +656,7 @@
 			</context>
 			<context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">
 				<DetectChar attribute="Error" char="\" context="#pop"/>
-				<!-- format specifiers: [[fill]align][sign][#][0][minimumwidth][.precision][type] -->
-				<RegExpr attribute="String Substitution" String="(?:![rsa])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#pop"/>
+				<RegExpr attribute="String Substitution" String="&format_spec;\}" context="#pop"/>
 				<IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->
 			</context>
 
diff --git a/xml/qml.xml b/xml/qml.xml
--- a/xml/qml.xml
+++ b/xml/qml.xml
@@ -4,7 +4,7 @@
   <!ENTITY identifier "[a-zA-Z_$][\w$]*">
 ]>
 <!-- Author: Milian Wolff <mail@milianw.de> -->
-<language name="QML" version="11" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes"
+<language name="QML" version="13" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes"
           mimetype="text/x-qml;application/x-qml" indenter="cstyle"
           author="Milian Wolff (mail@milianw.de)" license="MIT">
   <highlighting>
@@ -125,15 +125,20 @@
         <DetectChar attribute="String" context="String" char="&quot;" />
         <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
         <!-- Normal##JavaScript -->
+        <IncludeRules context="FindSomeSymbols##JavaScript" />
+        <AnyChar context="#stay" String="[(" />
+        <AnyChar context="NoRegExp##JavaScript" String="])" />
         <IncludeRules context="FindNumbers##JavaScript" />
         <IncludeRules context="FindKeywords##JavaScript" />
         <IncludeRules context="FindStrings##JavaScript" />
         <RegExpr attribute="Objects" context="FindMemberObjectMath##JavaScript" String="\bMath(?=\s*\.)" />
         <RegExpr attribute="Objects" context="#stay" String="\b[A-Z][\w$]*(?=\s*\.)" />
+        <IncludeRules context="FindMembers##JavaScript" />
         <IncludeRules context="FindObjectMembersAndFunctions##JavaScript" />
         <IncludeRules context="JSBase##JavaScript" />
       </context>
       <context attribute="ImportValue" lineEndContext="#pop" name="Import">
+        <IncludeRules context="FindComments##JavaScript" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Property">
         <WordDetect attribute="Property Type" context="#stay" String="alias" />
@@ -141,6 +146,7 @@
         <DetectSpaces />
         <DetectIdentifier />
         <DetectChar char=":" context="#pop" />
+        <IncludeRules context="FindComments##JavaScript" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Signal">
         <DetectSpaces />
@@ -160,7 +166,7 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="Object">
         <!--DetectIdentifier-->
-        <RegExpr attribute="Property Type" String="&identifier;\s*(?=:)" />
+        <RegExpr attribute="Property Type" String="&identifier;\s*(?=(\/\*.*?\*\/)?:)" />
         <!-- Avoid highlighting Property Type before ":" in conditional expressions. -->
         <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\}]*&identifier;\s*\:)" />
         <DetectChar attribute="Normal Text" char="}" endRegion="Brace" context="#pop" />
diff --git a/xml/r.xml b/xml/r.xml
--- a/xml/r.xml
+++ b/xml/r.xml
@@ -8,7 +8,7 @@
 	R      : http://www.r-project.org/
 	RKWard : http://rkward.kde.org/
 	-->
-<language version="13" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="14" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -85,6 +85,10 @@
 			<AnyChar attribute="Error" context="#stay" String="*/&lt;&gt;=|&amp;:^@$~"/>
 		</context>
 
+		<context attribute="Numeric Suffix" lineEndContext="#pop" name="NumericSuffix" fallthrough="true" fallthroughContext="#pop">
+			<AnyChar attribute="Numeric Suffix" context="#pop" String="Li"/>
+		</context>
+
 		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
 			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>
 			<DetectChar attribute="Comment" context="Comment" char="#"/>
@@ -108,7 +112,7 @@
 			<keyword attribute="Control Structure" context="#stay" String="controls"/>
 			<keyword attribute="Reserved Words" context="#stay" String="words"/>
 			<Float attribute="Float" context="#stay"/>
-			<Int attribute="Int" context="#stay"/>
+			<Int attribute="Int" context="NumericSuffix"/>
 			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])|\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
 			<DetectChar attribute="Symbol" context="parenthesis" char="("/>
 
@@ -156,6 +160,7 @@
 		<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
 		<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
 		<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
+		<itemData name="Numeric Suffix" defStyleNum="dsDataType" spellChecking="false"/>
 	</itemDatas>
 </highlighting>
 
diff --git a/xml/sass.xml b/xml/sass.xml
--- a/xml/sass.xml
+++ b/xml/sass.xml
@@ -6,7 +6,7 @@
   <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
 ]>
 
-<language name="SASS" version="7" kateversion="5.53" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
+<language name="SASS" version="8" kateversion="5.53" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
 
     <highlighting>
         <list name="properties">
@@ -112,7 +112,7 @@
 
             <!-- same as SCSS -->
             <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#pop" 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|fr)\b)" />
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
diff --git a/xml/scss.xml b/xml/scss.xml
--- a/xml/scss.xml
+++ b/xml/scss.xml
@@ -34,7 +34,7 @@
 
 -->
 
-<language name="SCSS" version="14" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="SCSS" version="15" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
     <highlighting>
         <list name="properties">
@@ -643,7 +643,7 @@
             </context>
 
             <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#pop" 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|fr)\b)" />
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
diff --git a/xml/typescript.xml b/xml/typescript.xml
--- a/xml/typescript.xml
+++ b/xml/typescript.xml
@@ -13,6 +13,12 @@
 	<!ENTITY functionSuffix "(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()">
 
 	<!ENTITY codeContent    "&quot;(?:[^&quot;]|\\.)*&quot;|'(?:[^']|\\.)*'|`(?:[^`]|\\.)`|/\*.*\*/|/(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/">
+
+  <!-- https://tc39.es/ecma262/#sec-literals-numeric-literals -->
+  <!ENTITY DecimalIntegerLiteral "(0|[1-9][0-9]*+(_[0-9]++)*+)">
+  <!ENTITY DecimalDigits "([0-9]++(_[0-9]++)*+)">
+  <!ENTITY ExponentPart "([eE][+-]?&DecimalDigits;)">
+  <!ENTITY float "\b&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
 ]>
 
 <!--
@@ -61,7 +67,7 @@
 -->
 
 <language name="TypeScript"
-          version="16"
+          version="17"
           kateversion="5.53"
           section="Scripts"
           extensions="*.ts;*.mts;*.cts"
@@ -242,10 +248,26 @@
 		</context>
 
 		<context name="Normal Pt1" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="JSBaseSomeSymboles##JavaScript" />
+			<DetectChar context="Types" attribute="Symbol" char=":" />
+
+			<!-- Symbols & Operators -->
+			<!-- NOTE: - The brackets {}()[] are highlighted as Normal Text.
+			           - Bracket highlighting rules must be explicitly included here
+			             for the "Animate Bracket Highlighting" feature to work properly. -->
+			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<DetectChar context="#stay" attribute="Normal Text" char="(" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char=")" />
+
 			<StringDetect context="#stay" attribute="Symbol" String="..." />
 			<IncludeRules context="FindNumbers" />
+			<DetectChar context="MemberObject" attribute="Symbol" char="." />
 			<IncludeRules context="FindStrings" />
 
+			<IncludeRules context="FindPrivateOperator##JavaScript" />
+
 			<!-- Abstract -->
 			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
 			<!-- New -->
@@ -271,7 +293,6 @@
 			<IncludeRules context="BuiltInConstants" />
 			<!-- Objects -->
 			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
-			<DetectChar context="MemberObject" attribute="Symbol" char="." />
 
 			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
 			<!-- Import -->
@@ -289,16 +310,6 @@
 			<!-- Tagged Template Literals -->
 			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*`)" />
 
-			<!-- Symbols & Operators -->
-			<!-- NOTE: - The brackets {}()[] are highlighted as Normal Text.
-			           - Bracket highlighting rules must be explicitly included here
-			             for the "Animate Bracket Highlighting" feature to work properly. -->
-			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
-			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
-			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
-			<DetectChar context="#stay" attribute="Normal Text" char="(" />
-			<DetectChar context="NoRegExp" attribute="Normal Text" char=")" />
-
 			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="?" /> <!-- Null operator -->
 			<!-- Conditional Expressions:
 			       CASE 1:  '?' ... <identifier> ':'
@@ -308,7 +319,6 @@
 			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=\s*(?:(?:[^/&quot;'`\s\?:\.;,\=\}\]\)]|&codeContent;)(?:[^/&quot;'`]|&codeContent;)*)?&identifier;\s*(?:/\*.*\*/\s*)*:|(?:&amp;&amp;|\|\||\s*(?:/\*.*\*/\s*)*&identifier;)?&endLine;)" minimal="true" />
 
 			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
-			<DetectChar context="Types" attribute="Symbol" char=":" />
 			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
 
 			<IncludeRules context="JSBase##JavaScript" />
@@ -375,12 +385,22 @@
 
 		<!-- Numbers -->
 		<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;|(?:\.\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;" />
+			<RegExpr attribute="Float" context="NoRegExp" String="&float;" />
+			<AnyChar context="Integer" String="0123456789" lookAhead="1"/>
 		</context>
+		<!-- same as JS, but with Hexadecimal instead of Hex -->
+		<context name="Integer" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr attribute="Hexadecimal" context="#pop!NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
+			<!-- 07 is octal, 08 is decimal -->
+			<RegExpr attribute="Octal" context="#pop!NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
+			<RegExpr attribute="Binary" context="#pop!NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
+			<!-- 0000_8 is invalid -->
+			<RegExpr attribute="Decimal" context="#pop!NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
+		</context>
+		<context attribute="Normal Text" lineEndContext="#pop" name="NumericSufix" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectChar attribute="Normal Text" context="#pop!NoRegExp" char="n" />
+			<IncludeRules context="NumericSufixError##JavaScript" />
+		</context>
 
 		<!-- Function Name -->
 		<context name="Function" attribute="Normal Text" lineEndContext="#pop">
@@ -575,7 +595,7 @@
 			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="variable_property" />
 			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
 
-			<RegExpr context="#stay" attribute="Normal Text" String="#(?=&identifier;)" /> <!-- Private-Named Instance Fields -->
+			<IncludeRules context="FindPrivateOperator##JavaScript" />
 			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" />
 			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
 			<IncludeRules context="NoRegExp" />
@@ -748,4 +768,4 @@
 </general>
 
 </language>
-<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->
+<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; -->
diff --git a/xml/zsh.xml b/xml/zsh.xml
--- a/xml/zsh.xml
+++ b/xml/zsh.xml
@@ -77,7 +77,7 @@
         <!ENTITY int "(?:[0-9]++[_0-9]*+)">
         <!ENTITY exp "(?:[eE][-+]?&int;)">
 ]>
-<language name="Zsh" version="31" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+<language name="Zsh" version="32" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
 
   <highlighting>
     <list name="keywords">
@@ -844,7 +844,11 @@
         <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">
+        <AnyChar context="ZshOneLine" String="&amp;|;`" lookAhead="1"/>
+        <IncludeRules context="CommandArgs"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ZshOneLine" fallthroughContext="Command">
         <IncludeRules context="Start"/>
       </context>
 
@@ -853,7 +857,7 @@
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>
+        <IncludeRules context="HereDocQ" />
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText">
@@ -861,27 +865,32 @@
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>
+        <IncludeRules context="HereDocIQ" />
       </context>
 
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">
+        <!-- Only if the redirect is before the command, but as this is too complicated,
+             check if the redirect is at the beginning of the line. -->
+        <StringDetect attribute="Redirection" context="ZshOneLine" String="%1" dynamic="true" firstNonSpace="1"/>
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+      </context>
+
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>
+        <IncludeRules context="HereDocQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>
+        <IncludeRules context="HereDocIQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
