diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,28 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.10
+
+  * Add instructions for submitting patches upstream to KDE (#106).
+
+  * Synced syntax definitions from KDE repo.  Note that fortran
+    has split into two: `fortran-fixed` and `fortran-free`.
+
+  * Add test to ensure that all regexes in rules compile.
+
+  * Regex: allow unescaped `}`.
+
+  * Regex: allow empty regexes and groups.
+
+  * Regex: support lazy and possessive quantifiers (#109).
+
+  * Regex: support recursive regexes `(?R)` (#108).
+
+  * Hide invisible line numbers from keyboard focus (#107, d10n).
+    This fixes tabbing through elements on a page.
+
+  * Remove some obsolete patches for xml definitions.
+
+
 ## 0.9
 
   * Use a pure Haskell regex implementation (in unexported module
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.9
+version:             0.10
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Regex/KDE/Compile.hs b/src/Regex/KDE/Compile.hs
--- a/src/Regex/KDE/Compile.hs
+++ b/src/Regex/KDE/Compile.hs
@@ -37,6 +37,7 @@
 
 pRegex :: Bool -> RParser Regex
 pRegex caseSensitive =
+  option MatchNull $
   foldr MatchAlt
     <$> (pAltPart caseSensitive)
     <*> (many $ lift (char '|') *> (pAltPart caseSensitive <|> pure mempty))
@@ -54,13 +55,14 @@
      lift . pSuffix
 
 pParenthesized :: Bool -> RParser Regex
-pParenthesized caseSensitive = do
+pParenthesized caseSensitive = (do
   _ <- lift (satisfy (== 40))
   modifier <- lift (satisfy (== 63) *> pGroupModifiers)
                 <|> (MatchCapture <$> (modify (+ 1) *> get))
   contents <- pRegex caseSensitive
   _ <- lift (satisfy (== 41))
-  return $ modifier contents
+  return $ modifier contents)
+  <|> Recurse <$ (lift (string "(?R)" <|> string "(?0)"))
 
 pGroupModifiers :: Parser (Regex -> Regex)
 pGroupModifiers =
@@ -88,7 +90,7 @@
           (Just n, Nothing)  -> atleast n re
           (Nothing, Just n)  -> atmost n re
           (Just m, Just n)   -> between m n re
-    _   -> fail "pSuffix encountered impossible byte") >>= pSuffix
+    _   -> fail "pSuffix encountered impossible byte") >>= pQuantifierModifier
  where
    atmost 0 _ = MatchNull
    atmost n r = MatchAlt (mconcat (replicate n r)) (atmost (n-1) r)
@@ -98,6 +100,11 @@
 
    atleast n r = mconcat (replicate n r) <> MatchAlt (MatchSome r) MatchNull
 
+pQuantifierModifier :: Regex -> Parser Regex
+pQuantifierModifier re = option re $
+  (Possessive re <$ satisfy (== 43)) <|>
+  (Lazy re <$ satisfy (==63))
+
 pRegexChar :: Bool -> Parser Regex
 pRegexChar caseSensitive = do
   w <- satisfy $ const True
@@ -236,7 +243,6 @@
 isSpecial 42 = True -- '*'
 isSpecial 43 = True -- '+'
 isSpecial 123 = True -- '{'
-isSpecial 125 = True -- '}'
 isSpecial 91 = True -- '['
 isSpecial 93 = True -- ']'
 isSpecial 37 = True -- '%'
diff --git a/src/Regex/KDE/Match.hs b/src/Regex/KDE/Match.hs
--- a/src/Regex/KDE/Match.hs
+++ b/src/Regex/KDE/Match.hs
@@ -25,18 +25,20 @@
    Match { matchBytes    :: !ByteString
          , matchOffset   :: !Int
          , matchCaptures :: !(M.IntMap (Int, Int))
-                       -- starting offset, length in bytes
+                                  -- starting offset, length in bytes
          } deriving (Show, Eq)
 
--- longer matches are <=
+-- preferred matches are <=
 instance Ord Match where
-  m1 <= m2 = matchOffset m1 >= matchOffset m2 &&
-             matchCaptures m1 >= matchCaptures m2
+  m1 <= m2
+    | matchOffset m1 > matchOffset m2 = True
+    | matchOffset m1 < matchOffset m2 = False
+    | otherwise = matchCaptures m1 >= matchCaptures m2
 
 mapMatching :: (Match -> Match) -> Set Match -> Set Match
 mapMatching f = Set.filter ((>= 0) . matchOffset) . Set.map f
 
--- we take the n longest matches to avoid pathological slowdown
+-- we take the n best matches to avoid pathological slowdown
 sizeLimit :: Int
 sizeLimit = 2000
 
@@ -46,60 +48,89 @@
               then Set.take sizeLimit ms
               else ms
 
-exec :: Direction -> Regex -> Set Match -> Set Match
-exec _ MatchNull = id
-exec dir (MatchDynamic n) = -- if this hasn't been replaced, match literal
-  exec dir (MatchChar (== '%') <>
+-- first argument is the "top-level" regex, needed for Recurse.
+exec :: Regex -> Direction -> Regex -> Set Match -> Set Match
+exec _ _ MatchNull = id
+exec top dir (Lazy re) = -- note: the action is below under Concat
+  exec top dir (MatchConcat (Lazy re) MatchNull)
+exec top dir (Possessive re) =
+  foldr
+    (\elt s -> case Set.lookupMin (exec top dir re (Set.singleton elt)) of
+                 Nothing -> s
+                 Just m  -> Set.insert m s)
+    mempty
+exec top dir (MatchDynamic n) = -- if this hasn't been replaced, match literal
+  exec top dir (MatchChar (== '%') <>
             mconcat (map (\c -> MatchChar (== c)) (show n)))
-exec _ AssertEnd = Set.filter (\m -> matchOffset m == B.length (matchBytes m))
-exec _ AssertBeginning = Set.filter (\m -> matchOffset m == 0)
-exec _ (AssertPositive dir regex) =
-  Set.filter (\m -> not (null (exec dir regex (Set.singleton m))))
-exec _ (AssertNegative dir regex) =
-  Set.filter (\m -> null (exec dir regex (Set.singleton m)))
-exec _ AssertWordBoundary = Set.filter atWordBoundary
-exec Forward MatchAnyChar = mapMatching $ \m ->
+exec _ _ AssertEnd = Set.filter (\m -> matchOffset m == B.length (matchBytes m))
+exec _ _ AssertBeginning = Set.filter (\m -> matchOffset m == 0)
+exec top _ (AssertPositive dir regex) =
+  Set.filter (\m -> not (null (exec top dir regex (Set.singleton m))))
+exec top _ (AssertNegative dir regex) =
+  Set.filter (\m -> null (exec top dir regex (Set.singleton m)))
+exec _ _ AssertWordBoundary = Set.filter atWordBoundary
+exec _ Forward MatchAnyChar = mapMatching $ \m ->
   case U.decode (B.drop (matchOffset m) (matchBytes m)) of
     Nothing -> m{ matchOffset = - 1}
     Just (_,n) -> m{ matchOffset = matchOffset m + n }
-exec Backward MatchAnyChar = mapMatching $ \m ->
+exec _ Backward MatchAnyChar = mapMatching $ \m ->
   case lastCharOffset (matchBytes m) (matchOffset m) of
     Nothing  -> m{ matchOffset = -1 }
     Just off -> m{ matchOffset = off }
-exec Forward (MatchChar f) = mapMatching $ \m ->
+exec _ Forward (MatchChar f) = mapMatching $ \m ->
   case U.decode (B.drop (matchOffset m) (matchBytes m)) of
     Just (c,n) | f c -> m{ matchOffset = matchOffset m + n }
     _ -> m{ matchOffset = -1 }
-exec Backward (MatchChar f) = mapMatching $ \m ->
+exec _ Backward (MatchChar f) = mapMatching $ \m ->
   case lastCharOffset (matchBytes m) (matchOffset m) of
     Nothing  -> m{ matchOffset = -1 }
     Just off ->
       case U.decode (B.drop off (matchBytes m)) of
         Just (c,_) | f c -> m{ matchOffset = off }
         _                -> m{ matchOffset = -1 }
-exec dir (MatchConcat (MatchConcat r1 r2) r3) =
-  exec dir (MatchConcat r1 (MatchConcat r2 r3))
-exec Forward (MatchConcat r1 r2) = -- TODO longest match first
-  exec Forward r2 . prune . exec Forward r1
-exec Backward (MatchConcat r1 r2) = exec Backward r1 . exec Backward r2
-exec dir (MatchAlt r1 r2) = \ms -> exec dir r1 ms <> exec dir r2 ms
-exec dir (MatchSome re) = go
+exec top dir (MatchConcat (MatchConcat r1 r2) r3) =
+  exec top dir (MatchConcat r1 (MatchConcat r2 r3))
+exec top Forward (MatchConcat (Lazy r1) r2) =
+  Set.foldl Set.union mempty . Set.map
+    (\m ->
+      let ms1 = exec top Forward r1 (Set.singleton m)
+       in if Set.null ms1
+             then ms1
+             else go ms1)
  where
-  go ms = case exec dir re ms of
+  go ms = case Set.lookupMax ms of   -- find shortest match
+            Nothing -> Set.empty
+            Just m' ->
+              let s' = exec top Forward r2 (Set.singleton m')
+               in if Set.null s'
+                     then go (Set.delete m' ms)
+                     else s'
+exec top Forward (MatchConcat r1 r2) = -- TODO longest match first
+  \ms ->
+    let ms1 = exec top Forward r1 ms
+     in if Set.null ms1
+           then ms1
+           else exec top Forward r2 (prune ms1)
+exec top Backward (MatchConcat r1 r2) =
+  exec top Backward r1 . exec top Backward r2
+exec top dir (MatchAlt r1 r2) = \ms -> exec top dir r1 ms <> exec top dir r2 ms
+exec top dir (MatchSome re) = go
+ where
+  go ms = case exec top dir re ms of
             ms' | Set.null ms' -> Set.empty
                 | ms' == ms    -> ms
                 | otherwise    -> let ms'' = prune ms'
                                    in ms'' <> go ms''
-exec dir (MatchCapture i re) =
+exec top dir (MatchCapture i re) =
   Set.foldr Set.union Set.empty .
    Set.map (\m ->
-     Set.map (captureDifference m) (exec dir re (Set.singleton m)))
+     Set.map (captureDifference m) (exec top dir re (Set.singleton m)))
  where
     captureDifference m m' =
       let len = matchOffset m' - matchOffset m
       in  m'{ matchCaptures = M.insert i (matchOffset m, len)
                                   (matchCaptures m') }
-exec dir (MatchCaptured n) = mapMatching matchCaptured
+exec _ dir (MatchCaptured n) = mapMatching matchCaptured
  where
    matchCaptured m =
      case M.lookup n (matchCaptures m) of
@@ -114,7 +145,9 @@
                         -> m{ matchOffset = matchOffset m - B.length capture }
                      _  -> m{ matchOffset = -1 }
        Nothing -> m{ matchOffset = -1 }
-
+exec top dir Recurse = \ms -> if Set.null ms
+                                 then ms
+                                 else exec top dir top ms
 
 atWordBoundary :: Match -> Bool
 atWordBoundary m =
@@ -154,7 +187,7 @@
            -> Maybe (ByteString, M.IntMap (Int, Int))
 matchRegex re bs =
   toResult <$> Set.lookupMin
-               (exec Forward re (Set.singleton (Match bs 0 M.empty)))
+               (exec re Forward re (Set.singleton (Match bs 0 M.empty)))
  where
    toResult m = (B.take (matchOffset m) (matchBytes m), (matchCaptures m))
 
diff --git a/src/Regex/KDE/Regex.hs b/src/Regex/KDE/Regex.hs
--- a/src/Regex/KDE/Regex.hs
+++ b/src/Regex/KDE/Regex.hs
@@ -28,6 +28,9 @@
   AssertEnd |
   AssertPositive !Direction !Regex |
   AssertNegative !Direction !Regex |
+  Possessive !Regex |
+  Lazy !Regex |
+  Recurse |
   MatchNull
 
 instance Show Regex where
@@ -48,6 +51,9 @@
                   show re <> ")"
   show (AssertNegative dir re) = "(AssertNegativeLookahead " <>
                   show dir <> " " <> show re <> ")"
+  show (Possessive re) = "(Possessive " <> show re <> ")"
+  show (Lazy re) = "(Lazy " <> show re <> ")"
+  show Recurse = "Recurse"
   show MatchNull = "MatchNull"
 
 instance Semigroup Regex where
diff --git a/src/Skylighting/Core.hs b/src/Skylighting/Core.hs
--- a/src/Skylighting/Core.hs
+++ b/src/Skylighting/Core.hs
@@ -59,6 +59,8 @@
 lookupSyntax lang syntaxmap
   -- special cases:
   | lang == Text.pack "csharp" = lookupSyntax (Text.pack "cs") syntaxmap
+  | lang == Text.pack "fortran" = lookupSyntax (Text.pack "for")
+              syntaxmap
   | otherwise =
     syntaxByName syntaxmap lang `mplus`
     syntaxByShortName syntaxmap lang `mplus`
diff --git a/src/Skylighting/Format/HTML.hs b/src/Skylighting/Format/HTML.hs
--- a/src/Skylighting/Format/HTML.hs
+++ b/src/Skylighting/Format/HTML.hs
@@ -95,6 +95,10 @@
                      then mempty
                      else customAttribute (fromString "aria-hidden")
                            (fromString "true")) -- see jgm/pandoc#6352
+               ! (if numberLines opts
+                     then mempty
+                     else customAttribute (fromString "tabindex")
+                           (fromString "-1"))
                $ mempty
            mapM_ (tokenToHtml opts) cont
   where  lineNum = toValue prefixedLineNo
diff --git a/test/expected/abc.d.native b/test/expected/abc.d.native
--- a/test/expected/abc.d.native
+++ b/test/expected/abc.d.native
@@ -1,10 +1,11 @@
-[ [ ( KeywordTok , "import" )
-  , ( NormalTok
-    , " std.stdio, std.ascii, std.algorithm, std.array, std.range;"
+[ [ ( PreprocessorTok , "import" )
+  , ( ImportTok
+    , " std.stdio, std.ascii, std.algorithm, std.array, std.range"
     )
+  , ( NormalTok , ";" )
   ]
 , []
-, [ ( KeywordTok , "alias" )
+, [ ( WarningTok , "alias" )
   , ( NormalTok , " Block = " )
   , ( DataTypeTok , "char" )
   , ( NormalTok , "[" )
@@ -14,23 +15,23 @@
 , []
 , [ ( DataTypeTok , "bool" )
   , ( NormalTok , " canMakeWord(" )
-  , ( KeywordTok , "immutable" )
+  , ( FunctionTok , "immutable" )
   , ( NormalTok , " Block[] blocks, " )
-  , ( KeywordTok , "in" )
+  , ( AttributeTok , "in" )
   , ( NormalTok , " " )
   , ( BuiltInTok , "string" )
   , ( NormalTok , " word) " )
-  , ( KeywordTok , "pure" )
+  , ( FunctionTok , "pure" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "nothrow" )
+  , ( FunctionTok , "nothrow" )
   ]
 , [ ( KeywordTok , "in " ) , ( NormalTok , "{" ) ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "assert" )
+  , ( AttributeTok , "assert" )
   , ( NormalTok , "(blocks.all!(w => w[].all!isAlpha));" )
   ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "assert" )
+  , ( AttributeTok , "assert" )
   , ( NormalTok , "(word.all!isAlpha);" )
   ]
 , [ ( NormalTok , "} " )
@@ -42,13 +43,13 @@
   , ( NormalTok , " inner(" )
   , ( BuiltInTok , "size_t" )
   , ( NormalTok , "[] indexes, " )
-  , ( KeywordTok , "in" )
+  , ( AttributeTok , "in" )
   , ( NormalTok , " " )
   , ( BuiltInTok , "string" )
   , ( NormalTok , " w) " )
-  , ( KeywordTok , "pure" )
+  , ( FunctionTok , "pure" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "nothrow" )
+  , ( FunctionTok , "nothrow" )
   , ( NormalTok , " {" )
   ]
 , [ ( NormalTok , "        " )
@@ -58,12 +59,12 @@
 , [ ( NormalTok , "            " )
   , ( KeywordTok , "return" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "true" )
+  , ( AttributeTok , "true" )
   , ( NormalTok , ";" )
   ]
 , []
 , [ ( NormalTok , "        " )
-  , ( KeywordTok , "immutable" )
+  , ( FunctionTok , "immutable" )
   , ( NormalTok , " c = w[" )
   , ( DecValTok , "0" )
   , ( NormalTok , "].toUpper;" )
@@ -71,7 +72,7 @@
 , [ ( NormalTok , "        " )
   , ( KeywordTok , "foreach" )
   , ( NormalTok , " (" )
-  , ( KeywordTok , "ref" )
+  , ( FunctionTok , "ref" )
   , ( NormalTok , " idx; indexes) {" )
   ]
 , [ ( NormalTok , "            " )
@@ -103,7 +104,7 @@
 , [ ( NormalTok , "                " )
   , ( KeywordTok , "return" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "true" )
+  , ( AttributeTok , "true" )
   , ( NormalTok , ";" )
   ]
 , [ ( NormalTok , "            indexes[" )
@@ -115,7 +116,7 @@
 , [ ( NormalTok , "        " )
   , ( KeywordTok , "return" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "false" )
+  , ( AttributeTok , "false" )
   , ( NormalTok , ";" )
   ]
 , [ ( NormalTok , "    }" ) ]
@@ -130,7 +131,7 @@
 , []
 , [ ( DataTypeTok , "void" ) , ( NormalTok , " main() {" ) ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "enum" )
+  , ( WarningTok , "enum" )
   , ( NormalTok , " Block[] blocks = " )
   , ( StringTok , "\"BO XK DQ CP NA GT RE TG QD FS" )
   ]
@@ -155,7 +156,7 @@
 , []
 , [ ( NormalTok , "    " ) , ( CommentTok , "// Extra test." ) ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "immutable" )
+  , ( FunctionTok , "immutable" )
   , ( NormalTok , " Block[] blocks2 = [" )
   , ( StringTok , "\"AB\"" )
   , ( NormalTok , ", " )
@@ -167,7 +168,7 @@
   , ( NormalTok , "];" )
   ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "immutable" )
+  , ( FunctionTok , "immutable" )
   , ( NormalTok , " word = " )
   , ( StringTok , "\"abba\"" )
   , ( NormalTok , ";" )
diff --git a/test/expected/abc.perl.native b/test/expected/abc.perl.native
--- a/test/expected/abc.perl.native
+++ b/test/expected/abc.perl.native
@@ -10,17 +10,17 @@
   , ( NormalTok , " " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , " = " )
-  , ( KeywordTok , "qw(" )
+  , ( OtherTok , "qw(" )
   , ( NormalTok
     , "BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM"
     )
-  , ( KeywordTok , ")" )
+  , ( OtherTok , ")" )
   , ( NormalTok , ";" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "A" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",       " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -28,9 +28,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "BARK" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",    " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -38,9 +38,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "BOOK" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",    " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -48,9 +48,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "TREAT" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",   " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -58,9 +58,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "COMMON" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",  " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -68,9 +68,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "SQUAD" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ",   " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -78,9 +78,9 @@
   , ( NormalTok , ");" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( StringTok , "CONFUSE" )
-  , ( KeywordTok , "\"" )
+  , ( OtherTok , "\"" )
   , ( NormalTok , ", " )
   , ( DataTypeTok , "@blocks1" )
   , ( NormalTok , "), " )
@@ -92,15 +92,15 @@
   , ( NormalTok , " " )
   , ( DataTypeTok , "@blocks2" )
   , ( NormalTok , " = " )
-  , ( KeywordTok , "qw(" )
+  , ( OtherTok , "qw(" )
   , ( NormalTok , "US TZ AO QA" )
-  , ( KeywordTok , ")" )
+  , ( OtherTok , ")" )
   , ( NormalTok , ";" )
   ]
 , [ ( NormalTok , "is(can_make_word(" )
-  , ( KeywordTok , "'" )
-  , ( StringTok , "auto" )
-  , ( KeywordTok , "'" )
+  , ( OtherTok , "'" )
+  , ( SpecialStringTok , "auto" )
+  , ( OtherTok , "'" )
   , ( NormalTok , ", " )
   , ( DataTypeTok , "@blocks2" )
   , ( NormalTok , "), " )
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
@@ -1,89 +1,93 @@
-[ [ ( NormalTok , "canMakeNoRecursion <-" )
-  , ( StringTok , " " )
+[ [ ( NormalTok , "canMakeNoRecursion " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "function" )
   , ( NormalTok , "(x) {" )
   ]
-, [ ( NormalTok , "  x <-" )
-  , ( StringTok , " " )
-  , ( KeywordTok , "toupper" )
+, [ ( NormalTok , "  x " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , " " )
+  , ( FunctionTok , "toupper" )
   , ( NormalTok , "(x)" )
   ]
-, [ ( NormalTok , "  charList <-" )
-  , ( StringTok , " " )
-  , ( KeywordTok , "strsplit" )
+, [ ( NormalTok , "  charList " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , " " )
+  , ( FunctionTok , "strsplit" )
   , ( NormalTok , "(x, " )
-  , ( KeywordTok , "character" )
+  , ( FunctionTok , "character" )
   , ( NormalTok , "(" )
   , ( DecValTok , "0" )
   , ( NormalTok , "))" )
   ]
-, [ ( NormalTok , "  getCombos <-" )
-  , ( StringTok , " " )
+, [ ( NormalTok , "  getCombos " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "function" )
   , ( NormalTok , "(chars) {" )
   ]
-, [ ( NormalTok , "    charBlocks <-" )
-  , ( StringTok , "  " )
-  , ( KeywordTok , "data.matrix" )
+, [ ( NormalTok , "    charBlocks " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , "  " )
+  , ( FunctionTok , "data.matrix" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "expand.grid" )
+  , ( FunctionTok , "expand.grid" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "lapply" )
+  , ( FunctionTok , "lapply" )
   , ( NormalTok , "(chars, " )
   , ( ControlFlowTok , "function" )
   , ( NormalTok , "(char) " )
-  , ( KeywordTok , "which" )
+  , ( FunctionTok , "which" )
   , ( NormalTok , "(blocks " )
-  , ( OperatorTok , "==" )
-  , ( StringTok , " " )
-  , ( NormalTok , "char, " )
-  , ( DataTypeTok , "arr.ind=" )
-  , ( OtherTok , "TRUE" )
+  , ( SpecialCharTok , "==" )
+  , ( NormalTok , " char, " )
+  , ( AttributeTok , "arr.ind=" )
+  , ( ConstantTok , "TRUE" )
   , ( NormalTok , ")[, 1L])))" )
   ]
-, [ ( NormalTok , "    charBlocks <-" )
-  , ( StringTok , " " )
-  , ( NormalTok , "charBlocks[" )
-  , ( OperatorTok , "!" )
-  , ( KeywordTok , "apply" )
+, [ ( NormalTok , "    charBlocks " )
+  , ( OtherTok , "<-" )
+  , ( NormalTok , " charBlocks[" )
+  , ( SpecialCharTok , "!" )
+  , ( FunctionTok , "apply" )
   , ( NormalTok , "(charBlocks, " )
   , ( DecValTok , "1" )
   , ( NormalTok , ", " )
   , ( ControlFlowTok , "function" )
   , ( NormalTok , "(row) " )
-  , ( KeywordTok , "any" )
+  , ( FunctionTok , "any" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "duplicated" )
-  , ( NormalTok , "(row))), , drop=" )
-  , ( OtherTok , "FALSE" )
+  , ( FunctionTok , "duplicated" )
+  , ( NormalTok , "(row))), , drop" )
+  , ( OtherTok , "=" )
+  , ( ConstantTok , "FALSE" )
   , ( NormalTok , "]" )
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "if" )
   , ( NormalTok , " (" )
-  , ( KeywordTok , "dim" )
+  , ( FunctionTok , "dim" )
   , ( NormalTok , "(charBlocks)[1L] " )
-  , ( OperatorTok , ">" )
-  , ( StringTok , " " )
-  , ( NormalTok , "0L) {" )
+  , ( SpecialCharTok , ">" )
+  , ( NormalTok , " 0L) {" )
   ]
 , [ ( NormalTok , "      " )
-  , ( KeywordTok , "t" )
+  , ( FunctionTok , "t" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "apply" )
+  , ( FunctionTok , "apply" )
   , ( NormalTok , "(charBlocks, " )
   , ( DecValTok , "1" )
   , ( NormalTok , ", " )
   , ( ControlFlowTok , "function" )
   , ( NormalTok , "(row) " )
-  , ( KeywordTok , "apply" )
+  , ( FunctionTok , "apply" )
   , ( NormalTok , "(blocks[row, , " )
-  , ( DataTypeTok , "drop=" )
-  , ( OtherTok , "FALSE" )
+  , ( AttributeTok , "drop=" )
+  , ( ConstantTok , "FALSE" )
   , ( NormalTok , "], " )
   , ( DecValTok , "1" )
   , ( NormalTok , ", paste, " )
-  , ( DataTypeTok , "collapse=" )
+  , ( AttributeTok , "collapse=" )
   , ( StringTok , "\"\"" )
   , ( NormalTok , ")))" )
   ]
@@ -92,7 +96,7 @@
   , ( NormalTok , " {" )
   ]
 , [ ( NormalTok , "      " )
-  , ( KeywordTok , "character" )
+  , ( FunctionTok , "character" )
   , ( NormalTok , "(" )
   , ( DecValTok , "0" )
   , ( NormalTok , ")" )
@@ -100,15 +104,15 @@
 , [ ( NormalTok , "    }" ) ]
 , [ ( NormalTok , "  }" ) ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "setNames" )
+  , ( FunctionTok , "setNames" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "lapply" )
+  , ( FunctionTok , "lapply" )
   , ( NormalTok , "(charList, getCombos), x)" )
   ]
 , [ ( NormalTok , "}" ) ]
-, [ ( KeywordTok , "canMakeNoRecursion" )
+, [ ( FunctionTok , "canMakeNoRecursion" )
   , ( NormalTok , "(" )
-  , ( KeywordTok , "c" )
+  , ( FunctionTok , "c" )
   , ( NormalTok , "(" )
   , ( StringTok , "\"A\"" )
   , ( NormalTok , "," )
diff --git a/test/expected/abc.ruby.native b/test/expected/abc.ruby.native
--- a/test/expected/abc.ruby.native
+++ b/test/expected/abc.ruby.native
@@ -1,40 +1,66 @@
-[ [ ( NormalTok , "words =" )
+[ [ ( NormalTok , "words " )
+  , ( KeywordTok , "=" )
   , ( OtherTok , " %w(" )
   , ( StringTok , "A BaRK BOoK tREaT COmMOn SqUAD CoNfuSE" )
   , ( OtherTok , ")" )
-  , ( NormalTok , " << " )
+  , ( NormalTok , " " )
+  , ( KeywordTok , "<<" )
+  , ( NormalTok , " " )
   , ( StringTok , "\"\"" )
   ]
 , []
-, [ ( NormalTok , "words.each " )
-  , ( KeywordTok , "do" )
-  , ( NormalTok , " |word|" )
+, [ ( NormalTok , "words" )
+  , ( AttributeTok , ".each" )
+  , ( NormalTok , " " )
+  , ( ControlFlowTok , "do" )
+  , ( NormalTok , " " )
+  , ( KeywordTok , "|" )
+  , ( NormalTok , "word" )
+  , ( KeywordTok , "|" )
   ]
-, [ ( NormalTok , "  blocks = " )
+, [ ( NormalTok , "  blocks " )
+  , ( KeywordTok , "=" )
+  , ( NormalTok , " " )
   , ( StringTok
     , "\"BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM\""
     )
   ]
-, [ ( NormalTok , "  res = word.each_char.all?{|c| blocks.sub!(" )
-  , ( OtherTok , "/\\w?#{" )
+, [ ( NormalTok , "  res " )
+  , ( KeywordTok , "=" )
+  , ( NormalTok , " word" )
+  , ( AttributeTok , ".each_char.all?" )
+  , ( KeywordTok , "{|" )
   , ( NormalTok , "c" )
-  , ( OtherTok , "}\\w?/i" )
+  , ( KeywordTok , "|" )
+  , ( NormalTok , " blocks" )
+  , ( AttributeTok , ".sub!" )
+  , ( NormalTok , "(" )
+  , ( SpecialStringTok , "/\\w?" )
+  , ( SpecialCharTok , "#{" )
+  , ( NormalTok , "c" )
+  , ( SpecialCharTok , "}" )
+  , ( SpecialStringTok , "\\w?/i" )
   , ( NormalTok , ", " )
   , ( StringTok , "\"\"" )
-  , ( NormalTok , ")}  " )
+  , ( NormalTok , ")" )
+  , ( KeywordTok , "}" )
+  , ( NormalTok , "  " )
   , ( CommentTok , "#regexps can be interpolated like strings" )
   ]
-, [ ( NormalTok , "  puts " )
+, [ ( NormalTok , "  " )
+  , ( FunctionTok , "puts" )
+  , ( NormalTok , " " )
   , ( StringTok , "\"" )
-  , ( OtherTok , "#{" )
-  , ( NormalTok , "word.inspect" )
-  , ( OtherTok , "}" )
+  , ( SpecialCharTok , "#{" )
+  , ( NormalTok , "word" )
+  , ( AttributeTok , ".inspect" )
+  , ( SpecialCharTok , "}" )
   , ( StringTok , ": " )
-  , ( OtherTok , "#{" )
+  , ( SpecialCharTok , "#{" )
   , ( NormalTok , "res" )
-  , ( OtherTok , "}" )
+  , ( SpecialCharTok , "}" )
   , ( StringTok , "\"" )
   ]
-, [ ( KeywordTok , "end" ) ]
+, [ ( ControlFlowTok , "end" ) ]
 , []
 ]
diff --git a/test/expected/abc.scheme.native b/test/expected/abc.scheme.native
--- a/test/expected/abc.scheme.native
+++ b/test/expected/abc.scheme.native
@@ -81,13 +81,17 @@
   , ( NormalTok , "(inner word-chars blocks tried-blocks)" )
   ]
 , [ ( NormalTok , "    (" ) , ( KeywordTok , "cond" ) ]
-, [ ( NormalTok , "      [(" )
+, [ ( NormalTok , "      " )
+  , ( OperatorTok , "[" )
+  , ( NormalTok , "(" )
   , ( KeywordTok , "null?" )
   , ( NormalTok , " word-chars) " )
   , ( DecValTok , "#t" )
-  , ( NormalTok , "]" )
+  , ( OperatorTok , "]" )
   ]
-, [ ( NormalTok , "      [(usable-block blocks (" )
+, [ ( NormalTok , "      " )
+  , ( OperatorTok , "[" )
+  , ( NormalTok , "(usable-block blocks (" )
   , ( KeywordTok , "car" )
   , ( NormalTok , " word-chars))" )
   ]
@@ -101,19 +105,24 @@
   , ( KeywordTok , "cdr" )
   , ( NormalTok , " word-chars) (" )
   , ( KeywordTok , "append" )
-  , ( NormalTok , " tried-blocks (remove b blocks)) null)" )
+  , ( NormalTok , " tried-blocks (" )
+  , ( KeywordTok , "remove" )
+  , ( NormalTok , " b blocks)) null)" )
   ]
-, [ ( NormalTok
-    , "          (inner word-chars (remove b blocks) ("
-    )
+, [ ( NormalTok , "          (inner word-chars (" )
+  , ( KeywordTok , "remove" )
+  , ( NormalTok , " b blocks) (" )
   , ( KeywordTok , "cons" )
-  , ( NormalTok , " b tried-blocks))))]" )
+  , ( NormalTok , " b tried-blocks))))" )
+  , ( OperatorTok , "]" )
   ]
-, [ ( NormalTok , "      [" )
+, [ ( NormalTok , "      " )
+  , ( OperatorTok , "[" )
   , ( KeywordTok , "else" )
   , ( NormalTok , " " )
   , ( DecValTok , "#f" )
-  , ( NormalTok , "]))" )
+  , ( OperatorTok , "]" )
+  , ( NormalTok , "))" )
   ]
 , [ ( NormalTok , "  (inner (" )
   , ( KeywordTok , "string->list" )
diff --git a/test/expected/archive.rhtml.native b/test/expected/archive.rhtml.native
--- a/test/expected/archive.rhtml.native
+++ b/test/expected/archive.rhtml.native
@@ -4,22 +4,22 @@
   ]
 , []
 , []
-, [ ( KeywordTok , "<%" )
+, [ ( DataTypeTok , "<%" )
   , ( ExtensionTok , " form_for " )
-  , ( StringTok , ":to_date" )
+  , ( WarningTok , ":to_date" )
   , ( ExtensionTok , ", " )
   , ( OtherTok , "@to_date" )
   , ( ExtensionTok , ", " )
-  , ( StringTok , ":url" )
+  , ( WarningTok , ":url" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
   , ( CharTok , "{" )
-  , ( StringTok , ":action" )
+  , ( WarningTok , ":action" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
-  , ( StringTok , "'archive'" )
+  , ( VerbatimStringTok , "'archive'" )
   , ( CharTok , "}" )
   , ( ExtensionTok , " " )
   , ( KeywordTok , "do" )
@@ -28,7 +28,7 @@
   , ( ExtensionTok , "f" )
   , ( CharTok , "|" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "<p><label" )
@@ -39,19 +39,19 @@
   , ( KeywordTok , "</label>" )
   ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<%=" )
+  , ( DataTypeTok , "<%=" )
   , ( ExtensionTok , " " )
-  , ( NormalTok , "select_date" )
+  , ( FunctionTok , "select_date" )
   , ( ExtensionTok , " " )
   , ( OtherTok , "@from_date" )
   , ( ExtensionTok , ", " )
-  , ( StringTok , ":prefix" )
+  , ( WarningTok , ":prefix" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
-  , ( StringTok , "'from'" )
+  , ( VerbatimStringTok , "'from'" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "<label" )
@@ -62,25 +62,26 @@
   , ( KeywordTok , "</label>" )
   ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<%=" )
+  , ( DataTypeTok , "<%=" )
   , ( ExtensionTok , " " )
-  , ( NormalTok , "select_date" )
+  , ( FunctionTok , "select_date" )
   , ( ExtensionTok , " " )
   , ( OtherTok , "@to_date" )
   , ( ExtensionTok , ", " )
-  , ( StringTok , ":prefix" )
+  , ( WarningTok , ":prefix" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
-  , ( StringTok , "'to'" )
+  , ( VerbatimStringTok , "'to'" )
   , ( ExtensionTok , ", " )
-  , ( StringTok , ":start_year" )
+  , ( WarningTok , ":start_year" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
   , ( DecValTok , "2000" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%></p>" )
+  , ( DataTypeTok , "%>" )
+  , ( KeywordTok , "</p>" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "<p><label" )
@@ -91,59 +92,59 @@
   , ( KeywordTok , "</label>" )
   ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<%=" )
+  , ( DataTypeTok , "<%=" )
   , ( ExtensionTok , " " )
-  , ( NormalTok , "select_tag" )
+  , ( FunctionTok , "select_tag" )
   , ( ExtensionTok , " " )
   , ( StringTok , "\"series\"" )
   , ( ExtensionTok , ", " )
-  , ( NormalTok , "options_for_select" )
+  , ( FunctionTok , "options_for_select" )
   , ( ExtensionTok , "(series_list(" )
-  , ( StringTok , "'All'" )
+  , ( VerbatimStringTok , "'All'" )
   , ( ExtensionTok , "), " )
   , ( OtherTok , "@series" )
   , ( ExtensionTok , ") " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<%=" )
+  , ( DataTypeTok , "<%=" )
   , ( ExtensionTok , " f" )
-  , ( NormalTok , ".submit" )
+  , ( AttributeTok , ".submit" )
   , ( ExtensionTok , " " )
-  , ( StringTok , "'Show events'" )
+  , ( VerbatimStringTok , "'Show events'" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
 , [ ( NormalTok , "  " ) , ( KeywordTok , "</p>" ) ]
-, [ ( KeywordTok , "<%" )
+, [ ( DataTypeTok , "<%" )
   , ( ExtensionTok , " " )
   , ( KeywordTok , "end" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
 , []
 , [ ( KeywordTok , "<ul>" ) ]
-, [ ( KeywordTok , "<%" ) ]
+, [ ( DataTypeTok , "<%" ) ]
 , [ ( KeywordTok , "if" )
   , ( ExtensionTok , " " )
   , ( OtherTok , "@events" )
   ]
-, [ ( KeywordTok , "%>" ) ]
+, [ ( DataTypeTok , "%>" ) ]
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<%=" )
+  , ( DataTypeTok , "<%=" )
   , ( ExtensionTok , " " )
-  , ( NormalTok , "render" )
+  , ( FunctionTok , "render" )
   , ( ExtensionTok , " " )
-  , ( StringTok , ":partial" )
+  , ( WarningTok , ":partial" )
   , ( ExtensionTok , " " )
   , ( CharTok , "=>" )
   , ( ExtensionTok , " " )
-  , ( StringTok , "'events'" )
+  , ( VerbatimStringTok , "'events'" )
   , ( ExtensionTok , " " )
-  , ( KeywordTok , "%>" )
+  , ( DataTypeTok , "%>" )
   ]
-, [ ( KeywordTok , "<%" ) ]
+, [ ( DataTypeTok , "<%" ) ]
 , [ ( KeywordTok , "end" ) ]
-, [ ( KeywordTok , "%>" ) ]
+, [ ( DataTypeTok , "%>" ) ]
 , [ ( KeywordTok , "</ul>" ) ]
 ]
diff --git a/test/expected/life.lua.native b/test/expected/life.lua.native
--- a/test/expected/life.lua.native
+++ b/test/expected/life.lua.native
@@ -1,7 +1,7 @@
 [ [ ( CommentTok , "-- life.lua" ) ]
-, [ ( CommentTok , "-- original by Dave Bollinger " )
-  , ( KeywordTok , "<DBollinger@compuserve.com>" )
-  , ( CommentTok , " posted to lua-l" )
+, [ ( CommentTok
+    , "-- original by Dave Bollinger <DBollinger@compuserve.com> posted to lua-l"
+    )
   ]
 , [ ( CommentTok
     , "-- modified to use ANSI terminal escape sequences"
@@ -53,9 +53,9 @@
   , ( ControlFlowTok , "end" )
   ]
 , [ ( NormalTok , "  " )
-  , ( CommentTok , "-- local i=os.clock()+1 while(os.clock()" )
-  , ( KeywordTok , "<i" )
-  , ( OtherTok , ") do end" )
+  , ( CommentTok
+    , "-- local i=os.clock()+1 while(os.clock()<i) do end"
+    )
   ]
 , [ ( KeywordTok , "end" ) ]
 , []
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -3,6 +3,7 @@
 {-# LANGUAGE OverloadedStrings   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 module Main where
+import Data.Maybe
 import Data.Aeson (decode, encode)
 import Data.Algorithm.Diff
 import qualified Data.ByteString.Lazy as BL
@@ -11,6 +12,7 @@
 import Data.Text (Text)
 import qualified Data.Text as Text
 import qualified Data.Text.IO as Text
+import qualified Data.Text.Encoding as TE
 import System.Directory
 import System.Environment (getArgs)
 import System.FilePath
@@ -52,7 +54,10 @@
       defConfig = TokenizerConfig { traceOutput = False
                                   , syntaxMap = sMap
                                   }
-
+  let getMatchers = map rMatcher .  concatMap cRules . sContexts
+  let getRegexFromMatcher (RegExpr re) = Just $ reString re
+      getRegexFromMatcher _ = Nothing
+  let getRegexesFromSyntax = mapMaybe getRegexFromMatcher . getMatchers
   inputs <- filter (\fp -> take 1 fp /= ".")
          <$> getDirectoryContents ("test" </> "cases")
   allcases <- mapM (fmap (Text.take 240)
@@ -88,6 +93,19 @@
     , testGroup "Doesn't hang or drop text on fuzz" $
         map (\syn -> testProperty (Text.unpack (sName syn)) (p_no_drop defConfig syn))
         syntaxes
+    , testGroup "All regexes compile" $
+        map
+           (\syn -> testGroup ("syntax " <> sFilename syn)
+            (map
+              (\regex ->
+                testCase ("regex " <>
+                           (Text.unpack $ TE.decodeUtf8 regex) <> " in "
+                           <> sFilename syn)
+             $ assertBool "regex does not compile"
+               $ case compileRegex True regex of
+                         Right _ -> True
+                         Left _  -> False) $ getRegexesFromSyntax syn))
+        syntaxes
     , testGroup "Regex module" $ map regexTest regexTests
     , testGroup "Regression tests" $
       let perl = maybe (error "could not find Perl syntax") id
@@ -97,43 +115,36 @@
           c    = maybe (error "could not find C syntax") id
                              (lookupSyntax "c" sMap) in
       [ testCase "perl NUL case" $ Right
-             [[(KeywordTok,"s\NUL")
-              ,(OtherTok,"b")
-              ,(KeywordTok,"\NUL")
+             [[(OtherTok,"s\NULb\NUL")
               ,(StringTok,"c")
-              ,(KeywordTok,"\NUL")]]
+              ,(OtherTok,"\NUL")]]
              @=? tokenize defConfig perl "s\0b\0c\0"
       , testCase "perl backslash case 1" $ Right
-          [ [ ( KeywordTok , "m\\" )
-            , ( OtherTok , "'" ) ]
-          ] @=? tokenize defConfig perl
+          [[(OtherTok,"m\\'")]]
+            @=? tokenize defConfig perl
                      "m\\'"
       , testCase "perl backslash case 2" $ Right
-          [ [ ( KeywordTok , "m\\" )
-            , ( OtherTok , "a" )
-            , ( KeywordTok , "\\" ) ]
-          ] @=? tokenize defConfig perl
+          [[(OtherTok,"m\\a\\")]]
+            @=? tokenize defConfig perl
                      "m\\a\\"
       , testCase "perl quoting case" $ Right
-           [ [ ( KeywordTok , "my" )
-              , ( NormalTok , " " )
-              , ( DataTypeTok , "$foo" )
-              , ( NormalTok , " = " )
-              , ( KeywordTok , "q/" )
-              , ( StringTok , "bar" )
-              , ( KeywordTok , "/" )
-              , ( NormalTok , ";" )
-              ]
-            , [ ( KeywordTok , "my" )
-              , ( NormalTok , " " )
-              , ( DataTypeTok , "$baz" )
-              , ( NormalTok , " = " )
-              , ( KeywordTok , "'" )
-              , ( StringTok , "quux" )
-              , ( KeywordTok , "'" )
-              , ( NormalTok , ";" )
-              ]
-            ] @=? tokenize defConfig perl
+          [[(KeywordTok,"my")
+           ,(NormalTok," ")
+           ,(DataTypeTok,"$foo")
+           ,(NormalTok," = ")
+           ,(OtherTok,"q/")
+           ,(SpecialStringTok,"bar")
+           ,(OtherTok,"/")
+           ,(NormalTok,";")]
+          ,[(KeywordTok,"my")
+           ,(NormalTok," ")
+           ,(DataTypeTok,"$baz")
+           ,(NormalTok," = ")
+           ,(OtherTok,"'")
+           ,(SpecialStringTok,"quux")
+           ,(OtherTok,"'")
+           ,(NormalTok,";")]]
+             @=? tokenize defConfig perl
                      "my $foo = q/bar/;\nmy $baz = 'quux';\n"
       , testCase "cpp floats" $ Right
            [ [ (FloatTok,"0.1") , (BuiltInTok,"f")]
@@ -271,6 +282,11 @@
                  ,(2,replicate 398 'a')
                  ,(3,"a")
                  ,(4,"a")]))
+  , ("a++a", "aaaaa", Nothing)
+  , ("\\w+e", "aaaeeee", Just ("aaaeeee", []))
+  , ("\\w+?e", "aaaeeee", Just ("aaae", []))
+  , ("a+b??", "aaab", Just ("aaa", []))
+  , ("\\([a-z]+(?R)*\\)", "(aa(b(c)(d)))", Just ("(aa(b(c)(d)))", []))
   ]
 
 
diff --git a/xml/abc.xml b/xml/abc.xml
--- a/xml/abc.xml
+++ b/xml/abc.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Andrea Primiani - primiani at dag dot it
  	version1.10 - 12 december 2005 -->
-<language name="ABC" version="5" kateversion="2.4" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
+<language name="ABC" version="6" kateversion="2.4" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
     <highlighting>
         <contexts>
            <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
@@ -38,7 +38,10 @@
 <!-- returns to Normal context at the end of line -->	   
 	   <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" />
 	   <context name="Lyrics" attribute="Lyrics" lineEndContext="#pop" />
-	   <context name="Comment" attribute="Comment" lineEndContext="#pop" />
+	   <context name="Comment" attribute="Comment" lineEndContext="#pop">
+	    <IncludeRules context="##Alerts" />
+	    <IncludeRules context="##Modelines" />
+	   </context>
 <!-- returns to Normal context after the end of bar symbols or at EOL -->
 	   <context name="Bar" attribute="Bar" lineEndContext="#pop" >
 	   	<DetectChar attribute="Normal Text" context="#pop" char="&quot;" />
@@ -79,8 +82,9 @@
  </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="%" />
+      <comment name="singleLine" start="%" position="afterwhitespace" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/actionscript.xml b/xml/actionscript.xml
--- a/xml/actionscript.xml
+++ b/xml/actionscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="ActionScript 2.0" version="4" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
+<language name="ActionScript 2.0" version="6" kateversion="5.0" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
   <highlighting>
     
     <list name="properties">
@@ -247,6 +247,8 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <!-- Comment next line if you don't use Javadoc tool -->
         <IncludeRules context="##Javadoc"/>
+        <WordDetect attribute="Keyword" context="Imports" String="package" />
+        <WordDetect attribute="Keyword" context="ImportsPrefix" String="import" lookAhead="true" />
         <keyword attribute="Properties" context="#stay" String="properties"/>
         <keyword attribute="Global Functions" context="#stay" String="global_functions"/>
         <keyword attribute="Classes" context="#stay" String="classes"/>
@@ -266,12 +268,14 @@
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
         <RegExpr attribute="Keyword" context="#stay" String="\.{3,3}\s+" />  
-        <RegExpr attribute="Keyword" context="StaticImports" String="\b(import\s+static)\b" />
-        <RegExpr attribute="Keyword" context="Imports" String="\b(package|import)\b" /> 
         <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
         <DetectChar attribute="Symbol" context="Member" char="." />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
       </context>
+      <context name="ImportsPrefix" attribute="Keyword" lineEndContext="#pop">
+        <RegExpr attribute="Keyword" context="#pop!StaticImports" String="import\s+static\b" />
+        <WordDetect attribute="Keyword" context="#pop!Imports" String="import" />
+      </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
           <AnyChar String="fF" attribute="Float" context="#pop"/>
       </context>
@@ -293,15 +297,16 @@
       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">  
         <RegExpr attribute="Function" context="#pop" String="\b[_a-zA-Z]\w*(?=[\s]*)" />
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="StaticImports">
-        <RegExpr attribute="StaticImports" context="#pop" String="\s*.*$" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Imports">
-        <RegExpr attribute="Imports" context="#pop" String="\s*.*$" />
+      <context attribute="StaticImports" lineEndContext="#pop" name="StaticImports"/>
+      <context attribute="Imports" lineEndContext="#pop" name="Imports"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
     </contexts>
     <itemDatas>
@@ -329,8 +334,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="1"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/ada.xml b/xml/ada.xml
--- a/xml/ada.xml
+++ b/xml/ada.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="Ada"
-          version="3"
+          version="4"
           kateversion="5.0"
           section="Sources"
           extensions="*.adb;*.ads;*.ada;*.a"
@@ -175,7 +175,10 @@
       <context attribute="String" lineEndContext="#pop" name="String">
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Comment"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
@@ -193,7 +196,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="--" />
+      <comment name="singleLine" start="--" position="afterwhitespace" />
     </comments>
     <keywords casesensitive="0" />
   </general>
diff --git a/xml/agda.xml b/xml/agda.xml
--- a/xml/agda.xml
+++ b/xml/agda.xml
@@ -3,7 +3,7 @@
   <!ENTITY charsdelim "_;.&#34;(){}@">
   <!ENTITY wordsep "(?=[&charsdelim;]|\s|$)">
 ]>
-<language name="Agda" version="6" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
+<language name="Agda" version="7" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
   <highlighting>
     <list name="reserved keywords">
       <item>abstract</item>
@@ -75,11 +75,13 @@
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment">
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comments" noIndentationBasedFolding="1">
         <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" /> <!-- for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="CommentBlock" />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Hole" lineEndContext="#stay" name="hole">
         <Detect2Chars attribute="Hole" context="#pop" char="!" char1="}" />
@@ -110,7 +112,7 @@
   <general>
     <folding indentationsensitive="1"/>
     <comments>
-      <comment name="singleLine" start="--" />
+      <comment name="singleLine" start="--" position="afterwhitespace" />
       <comment name="multiLine" start="{-" end="-}" region="CommentBlock" />
     </comments>
     <keywords casesensitive="1"
@@ -118,3 +120,4 @@
               additionalDeliminator="&charsdelim;" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/alert_indent.xml b/xml/alert_indent.xml
deleted file mode 100644
--- a/xml/alert_indent.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language version="4" kateversion="2.4" name="Alerts_indent" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
-  <highlighting>
-    <contexts>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
-        <IncludeRules context="##Alerts" />
-      </context>
-    </contexts>
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <folding indentationsensitive="1" />
-  </general>
-</language>
diff --git a/xml/apache.xml b/xml/apache.xml
--- a/xml/apache.xml
+++ b/xml/apache.xml
@@ -13,7 +13,7 @@
 -->
 
 <language name="Apache Configuration" section="Configuration"
-          version="3" kateversion="5.0"
+          version="4" kateversion="5.0"
           extensions="httpd.conf;httpd2.conf;apache.conf;apache2.conf;.htaccess*;.htpasswd*"
           mimetype=""
           author="Jan Janssen (medhefgo@googlemail.com)" license="LGPL">
@@ -585,6 +585,7 @@
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
   <IncludeRules context="##Alerts" />
+  <IncludeRules context="##Modelines" />
   <DetectIdentifier />
  </context>
 
@@ -631,3 +632,4 @@
 </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 1; indent-width 1; -->
diff --git a/xml/asn1.xml b/xml/asn1.xml
--- a/xml/asn1.xml
+++ b/xml/asn1.xml
@@ -13,7 +13,7 @@
 
         You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
 -->
-<language name="ASN.1" section="Markup" version="3" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
+<language name="ASN.1" section="Markup" version="4" kateversion="2.3" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
   <highlighting>
     <list name="keywords">
       <item>DEFINITIONS</item>
@@ -54,6 +54,8 @@
       </context>
       
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
     </contexts>
     
@@ -64,6 +66,11 @@
       <itemData name="Data Type"   defStyleNum="dsDataType"/>
     </itemDatas>
   </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+    </comments>
+  </general>
 </language>
 <!--
 // kate: space-indent on; indent-width 2; replace-tabs on;
diff --git a/xml/asp.xml b/xml/asp.xml
--- a/xml/asp.xml
+++ b/xml/asp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE  language SYSTEM "language.dtd">
-<language name="ASP" version="4" kateversion="5.0" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
+<language name="ASP" version="6" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
     <highlighting>
         <list name="control structures">
             <item>select</item>
@@ -231,15 +231,18 @@
         </list>
             <contexts>
             <context name="nosource" attribute="Normal Text" lineEndContext="#stay">
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <IncludeRules context="find-aspsource" />
                 <RegExpr attribute="HTML Tag" context="aspsource" String="&lt;\s*script\s*language=&quot;VBScript&quot;[^&gt;]*&gt;" insensitive="true" />
-                <RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(\s|&gt;)" insensitive="true" />
+                <RegExpr attribute="HTML Tag" context="scripts" String="&lt;\s*script(?:\s|&gt;|$)" insensitive="true" />
                 <RegExpr attribute="HTML Tag" context="htmltag" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
-                <StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" />
+                <StringDetect attribute="HTML Comment" context="htmlcomment" String="&lt;!--" beginRegion="HTMLComment" />
             </context>
 
+            <context name="find-aspsource" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars attribute="ASP Source" context="aspsource" char="&lt;" char1="%" beginRegion="ASPSource" />
+            </context>
             <context name="aspsource" attribute="ASP Text" lineEndContext="#stay">
-                <StringDetect attribute="Keyword" context="#pop" String="%&gt;" />
+                <Detect2Chars attribute="ASP Source" context="#pop" char="%" char1="&gt;" endRegion="ASPSource" />
                 <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
                 <DetectChar attribute="Comment" context="asp_onelinecomment" char="'" />
                 <DetectChar attribute="String" context="doublequotestring" char="&quot;" />
@@ -252,45 +255,49 @@
                 <Int attribute="Decimal" context="#stay" />
                 <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
 
-                <RegExpr attribute="Control Structures" context="#stay" String="\belseif\b" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\belse\b" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bif\b" insensitive="true" beginRegion="iffi1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bend if\b" insensitive="true" endRegion="iffi1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="elseif" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="else" insensitive="true" beginRegion="iffi1" endRegion="iffi1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="if" insensitive="true" beginRegion="iffi1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="end if" insensitive="true" endRegion="iffi1"/>
 
-                <RegExpr attribute="Keyword" context="#stay" String="\bexit function\b" insensitive="true" />
-                <RegExpr attribute="Keyword" context="#stay" String="\bfunction\b" insensitive="true" beginRegion="funendfun1"/>
-                <RegExpr attribute="Keyword" context="#stay" String="\bend function\b" insensitive="true" endRegion="funendfun1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="exit function" insensitive="true" />
+                <WordDetect attribute="Keyword" context="#stay" String="function" insensitive="true" beginRegion="funendfun1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="end function" insensitive="true" endRegion="funendfun1"/>
 
-                <RegExpr attribute="Keyword" context="#stay" String="\bexit sub\b" insensitive="true" />
-                <RegExpr attribute="Keyword" context="#stay" String="\bsub\b" insensitive="true" beginRegion="subendsub1"/>
-                <RegExpr attribute="Keyword" context="#stay" String="\bend sub\b" insensitive="true" endRegion="subendsub1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="exit sub" insensitive="true" />
+                <WordDetect attribute="Keyword" context="#stay" String="sub" insensitive="true" beginRegion="subendsub1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="end sub" insensitive="true" endRegion="subendsub1"/>
 
-                <RegExpr attribute="Keyword" context="#stay" String="\bclass\b" insensitive="true" beginRegion="classendclass1"/>
-                <RegExpr attribute="Keyword" context="#stay" String="\bend class\b" insensitive="true" endRegion="classendclass1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="class" insensitive="true" beginRegion="classendclass1"/>
+                <WordDetect attribute="Keyword" context="#stay" String="end class" insensitive="true" endRegion="classendclass1"/>
 
-                <RegExpr attribute="Control Structures" context="#stay" String="\bexit do\b" insensitive="true" />
-                <RegExpr attribute="Control Structures" context="#stay" String="\bdo(\s+(while))?\b" insensitive="true" beginRegion="doloop1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bloop\b" insensitive="true" endRegion="doloop1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="exit do" insensitive="true" />
+                <RegExpr attribute="Control Structures" context="#stay" String="\bdo(?:\s+while)?\b" insensitive="true" beginRegion="doloop1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="loop" insensitive="true" endRegion="doloop1"/>
 
-                <RegExpr attribute="Control Structures" context="#stay" String="\bexit while\b" insensitive="true" />
-                <RegExpr attribute="Control Structures" context="#stay" String="\bwhile\b" insensitive="true" beginRegion="whilewend1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bwend\b" insensitive="true" endRegion="whilewend1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="exit while" insensitive="true" />
+                <WordDetect attribute="Control Structures" context="#stay" String="while" insensitive="true" beginRegion="whilewend1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="wend" insensitive="true" endRegion="whilewend1"/>
 
-                <RegExpr attribute="Control Structures" context="#stay" String="\bexit for\b" insensitive="true" />
-                <RegExpr attribute="Control Structures" context="#stay" String="\bfor\b" insensitive="true" beginRegion="fornext1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bnext\b" insensitive="true" endRegion="fornext1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="exit for" insensitive="true" />
+                <WordDetect attribute="Control Structures" context="#stay" String="for" insensitive="true" beginRegion="fornext1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="next" insensitive="true" endRegion="fornext1"/>
 
-                <RegExpr attribute="Control Structures" context="#stay" String="\bselect case\b" insensitive="true" beginRegion="selcase1"/>
-                <RegExpr attribute="Control Structures" context="#stay" String="\bend select\b" insensitive="true" endRegion="selcase1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="select case" insensitive="true" beginRegion="selcase1"/>
+                <WordDetect attribute="Control Structures" context="#stay" String="end select" insensitive="true" endRegion="selcase1"/>
 
                 <keyword attribute="Keyword" context="#stay" String="keywords" />
                 <keyword attribute="Control Structures" context="#stay" String="control structures" />
                 <keyword attribute="Function" context="#stay" String="functions" />
             </context>
             <context name="asp_onelinecomment" attribute="Comment" lineEndContext="#pop">
-                <StringDetect attribute="Keyword" context="#pop#pop" String="%&gt;" />
+                <DetectSpaces />
+                <Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />
+                <IncludeRules context="##Alerts" />
+                <IncludeRules context="##Modelines" />
             </context>
             <context name="doublequotestring" attribute="String" lineEndContext="#stay">
+                <DetectSpaces />
                 <Detect2Chars attribute="Escape Code" context="#stay" char="&quot;" char1="&quot;" />
                 <RegExpr attribute="Escape Code" context="#stay" String="\\[0-7]{1,3}" />
                 <RegExpr attribute="Escape Code" context="#stay" String="\\x[0-9A-Fa-f]{1,2}" />
@@ -301,43 +308,44 @@
                 <DetectChar attribute="String" context="#pop" char="'" />
             </context>
             <context name="htmltag" attribute="Identifier" lineEndContext="#stay">
+                <DetectSpaces />
                 <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
                 <DetectChar attribute="HTML Tag" context="#pop" char="&gt;"/>
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <RegExpr attribute="Identifier" context="identifiers" String="\s*=\s*"/>
+                <IncludeRules context="find-aspsource" />
+                <DetectChar attribute="Identifier" context="identifiers" char="="/>
             </context>
             <context name="htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
-                <RegExpr attribute="Normal Text" context="identifiers" String="\s*=\s*"/>
+                <DetectSpaces />
+                <IncludeRules context="find-aspsource" />
+                <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTMLComment" />
+                <DetectChar attribute="Normal Text" context="identifiers" char="="/>
+                <IncludeRules context="##Alerts" />
+                <IncludeRules context="##Modelines" />
             </context>
             <context name="identifiers" attribute="Identifier" lineEndContext="#stay">
+                <DetectSpaces />
                 <RegExpr attribute="String" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
                 <DetectChar attribute="Types" context="types1" char="'" />
                 <DetectChar attribute="Types" context="types2" char="&quot;" />
             </context>
 
             <context name="types1" attribute="Types" lineEndContext="#stay">
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <IncludeRules context="find-aspsource" />
                 <DetectChar attribute="Types" context="#pop#pop" char="'" />
             </context>
 
             <context name="types2" attribute="Types" lineEndContext="#stay">
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%" />
+                <IncludeRules context="find-aspsource" />
                 <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
             </context>
 
             <context name="scripts" attribute="Normal Text" lineEndContext="#stay">
                 <Detect2Chars attribute="Comment" context="scripts_onelinecomment" char="/" char1="/" />
-                <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" />
+                <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="ScriptComment" />
                 <keyword attribute="Control Structures" context="#stay" String="control structures" />
                 <keyword attribute="Keyword" context="#stay" String="keywords" />
                 <keyword attribute="Function" context="#stay" String="functions" />
-                <StringDetect attribute="Keyword" context="aspsource" String="&lt;%"/>
+                <IncludeRules context="find-aspsource" />
                 <RegExpr attribute="HTML Tag" context="#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
 
                 <DetectChar attribute="String" context="doublequotestring" char="&quot;" />
@@ -351,39 +359,44 @@
                 <AnyChar attribute="Other" context="#stay" String=";()}{:,[]" />
             </context>
             <context name="scripts_onelinecomment" attribute="Comment" lineEndContext="#pop">
+                <DetectSpaces />
                 <RegExpr attribute="HTML Tag" context="#pop#pop" String="&lt;\s*\/\s*script\s*&gt;" insensitive="true" />
+                <IncludeRules context="##Alerts" />
             </context>
             <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
-                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
+                <DetectSpaces />
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="ScriptComment" />
+                <IncludeRules context="##Alerts" />
             </context>
 
         </contexts>
         <itemDatas>
             <itemData name="Normal Text" defStyleNum="dsNormal" />
-            <itemData name="ASP Text" defStyleNum="dsNormal" />
-            <itemData name="Keyword" defStyleNum="dsKeyword" />
-            <itemData name="Function" defStyleNum="dsFunction" />
-            <itemData name="Decimal" defStyleNum="dsDecVal" />
-            <itemData name="Octal" defStyleNum="dsBaseN" />
-            <itemData name="Hex" defStyleNum="dsBaseN" />
-            <itemData name="Float" defStyleNum="dsFloat" />
+            <itemData name="ASP Text" defStyleNum="dsNormal" spellChecking="false" />
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false" />
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false" />
+            <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false" />
+            <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false" />
+            <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false" />
+            <itemData name="Float" defStyleNum="dsFloat" spellChecking="false" />
             <itemData name="String" defStyleNum="dsString" />
             <itemData name="Comment" defStyleNum="dsComment" />
-            <itemData name="Control Structures" defStyleNum="dsControlFlow" bold="0" />
-            <itemData name="Escape Code" defStyleNum="dsKeyword" color="#0F0F8F" selColor="#ffffff" bold="1" italic="0" />
-            <itemData name="Other" defStyleNum="dsOthers" />
+            <itemData name="Control Structures" defStyleNum="dsControlFlow" spellChecking="false" />
+            <itemData name="Escape Code" defStyleNum="dsSpecialChar" spellChecking="false" />
+            <itemData name="Other" defStyleNum="dsOthers" spellChecking="false" />
+            <itemData name="ASP Source" defStyleNum="dsDataType" bold="1" spellChecking="false" />
 
-            <itemData name="HTML Tag" defStyleNum="dsKeyword" color="#0F0000" selColor="#ffffff" bold="1" italic="0" />
+            <itemData name="HTML Tag" defStyleNum="dsKeyword" spellChecking="false" />
             <itemData name="HTML Comment" defStyleNum="dsComment" />
-            <itemData name="Identifier" defStyleNum="dsOthers" />
-            <itemData name="Types" defStyleNum="dsDataType" />
+            <itemData name="Identifier" defStyleNum="dsOthers" spellChecking="false" />
+            <itemData name="Types" defStyleNum="dsString" />
         </itemDatas>
     </highlighting>
     <general>
         <comments>
             <comment name="singleLine" start="'" />
-            <comment name="multiLine" start="/*" end="*/" />
         </comments>
         <keywords casesensitive="0" weakDeliminator=""/>
     </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/ats.xml b/xml/ats.xml
--- a/xml/ats.xml
+++ b/xml/ats.xml
@@ -1,165 +1,165 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-<!-- Regular expresion constants: -->
-<!ENTITY LETTER "A-Za-z\0300-\0326\0330-\0366\0370-\0377">          <!-- Latin-1 letters. -->
+<!-- Regular expression constants: -->
+<!ENTITY LETTER "A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff">                <!-- Latin-1 letters. -->
 <!ENTITY IDENT  "[&LETTER;_][&LETTER;0-9_']*">                      <!-- ATS identifiers. -->
 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- ATS character code escapes. -->
 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
 ]>
-<language name="ATS" version="0.01" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">
+<language name="ATS" version="2" kateversion="2.4" section="Sources" extensions="*.dats;*.sats;*.hats" mimetype="" author="Kiwamu Okabe (kiwamu@debian.or.jp)" license="LGPL">
   <highlighting>
     <list name="keywords">
-      <item> abstype </item>
-      <item> abst0ype </item>
-      <item> absprop </item>
-      <item> absview </item>
-      <item> absvtype </item>
-      <item> absviewtype </item>
-      <item> absvt0ype </item>
-      <item> absviewt0ype </item>
-      <item> and </item>
-      <item> as </item>
-      <item> assume </item>
-      <item> begin </item>
-      <item> break </item>
-      <item> case </item>
-      <item> continue </item>
-      <item> classdec </item>
-      <item> datasort </item>
-      <item> datatype </item>
-      <item> dataprop </item>
-      <item> dataview </item>
-      <item> datavtype </item>
-      <item> dataviewtype </item>
-      <item> do </item>
-      <item> dynload </item>
-      <item> else </item>
-      <item> end </item>
-      <item> exception </item>
-      <item> extern </item>
-      <item> extype </item>
-      <item> extval </item>
-      <item> if </item>
-      <item> in </item>
-      <item> infix </item>
-      <item> infixl </item>
-      <item> infixr </item>
-      <item> prefix </item>
-      <item> postfix </item>
-      <item> let </item>
-      <item> local </item>
-      <item> macdef </item>
-      <item> macrodef </item>
-      <item> nonfix </item>
-      <item> overload </item>
-      <item> of </item>
-      <item> op </item>
-      <item> rec </item>
-      <item> scase </item>
-      <item> sif </item>
-      <item> sortdef </item>
-      <item> sta </item>
-      <item> stacst </item>
-      <item> stadef </item>
-      <item> stavar </item>
-      <item> staload </item>
-      <item> symelim </item>
-      <item> symintr </item>
-      <item> then </item>
-      <item> try </item>
-      <item> tkindef </item>
-      <item> type </item>
-      <item> typedef </item>
-      <item> propdef </item>
-      <item> viewdef </item>
-      <item> vtypedef </item>
-      <item> viewtypedef </item>
-      <item> val </item>
-      <item> prval </item>
-      <item> var </item>
-      <item> prvar </item>
-      <item> when </item>
-      <item> where </item>
-      <item> for </item>
-      <item> while </item>
-      <item> with </item>
-      <item> withtype </item>
-      <item> withprop </item>
-      <item> withview </item>
-      <item> withvtype </item>
-      <item> withviewtype </item>
+      <item>abstype</item>
+      <item>abst0ype</item>
+      <item>absprop</item>
+      <item>absview</item>
+      <item>absvtype</item>
+      <item>absviewtype</item>
+      <item>absvt0ype</item>
+      <item>absviewt0ype</item>
+      <item>and</item>
+      <item>as</item>
+      <item>assume</item>
+      <item>begin</item>
+      <item>break</item>
+      <item>case</item>
+      <item>continue</item>
+      <item>classdec</item>
+      <item>datasort</item>
+      <item>datatype</item>
+      <item>dataprop</item>
+      <item>dataview</item>
+      <item>datavtype</item>
+      <item>dataviewtype</item>
+      <item>do</item>
+      <item>dynload</item>
+      <item>else</item>
+      <item>end</item>
+      <item>exception</item>
+      <item>extern</item>
+      <item>extype</item>
+      <item>extval</item>
+      <item>if</item>
+      <item>in</item>
+      <item>infix</item>
+      <item>infixl</item>
+      <item>infixr</item>
+      <item>prefix</item>
+      <item>postfix</item>
+      <item>let</item>
+      <item>local</item>
+      <item>macdef</item>
+      <item>macrodef</item>
+      <item>nonfix</item>
+      <item>overload</item>
+      <item>of</item>
+      <item>op</item>
+      <item>rec</item>
+      <item>scase</item>
+      <item>sif</item>
+      <item>sortdef</item>
+      <item>sta</item>
+      <item>stacst</item>
+      <item>stadef</item>
+      <item>stavar</item>
+      <item>staload</item>
+      <item>symelim</item>
+      <item>symintr</item>
+      <item>then</item>
+      <item>try</item>
+      <item>tkindef</item>
+      <item>type</item>
+      <item>typedef</item>
+      <item>propdef</item>
+      <item>viewdef</item>
+      <item>vtypedef</item>
+      <item>viewtypedef</item>
+      <item>val</item>
+      <item>prval</item>
+      <item>var</item>
+      <item>prvar</item>
+      <item>when</item>
+      <item>where</item>
+      <item>for</item>
+      <item>while</item>
+      <item>with</item>
+      <item>withtype</item>
+      <item>withprop</item>
+      <item>withview</item>
+      <item>withvtype</item>
+      <item>withviewtype</item>
     </list>
     <list name="special keywords">
-      <item> $arrpsz </item>
-      <item> $arrptrsize </item>
-      <item> $delay </item>
-      <item> $ldelay </item>
-      <item> $effmask </item>
-      <item> $effmask_ntm </item>
-      <item> $effmask_exn </item>
-      <item> $effmask_ref </item>
-      <item> $effmask_wrt </item>
-      <item> $effmask_all </item>
-      <item> $extern </item>
-      <item> $extkind </item>
-      <item> $extype </item>
-      <item> $extype_struct </item>
-      <item> $extval </item>
-      <item> $lst </item>
-      <item> $lst_t </item>
-      <item> $lst_vt </item>
-      <item> $list </item>
-      <item> $list_t </item>
-      <item> $list_vt </item>
-      <item> $rec </item>
-      <item> $rec_t </item>
-      <item> $rec_vt </item>
-      <item> $record </item>
-      <item> $record_t </item>
-      <item> $record_vt </item>
-      <item> $tup </item>
-      <item> $tup_t </item>
-      <item> $tup_vt </item>
-      <item> $tuple </item>
-      <item> $tuple_t </item>
-      <item> $tuple_vt </item>
-      <item> $raise </item>
-      <item> $showtype </item>
-      <item> $myfilename </item>
-      <item> $mylocation </item>
-      <item> $myfunction </item>
-      <item> #assert </item>
-      <item> #define </item>
-      <item> #elif </item>
-      <item> #elifdef </item>
-      <item> #elifndef </item>
-      <item> #else </item>
-      <item> #endif </item>
-      <item> #error </item>
-      <item> #if </item>
-      <item> #ifdef </item>
-      <item> #ifndef </item>
-      <item> #include </item>
-      <item> #print </item>
-      <item> #then </item>
-      <item> #undef </item>
+      <item>$arrpsz</item>
+      <item>$arrptrsize</item>
+      <item>$delay</item>
+      <item>$ldelay</item>
+      <item>$effmask</item>
+      <item>$effmask_ntm</item>
+      <item>$effmask_exn</item>
+      <item>$effmask_ref</item>
+      <item>$effmask_wrt</item>
+      <item>$effmask_all</item>
+      <item>$extern</item>
+      <item>$extkind</item>
+      <item>$extype</item>
+      <item>$extype_struct</item>
+      <item>$extval</item>
+      <item>$lst</item>
+      <item>$lst_t</item>
+      <item>$lst_vt</item>
+      <item>$list</item>
+      <item>$list_t</item>
+      <item>$list_vt</item>
+      <item>$rec</item>
+      <item>$rec_t</item>
+      <item>$rec_vt</item>
+      <item>$record</item>
+      <item>$record_t</item>
+      <item>$record_vt</item>
+      <item>$tup</item>
+      <item>$tup_t</item>
+      <item>$tup_vt</item>
+      <item>$tuple</item>
+      <item>$tuple_t</item>
+      <item>$tuple_vt</item>
+      <item>$raise</item>
+      <item>$showtype</item>
+      <item>$myfilename</item>
+      <item>$mylocation</item>
+      <item>$myfunction</item>
+      <item>#assert</item>
+      <item>#define</item>
+      <item>#elif</item>
+      <item>#elifdef</item>
+      <item>#elifndef</item>
+      <item>#else</item>
+      <item>#endif</item>
+      <item>#error</item>
+      <item>#if</item>
+      <item>#ifdef</item>
+      <item>#ifndef</item>
+      <item>#include</item>
+      <item>#print</item>
+      <item>#then</item>
+      <item>#undef</item>
     </list>
     <list name="function keywords">
-      <item> fn </item>
-      <item> fnx </item>
-      <item> fun </item>
-      <item> prfn </item>
-      <item> prfun </item>
-      <item> praxi </item>
-      <item> castfn </item>
-      <item> implmnt </item>
-      <item> implement </item>
-      <item> primplmnt </item>
-      <item> primplement </item>
-      <item> lam </item>
-      <item> llam </item>
-      <item> fix </item>
+      <item>fn</item>
+      <item>fnx</item>
+      <item>fun</item>
+      <item>prfn</item>
+      <item>prfun</item>
+      <item>praxi</item>
+      <item>castfn</item>
+      <item>implmnt</item>
+      <item>implement</item>
+      <item>primplmnt</item>
+      <item>primplement</item>
+      <item>lam</item>
+      <item>llam</item>
+      <item>fix</item>
     </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
@@ -190,28 +190,27 @@
         <!-- Support for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multiline C-style Comment">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment"/>
-
-      <context attribute="String" lineEndContext="#stay" name="String Context">
-        <DetectChar attribute="String" context="#pop" char="&quot;" />
-        <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;" />
-        <!-- An underscore at the end of a line in a string indicates  -->
-        <!-- that the string will continue on the next line.           -->
-        <RegExpr attribute="Escaped characters" context="#stay" String="\\$" />
+      <context attribute="Comment" lineEndContext="#pop" name="Singleline C++ style Comment">
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Termination Metrics" lineEndContext="#stay" name="Termination Metrics Context">
         <Detect2Chars attribute="Termination Metrics" context="#pop" char="&gt;" char1="." />
       </context>
 
-      <context attribute="Normal text" lineEndContext="#stay" name="Function Keyword Context">
-        <DetectChar attribute="Normal text" context="#pop" char="=" />
-	<DetectChar attribute="Universal" context="Universal Context" char="{" />
-	<DetectChar attribute="Existential" context="Existential Context" char="[" />
+      <context attribute="Normal Text" lineEndContext="#stay" name="Function Keyword Context">
+        <DetectChar attribute="Normal Text" context="#pop" char="=" />
+        <DetectChar attribute="Universal" context="Universal Context" char="{" />
+        <DetectChar attribute="Existential" context="Existential Context" char="[" />
         <IncludeRules context="Normal"/>
       </context>
 
@@ -236,8 +235,6 @@
       <itemData name="Decimal"  defStyleNum="dsDecVal"/>
       <itemData name="Hexadecimal"  defStyleNum="dsBaseN"/>
       <itemData name="Float"  defStyleNum="dsFloat"/>
-      <itemData name="Character"  defStyleNum="dsChar"/>
-      <itemData name="String"  defStyleNum="dsString"/>
       <itemData name="Comment"  defStyleNum="dsComment"/>
       <itemData name="Constructor" defStyleNum="dsDataType"/>
     </itemDatas>
@@ -247,9 +244,7 @@
     <keywords casesensitive="1" />
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="(*" end="*)" />
-      <comment name="multiLine" start="/*" end="*/" />
-      <comment name="multiLine" start="////" end="" />
+      <comment name="multiLine" start="(*" end="*)" region="comment" />
     </comments>
   </general>
 </language>
diff --git a/xml/awk.xml b/xml/awk.xml
--- a/xml/awk.xml
+++ b/xml/awk.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="AWK" version="3" kateversion="5.0" section="Scripts"
+<language name="AWK" version="4" kateversion="5.0" section="Scripts"
   extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"
   license="LGPL">
 <!-- patched by igli#kate@irc:chat.freenode.net -->
@@ -134,128 +134,129 @@
       <item>xdigit</item>
     </list>
 
-<contexts>
-<!-- START CONTEXTS -->
-<context name="Pattern" attribute="Normal" lineEndContext="#stay">
-	<DetectSpaces />
-	<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
-	<DetectChar char="}" attribute="Error" context="#stay"/>
-	<DetectChar char="/" attribute="Regex Op" firstNonSpace="true" context="Regex"/>
-	<IncludeRules context="base" />
-	<keyword String="special" attribute="Special" context="#stay"/>
-</context>
+    <contexts>
+      <!-- START CONTEXTS -->
+      <context name="Pattern" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
+        <DetectChar char="}" attribute="Error" context="#stay"/>
+        <DetectChar char="/" attribute="Regex Op" firstNonSpace="true" context="Regex"/>
+        <IncludeRules context="base" />
+        <keyword String="special" attribute="Special" context="#stay"/>
+      </context>
 
-<context name="Block" attribute="Normal" lineEndContext="#stay">
-	<DetectSpaces />
-	<DetectChar char="}" attribute="Symbol" context="#pop" endRegion="block" />
-	<DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
-	<IncludeRules context="base" />
-	<keyword String="special" attribute="Error" context="#stay"/>
-</context>
+      <context name="Block" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectChar char="}" attribute="Symbol" context="#pop" endRegion="block" />
+        <DetectChar char="{" attribute="Symbol" context="Block" beginRegion="block" />
+        <IncludeRules context="base" />
+        <keyword String="special" attribute="Error" context="#stay"/>
+      </context>
 
-<context name="base" attribute="Normal" lineEndContext="#stay">
-	<DetectChar char=")" attribute="Symbol" context="#stay"/>
-	<DetectChar char="(" attribute="Symbol" context="Match"/>
-	<AnyChar String="=~" attribute="Operator" context="Match"/>
-	<DetectChar char="," attribute="Separator Symbol" context="ArgSep"/>
-	<DetectChar char="&quot;" attribute="String" context="String"/>
-	<DetectChar char="#" attribute="Comment" context="Comment"/>
-	<AnyChar String="@!%&amp;*+-/:&lt;&gt;?^|" attribute="Operator" context="#stay"/>
-	<keyword String="controlflow" attribute="ControlFlow" context="#stay"/>
-	<keyword String="keywords" attribute="Keyword" context="#stay"/>
-	<keyword String="builtins" attribute="Builtin" context="#stay"/>
-	<keyword String="functions" attribute="Function" context="#stay"/>
-	<Float attribute="Float"   context="#stay"/>
-	<Int   attribute="Decimal" context="#stay"/>
-	<RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>
-	<DetectChar char=";" attribute="Separator Symbol" context="#stay"/>
-</context>
+      <context name="base" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char=")" attribute="Symbol" context="#stay"/>
+        <DetectChar char="(" attribute="Symbol" context="Match"/>
+        <AnyChar String="=~" attribute="Operator" context="Match"/>
+        <DetectChar char="," attribute="Separator Symbol" context="ArgSep"/>
+        <DetectChar char="&quot;" attribute="String" context="String"/>
+        <DetectChar char="#" attribute="Comment" context="Comment"/>
+        <AnyChar String="@!%&amp;*+-/:&lt;&gt;?^|" attribute="Operator" context="#stay"/>
+        <keyword String="controlflow" attribute="ControlFlow" context="#stay"/>
+        <keyword String="keywords" attribute="Keyword" context="#stay"/>
+        <keyword String="builtins" attribute="Builtin" context="#stay"/>
+        <keyword String="functions" attribute="Function" context="#stay"/>
+        <Float attribute="Float"   context="#stay"/>
+        <Int   attribute="Decimal" context="#stay"/>
+        <RegExpr String="\$[A-Za-z0-9_]+" attribute="Field" context="#stay"/>
+        <DetectChar char=";" attribute="Separator Symbol" context="#stay"/>
+      </context>
 
-<context name="ArgSep" attribute="Normal" lineEndContext="#stay"
-   fallthrough="true" fallthroughContext="#pop">
-	<IncludeRules context="Match" />
-</context>
+      <context name="ArgSep" attribute="Normal" lineEndContext="#stay"
+        fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="Match" />
+      </context>
 
-<context name="String" attribute="String" lineEndContext="#stay">
-	<DetectChar char="&quot;" attribute="String" context="#pop"/>
-	<DetectChar char="\" context="Escape" attribute="Escape"/>
-</context>
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+        <DetectChar char="\" context="Escape" attribute="Escape"/>
+      </context>
 
-<context name="Comment" attribute="Comment" lineEndContext="#pop">
-	<IncludeRules context="##Alerts"/>
-</context>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
 
-<context name="Escape" attribute="Error" lineEndContext="#pop">
-	<RegExpr String="[\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
-	<RegExpr String="." attribute="Error" context="#pop"/>
-</context>
+      <context name="Escape" attribute="Error" lineEndContext="#pop">
+        <RegExpr String="[\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
 
-<context name="Match" attribute="Normal" lineEndContext="#pop"
-   fallthrough="true" fallthroughContext="#pop">
-	<DetectSpaces />
-	<DetectChar char="/" attribute="Regex Op" context="#pop!Regex"/>
-</context>
+      <context name="Match" attribute="Normal" lineEndContext="#pop"
+        fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces />
+        <DetectChar char="/" attribute="Regex Op" context="#pop!Regex"/>
+      </context>
 
-<context name="Regex" attribute="Regex" lineEndContext="#pop">
-	<IncludeRules context="regex"/>
-	<DetectChar char="/" context="#pop" attribute="Regex Op"/>
-</context>
+      <context name="Regex" attribute="Regex" lineEndContext="#pop">
+        <IncludeRules context="regex"/>
+        <DetectChar char="/" context="#pop" attribute="Regex Op"/>
+      </context>
 
-<context name="regex" attribute="Normal" lineEndContext="#stay">
-	<Detect2Chars char="[" char1="^" context="RegexChar" attribute="Regex Op"/>
-	<DetectChar char="[" context="RegexChar" attribute="Regex Op"/>
-	<AnyChar String="^$.+?*()|" context="#stay" attribute="Regex Op"/>
-	<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
-</context>
+      <context name="regex" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars char="[" char1="^" context="RegexChar" attribute="Regex Op"/>
+        <DetectChar char="[" context="RegexChar" attribute="Regex Op"/>
+        <AnyChar String="^$.+?*()|" context="#stay" attribute="Regex Op"/>
+        <DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
+      </context>
 
-<context name="Regex Escape" attribute="Normal" lineEndContext="#pop">
-	<RegExpr String="[&lt;&gt;sSwW`'[\]{}^$.+?*()|/\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
-	<RegExpr String="." attribute="Regex" context="#pop"/>
-</context>
+      <context name="Regex Escape" attribute="Normal" lineEndContext="#pop">
+        <RegExpr String="[&lt;&gt;sSwW`'[\]{}^$.+?*()|/\\abfnrtv]|x[0-9a-fA-F]{1,2}|[0-7]{1,3}" attribute="Escape" context="#pop"/>
+        <RegExpr String="." attribute="Regex" context="#pop"/>
+      </context>
 
-<context name="RegexChar" attribute="Regex" lineEndContext="#pop"
-   fallthrough="true" fallthroughContext="InChar">
-	<AnyChar String="-]" context="InChar" attribute="Regex"/>
-</context>
+      <context name="RegexChar" attribute="Regex" lineEndContext="#pop"
+        fallthrough="true" fallthroughContext="InChar">
+        <AnyChar String="-]" context="InChar" attribute="Regex"/>
+      </context>
 
-<context name="InChar" attribute="Regex" lineEndContext="#pop#pop">
-	<Detect2Chars char="-" char1="]" context="InCharEnd" attribute="Regex" lookAhead="true"/>
-	<DetectChar char="-" context="#stay" attribute="Regex Op"/>
-	<DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
-	<DetectChar char="[" context="CharClassSelect" attribute="Regex" lookAhead="true"/>
-	<DetectChar char="]" context="#pop#pop" attribute="Regex Op"/>
-</context>
+      <context name="InChar" attribute="Regex" lineEndContext="#pop#pop">
+        <Detect2Chars char="-" char1="]" context="InCharEnd" attribute="Regex" lookAhead="true"/>
+        <DetectChar char="-" context="#stay" attribute="Regex Op"/>
+        <DetectChar char="\" context="Regex Escape" attribute="Regex Op"/>
+        <DetectChar char="[" context="CharClassSelect" attribute="Regex" lookAhead="true"/>
+        <DetectChar char="]" context="#pop#pop" attribute="Regex Op"/>
+      </context>
 
-<context name="InCharEnd" attribute="Regex Op" lineEndContext="#stay">
-	<DetectChar char="-" context="#stay" attribute="Regex"/>
-	<DetectChar char="]" context="#pop#pop#pop" attribute="Regex Op"/>
-</context>
+      <context name="InCharEnd" attribute="Regex Op" lineEndContext="#stay">
+        <DetectChar char="-" context="#stay" attribute="Regex"/>
+        <DetectChar char="]" context="#pop#pop#pop" attribute="Regex Op"/>
+      </context>
 
-<context name="CharClassSelect" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
-	<Detect2Chars char="[" char1=":" context="#pop!CharClass" attribute="CharClass"/>
-	<Detect2Chars char="[" char1="." context="#pop!CollatingSymbols" attribute="CharClass"/>
-	<Detect2Chars char="[" char1="=" context="#pop!EquivalenceClass" attribute="CharClass"/>
-	<DetectChar char="[" context="#pop" attribute="Regex"/>
-</context>
+      <context name="CharClassSelect" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
+        <Detect2Chars char="[" char1=":" context="#pop!CharClass" attribute="CharClass"/>
+        <Detect2Chars char="[" char1="." context="#pop!CollatingSymbols" attribute="CharClass"/>
+        <Detect2Chars char="[" char1="=" context="#pop!EquivalenceClass" attribute="CharClass"/>
+        <DetectChar char="[" context="#pop" attribute="Regex"/>
+      </context>
 
-<context name="CharClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
-	<keyword String="charclass" attribute="CharClass" context="#stay"/>
-	<Detect2Chars char=":" char1="]" attribute="CharClass" context="#pop"/>
-	<DetectChar char="]" attribute="Error" context="#pop"/>
-</context>
+      <context name="CharClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
+        <keyword String="charclass" attribute="CharClass" context="#stay"/>
+        <Detect2Chars char=":" char1="]" attribute="CharClass" context="#pop"/>
+        <DetectChar char="]" attribute="Error" context="#pop"/>
+      </context>
 
-<context name="CollatingSymbols" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
-	<Detect2Chars char="." char1="]" attribute="CharClass" context="#pop"/>
-	<DetectChar char="]" attribute="Error" context="#pop"/>
-</context>
+      <context name="CollatingSymbols" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
+        <Detect2Chars char="." char1="]" attribute="CharClass" context="#pop"/>
+        <DetectChar char="]" attribute="Error" context="#pop"/>
+      </context>
 
-<context name="EquivalenceClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
-	<Detect2Chars char="=" char1="]" attribute="CharClass" context="#pop"/>
-	<DetectChar char="]" attribute="Error" context="#pop"/>
-</context>
+      <context name="EquivalenceClass" attribute="Custom" lineEndContext="#pop#pop#pop#pop">
+        <Detect2Chars char="=" char1="]" attribute="CharClass" context="#pop"/>
+        <DetectChar char="]" attribute="Error" context="#pop"/>
+      </context>
 
-<!-- END OF CONTEXTS -->
-</contexts>
+      <!-- END OF CONTEXTS -->
+  </contexts>
     <itemDatas>
       <itemData name="Normal"   defStyleNum="dsNormal"/>
       <itemData name="ControlFlow" defStyleNum="dsControlFlow" spellChecking="false"/>
@@ -286,3 +287,4 @@
     <keywords casesensitive="1" weakDeliminator="@"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/bash.xml.patch b/xml/bash.xml.patch
deleted file mode 100644
--- a/xml/bash.xml.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/skylighting-core/xml/bash.xml
-+++ b/skylighting-core/xml/bash.xml
-@@ -482,7 +482,7 @@
-       <!-- FindComments consumes shell comments till EOL -->
-       <context attribute="Normal Text" lineEndContext="#pop" name="FindComments">
-         <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/>
--        <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
-+        <RegExpr attribute="Normal Text" context="Comment" String="\s*[\s;](?=#)" />
-       </context>
-       <context attribute="Comment" lineEndContext="#pop" name="Comment">
-         <IncludeRules context="##Alerts" />
-
diff --git a/xml/boo.xml b/xml/boo.xml
--- a/xml/boo.xml
+++ b/xml/boo.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language>
 <!-- Based on Python syntax highlighting v1.99 by Primoz Anzur, Paul Giannaros, Michael Bueker, Per Wigren -->
 <!-- Also based on boo.lang from gtksourceview -->
-<language name="Boo" version="4" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
+<language name="Boo" version="6" kateversion="5.0" section="Sources" extensions="*.boo" mimetype="text/x-boo" casesensitive="1" author="Marc Dassonneville" license="LGPL">
 	<highlighting>
 		<list name="namespace">
 			<item>import</item>
@@ -171,7 +171,7 @@
 				<Detect2Chars attribute="Raw String" char="r" char1="&quot;" context="Raw Q-string"/>
 				<Detect2Chars attribute="Raw String" char="R" char1="&quot;" context="Raw Q-string"/>
 
-				<RegExpr attribute="Comment" String="#.*$" context="#stay"/>
+				<DetectChar attribute="Comment" char="#" context="Comment"/>
 				<RegExpr attribute="Comment" String="^\s*u?'''" context="Tripple A-comment" beginRegion="Tripple A-region"/>
 				<RegExpr attribute="Comment" String="^\s*u?&quot;&quot;&quot;" context="Tripple Q-comment" beginRegion="Tripple Q-region"/>
 				<Detect2Chars attribute="Comment" char="/" char1="/" context="Comment SlashSlash"/>
@@ -201,11 +201,13 @@
 
 			<context name="Tripple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Tripple A-region"/>
+				<IncludeRules context="##Alerts"/>
 			</context>
 
 			<context name="Tripple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<HlCChar attribute="Comment" context="#stay"/>
 				<RegExpr attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Tripple Q-region"/>
+				<IncludeRules context="##Alerts"/>
 			</context>
 
 			<context name="Tripple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
@@ -238,6 +240,8 @@
 
 			<context name="Comment SlashSlash" attribute="Comment" lineEndContext="#pop" >
 				<LineContinue attribute="Comment" context="#stay"/>
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 
 			<context name="Single A-string" attribute="String" lineEndContext="#stay">
@@ -267,6 +271,11 @@
 				<RegExpr attribute="String Substitution" String="%[a-zA-Z]" context="#stay"/>
 				<DetectChar attribute="Raw String" char="&quot;" context="#pop"/>
 			</context>
+
+			<context name="Comment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
+			</context>
 		</contexts>
 
 
@@ -295,8 +304,8 @@
 	<general>
 		<folding indentationsensitive="1" />
 		<emptyLines>
-			<emptyLine regexpr="\s+" casesensitive="false"/>
-			<emptyLine regexpr="\s*#.*$" casesensitive="false"/>
+			<emptyLine regexpr="\s+"/>
+			<emptyLine regexpr="\s*#.*$"/>
 		</emptyLines>
 		<comments>
 			<comment name="singleLine" start="#" position="afterwhitespace"/>
@@ -304,3 +313,4 @@
 		<keywords casesensitive="1" />
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/c.xml b/xml/c.xml
--- a/xml/c.xml
+++ b/xml/c.xml
@@ -10,7 +10,7 @@
     <!ENTITY pphash "&ispphash;\s*">
 ]>
 <language name="C" section="Sources"
-          version="9" kateversion="5.0"
+          version="11" kateversion="5.0"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -119,10 +119,8 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-	<RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
         <RegExpr context="AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Data Type" context="#stay" String="types"/>
@@ -137,9 +135,7 @@
 
         <HlCChar attribute="Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
       </context>
 
@@ -149,17 +145,32 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
 
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />
+      </context>
+
       <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
@@ -187,27 +198,19 @@
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
         <LineContinue attribute="Preprocessor" context="#stay"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/" />
+        <IncludeRules context="FindComments" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
         <LineContinue attribute="Preprocessor" context="#stay"/>
       </context>
 
-      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
-      </context>
-
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if)" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
@@ -218,9 +221,7 @@
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Comment" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
       </context>
@@ -280,8 +281,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" additionalDeliminator="'&quot;" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/clojure.xml b/xml/clojure.xml
--- a/xml/clojure.xml
+++ b/xml/clojure.xml
@@ -22,7 +22,7 @@
  * Boston, MA  02110-1301, USA.                                       *
  **********************************************************************
  -->
-<language version="10" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
+<language version="12" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
   <highlighting>
     <list name="definitions">
       <item>def</item>
@@ -741,13 +741,14 @@
         <DetectChar attribute="Brackets1" context="Level1" char="("/>
       </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-            <StringDetect attribute="Float" context="#pop" String="M" insensitive="false"/>
+        <StringDetect attribute="Float" context="#pop" String="M" insensitive="false"/>
       </context>
       <context name="Int Suffixes" attribute="Decimal" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-            <StringDetect attribute="Decimal" context="#pop" String="N" insensitive="false"/>
+        <StringDetect attribute="Decimal" context="#pop" String="N" insensitive="false"/>
       </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <RegExpr String="(FIXME|TODO):?" attribute="Alert" context="#stay"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context name="function_decl_documentable" attribute="Function" lineEndContext="#stay">
         <RegExpr attribute="Function" context="#pop!DocumentationPossible" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*!\?']*\s*"/>
@@ -859,19 +860,18 @@
       <itemData name="Regexpr" defStyleNum="dsSpecialString"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
       <itemData name="Documentation" defStyleNum="dsDocumentation"/>
-      <itemData name="Alert" defStyleNum="dsAlert" spellChecking="false"/>
       <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Readermacro" defStyleNum="dsPreprocessor"/>
       <itemData name="BracketsSet" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00"/>
       <itemData name="BracketsMeta" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
-      <itemData name="BracketsMap" defStyleNum="dsNormal" color="#206620" selColor="#219921"/>
+      <itemData name="BracketsMap" defStyleNum="dsNormal" color="#33ab33" selColor="#219921"/>
       <itemData name="BracketsSquare" defStyleNum="dsNormal" color="#3333ff" selColor="#3333aa"/>
       <itemData name="Brackets1" defStyleNum="dsNormal" color="#ff0000" selColor="#ffaa00" bold="0" italic="0"/>
       <itemData name="Brackets2" defStyleNum="dsNormal" color="#ff8800" selColor="#ffff00" bold="0" italic="0"/>
       <itemData name="Brackets3" defStyleNum="dsNormal" color="#888800" selColor="#888888" bold="0" italic="0"/>
-      <itemData name="Brackets4" defStyleNum="dsNormal" color="#008800" selColor="#000000" bold="0" italic="0"/>
-      <itemData name="Brackets5" defStyleNum="dsNormal" color="#000088" selColor="#000000" bold="0" italic="0"/>
-      <itemData name="Brackets6" defStyleNum="dsNormal" color="#880088" selColor="#000000" bold="0" italic="0"/>
+      <itemData name="Brackets4" defStyleNum="dsNormal" color="#008800" bold="0" italic="0"/>
+      <itemData name="Brackets5" defStyleNum="dsNormal" color="#3689e6" bold="0" italic="0"/>
+      <itemData name="Brackets6" defStyleNum="dsNormal" color="#a100a1" bold="0" italic="0"/>
     </itemDatas>
   </highlighting>
   <general>
@@ -881,3 +881,4 @@
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -4,35 +4,20 @@
   <!ENTITY id_re "[_A-Za-z][\-_0-9A-Za-z]*">
 ]>
 <!--
-  This file is part of KDE's kate project.
+    This file is part of KDE's kate project.
 
-  Copyright 2004 Alexander Neundorf (neundorf@kde.org)
-  Copyright 2005 Dominik Haumann (dhdev@gmx.de)
-  Copyright 2007,2008,2013,2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
-  Copyright 2013-2015,2017-2020 Alex Turbov (i.zaufi@gmail.com)
+    SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>
+    SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
+    SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>
+    SPDX-FileCopyrightText: 2013-2015, 2017-2020 Alex Turbov <i.zaufi@gmail.com>
 
- **********************************************************************
- * This library is free software; you can redistribute it and/or      *
- * modify it under the terms of the GNU Lesser General Public         *
- * License as published by the Free Software Foundation; either       *
- * version 2 of the License, or (at your option) any later version.   *
- *                                                                    *
- * This library is distributed in the hope that it will be useful,    *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
- * Lesser General Public License for more details.                    *
- *                                                                    *
- * You should have received a copy of the GNU Lesser General Public   *
- * License along with this library; if not, write to the              *
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,   *
- * Boston, MA  02110-1301, USA.                                       *
- **********************************************************************
+    SPDX-License-Identifier: LGPL-2.0-or-later
  -->
 
 <language
     name="CMake"
-    version="24"
-    kateversion="2.4"
+    version="25"
+    kateversion="5.0"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
     style="CMake"
@@ -2852,9 +2837,7 @@
         <WordDetect String="ctest_test" insensitive="true" attribute="Command" context="ctest_test_ctx" />
         <WordDetect String="ctest_update" insensitive="true" attribute="Command" context="ctest_update_ctx" />
         <WordDetect String="ctest_upload" insensitive="true" attribute="Command" context="ctest_upload_ctx" />
-        <RegExpr attribute="Region Marker" context="RST Documentation" String="^#\[(=*)\[\.rst:" column="0" />
-        <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" />
-        <DetectChar attribute="Comment" context="Comment" char="#" />
+        <DetectChar attribute="Comment" context="Match Comments and Docs" char="#" lookAhead="true" />
         <DetectIdentifier attribute="User Function/Macro" context="User Function" />
         <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&id_re;@" lookAhead="true" />
         <!-- Include keywords matching for language autocompleter work -->
@@ -4134,11 +4117,13 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args">
         <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="(" />
         <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />
-        <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$n\\]" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
         <DetectChar attribute="Strings" context="String" char="&quot;" />
-        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" />
-        <RegExpr attribute="Comment" context="Bracketed Comment" String="#\[(=*)\[" />
-        <DetectChar attribute="Comment" context="Comment" char="#" />
+        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" beginRegion="BracketedString" />
+        <DetectChar attribute="Comment" context="Match Comments" char="#" lookAhead="true" />
         <IncludeRules context="Detect Builtin Variables" />
         <IncludeRules context="Detect Variable Substitutions" />
         <IncludeRules context="Detect Special Values" />
@@ -4147,42 +4132,62 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">
-        <RegExpr attribute="True Special Arg" context="#stay" String="\b(TRUE|ON)\b" />
-        <RegExpr attribute="False Special Arg" context="#stay" String="\b(FALSE|OFF|(&id_re;-)?NOTFOUND)\b" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="TRUE" />
+        <WordDetect attribute="True Special Arg" context="#stay" String="ON" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="FALSE" />
+        <WordDetect attribute="False Special Arg" context="#stay" String="OFF" />
+        <RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&id_re;-)?NOTFOUND\b" />
         <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9]\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets">
-        <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(::&id_re;)*\b" />
+        <RegExpr attribute="Aliased Targets" context="#stay" String="\b&id_re;::&id_re;(?:\:\:&id_re;)*\b" />
       </context>
 
+      <context attribute="Comment" lineEndContext="#pop" name="Match Comments">
+        <RegExpr attribute="Comment" context="#pop!Bracketed Comment" String="#\[(=*)\[" beginRegion="BracketedComment" />
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Match Comments and Docs">
+        <RegExpr attribute="Region Marker" context="#pop!RST Documentation" String="^#\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation" />
+        <IncludeRules context="Match Comments" />
+      </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <LineContinue attribute="Comment" context="#pop" />
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
-        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" />
+        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation" />
         <IncludeRules context="##reStructuredText" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true">
         <LineContinue attribute="Comment" context="#stay" />
-        <RegExpr attribute="Comment" context="#pop" String=".*\]%1\]" dynamic="true" />
+        <DetectSpaces />
+        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment" />
         <IncludeRules context="##Alerts" />
         <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Strings" lineEndContext="#stay" name="String">
         <RegExpr attribute="Strings" context="#pop" String="&quot;(?=[ );]|$)" />
-        <RegExpr attribute="Escapes" context="#stay" String="\\[&quot;$nrt\\]" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="r" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="t" />
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
         <IncludeRules context="Detect Variable Substitutions" />
         <IncludeRules context="Detect Generator Expressions" />
       </context>
 
       <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true">
-        <RegExpr attribute="Strings" context="#pop" String="\]%1\]" dynamic="true" />
+        <StringDetect attribute="Strings" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedString" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions">
@@ -4211,10 +4216,10 @@
       <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" />
       <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" />
       <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
-      <itemData name="Escapes" defStyleNum="dsChar" spellChecking="false" />
+      <itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false" />
       <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
-      <itemData name="CMake Internal Variable" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
-      <itemData name="Internal Name" defStyleNum="dsDecVal" color="#303030" selColor="#303030" spellChecking="false" />
+      <itemData name="CMake Internal Variable" defStyleNum="dsVariable" spellChecking="false" />
+      <itemData name="Internal Name" defStyleNum="dsVariable" spellChecking="false" />
       <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />
       <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />
       <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
@@ -4230,11 +4235,12 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="#" />
+      <comment name="singleLine" start="#" position="afterwhitespace" />
+      <comment name="multiLine" start="#[[" end="]]" region="BracketedComment"/>
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
 
-<!-- kate: indent-width 2; tab-width 2; -->
+<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
 
diff --git a/xml/cmake.xml.patch b/xml/cmake.xml.patch
deleted file mode 100644
--- a/xml/cmake.xml.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- cmake.xml.orig	2018-06-08 10:09:39.000000000 -0700
-+++ cmake.xml	2018-06-08 09:49:50.000000000 -0700
-@@ -3304,6 +3304,10 @@
-       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables">
-         <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" />
-         <IncludeRules context="Detect More Builtin Variables" />
-+        <!-- JGM: next line is needed because we don't really handle
-+             \b at the beginning of a regex, and we don't want to
-+             capture part of FOO_BAR as an "Internal Name" -->
-+        <RegExpr attribute="Normal Text" context="#stay" String="&id_re;\b" />
-         <RegExpr attribute="Internal Name" context="#stay" String="\b_&id_re;\b" />
-       </context>
- 
diff --git a/xml/coffee.xml b/xml/coffee.xml
--- a/xml/coffee.xml
+++ b/xml/coffee.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 
 <language name="CoffeeScript"
-          version="12"
+          version="13"
           kateversion="5.0"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
@@ -348,7 +348,7 @@
   <general>
     <folding indentationsensitive="1"/>
     <comments>
-      <comment name="singleLine" start="#"/>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
       <comment name="multiLine" start="###" end="###" region="Comment"/>
     </comments>
     <keywords casesensitive="1" additionalDeliminator="#'`"/>
@@ -357,3 +357,4 @@
     </emptyLines>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/coldfusion.xml b/xml/coldfusion.xml
--- a/xml/coldfusion.xml
+++ b/xml/coldfusion.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="ColdFusion" version="3" kateversion="2.2" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
+<language name="ColdFusion" version="4" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
 
 	<highlighting>
 
@@ -510,111 +510,109 @@
 		<contexts>
 
 			<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
-				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />
-				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" />
-				<RegExpr attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;[cC][fF][sS][cC][rR][iI][pP][tT]" />
-				<RegExpr attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;[sS][cC][rR][iI][pP][tT]" />
-				<RegExpr attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;[sS][tT][yY][lL][eE]" />
+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
+				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" beginRegion="HTML Comment" />
+				<StringDetect attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;cfscript" insensitive="true" beginRegion="CF Script" />
+				<StringDetect attribute="Script Tags" context="ctxSCRIPT Tag" String="&lt;script" insensitive="true" beginRegion="Script" />
+				<StringDetect attribute="Style Tags" context="ctxSTYLE Tag" String="&lt;style" insensitive="true" beginRegion="Style" />
 				<DetectChar attribute="HTML Entities" context="ctxHTML Entities" char="&amp;" />
-				<RegExpr attribute="Custom Tags" context="ctxCustom Tag" String="&lt;\/?[cC][fF]_" />
-				<RegExpr attribute="CFX Tags" context="ctxCFX Tag" String="&lt;\/?[cC][fF][xX]_" />
-				<RegExpr attribute="CF Tags" context="ctxCF Tag" String="&lt;\/?[cC][fF]" />
-				<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?([tT][aAhHbBfFrRdD])|([cC][aA][pP][tT])" />
-				<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?[aA] " />
-				<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?[iI][mM][gG] " />
+				<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;cf_" insensitive="true" />
+				<StringDetect attribute="Custom Tags" context="ctxCustom Tag" String="&lt;/cf_" insensitive="true" />
+				<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;cfx_" insensitive="true" />
+				<StringDetect attribute="CFX Tags" context="ctxCFX Tag" String="&lt;/cfx_" insensitive="true" />
+				<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;cf" insensitive="true" />
+				<StringDetect attribute="CF Tags" context="ctxCF Tag" String="&lt;/cf" insensitive="true" />
+				<RegExpr attribute="Table Tags" context="ctxTable Tag" String="&lt;\/?(?:[tT][aAhHbBfFrRdD])|(?:[cC][aA][pP][tT])" />
+				<RegExpr attribute="Anchor Tags" context="ctxAnchor Tag" String="&lt;\/?a(?=[&gt;\s]|$)" insensitive="true" />
+				<RegExpr attribute="Image Tags" context="ctxImage Tag" String="&lt;\/?img(?=[&gt;\s]|$)" insensitive="true" />
+				<StringDetect attribute="Anchor Tags" context="#stay" String="&lt;a/&gt;" insensitive="true" />
+				<StringDetect attribute="Image Tags" context="#stay" String="&lt;img/&gt;" insensitive="true" />
 				<RegExpr attribute="Tags" context="ctxTag" String="&lt;!?\/?[a-zA-Z0-9_]+" />
 			</context>
 
 
+			<context name="Tag Content" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Tag Attributes" context="#stay" String="(?:\s|^)[A-Za-z_:*][\w.:_-]*(?=\s*\=)" />
+				<DetectChar attribute="Normal Text" context="#stay" char="=" />
+				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
+				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
+			</context>
 
 			<context name="ctxCFSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
 				<DetectChar attribute="Script Tags" context="ctxCFSCRIPT Block" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
 				<DetectChar attribute="Script Tags" context="ctxSCRIPT Block" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxSTYLE Tag" attribute="Style Tags" lineEndContext="#stay">
 				<DetectChar attribute="Style Tags" context="ctxSTYLE Block" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 
 
 			<context name="ctxTag" attribute="Tags" lineEndContext="#stay">
 				<DetectChar attribute="Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxTable Tag" attribute="Table Tags" lineEndContext="#stay">
 				<DetectChar attribute="Table Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxAnchor Tag" attribute="Anchor Tags" lineEndContext="#stay">
 				<DetectChar attribute="Anchor Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxImage Tag" attribute="Image Tags" lineEndContext="#stay">
 				<DetectChar attribute="Image Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxCF Tag" attribute="CF Tags" lineEndContext="#stay">
 				<DetectChar attribute="CF Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxCustom Tag" attribute="Custom Tags" lineEndContext="#stay">
 				<DetectChar attribute="Custom Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 			<context name="ctxCFX Tag" attribute="CFX Tags" lineEndContext="#stay">
 				<DetectChar attribute="CFX Tags" context="#pop" char="&gt;" />
-				<DetectChar attribute="Normal Text" context="#stay" char="=" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<IncludeRules context="Tag Content" />
 			</context>
 
 
 
 			<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">
-				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" />
-				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
+				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
+				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTML Comment" />
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 
 			<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">
-				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" />
+				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" endRegion="CF Comment" />
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 
 			<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">
-        		<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" />
+				<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" endRegion="CComment" />
+				<IncludeRules context="##Alerts" />
 			</context>
 
-			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop" />
+			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop">
+				<IncludeRules context="##Alerts" />
+			</context>
 
 			<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop">
 				<DetectChar attribute="HTML Entities" context="#pop" char=";" />
@@ -623,49 +621,49 @@
 
 
 			<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
-				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />
+				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />
+				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" />
 				<Int attribute="Script Numbers" context="#stay" />
 				<Float attribute="Script Numbers" context="#stay" />
-				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />
+				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" />
 				<AnyChar attribute="Brackets" context="#stay" String="{}" />
 
 				<keyword attribute="Script Keywords" context="#stay" String="CFSCRIPT Keywords" />
 				<keyword attribute="Script Functions" context="#stay" String="CFSCRIPT Functions" />
-				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[cC][fF][sS][cC][rR][iI][pP][tT]&gt;" />
+				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/cfscript&gt;" insensitive="true" endRegion="CF Script" />
 			</context>
 
 
 
 			<context name="ctxSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
-				<RegExpr attribute="Script Strings" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Script Strings" context="#stay" String="'[^']*'" />
+				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />
+				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" />
 				<Int attribute="Script Numbers" context="#stay" />
 				<Float attribute="Script Numbers" context="#stay" />
-				<AnyChar attribute="Script Operators" context="#stay" String="[()[\]=+-*/]+" />
+				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" />
 				<AnyChar attribute="Brackets" context="#stay" String="{}" />
 
 				<keyword attribute="Script Keywords" context="#stay" String="Script Keywords" />
 				<keyword attribute="Script Objects" context="#stay" String="Script Objects" />
 				<keyword attribute="Script Functions" context="#stay" String="Script Methods" />
-				<RegExpr attribute="Script Tags" context="#pop#pop" String="&lt;/[sS][cC][rR][iI][pP][tT]&gt;" />
+				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/script&gt;" insensitive="true" endRegion="Script" />
 			</context>
 
 
 
 			<context name="ctxSTYLE Block" attribute="Style Selectors" lineEndContext="#stay">
-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<DetectChar attribute="Brackets" context="ctxStyle Properties" char="{" />
-				<RegExpr attribute="Style Tags" context="#pop#pop" String="&lt;/[sS][tT][yY][lL][eE]&gt;" />
+				<StringDetect attribute="Style Tags" context="#pop#pop" String="&lt;/style&gt;" insensitive="true" endRegion="Style" />
 			</context>
 
 			<context name="ctxStyle Properties" attribute="Style Properties" lineEndContext="#stay">
 				<DetectChar attribute="Brackets" context="#pop" char="}" />
-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" />
+				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<DetectChar attribute="Normal Text" context="ctxStyle Values" char=":" />
 			</context>
 
@@ -674,41 +672,42 @@
 				<DetectChar attribute="Normal Text" context="#stay" char="," />
 				<Int attribute="Numbers" context="#stay" />
 				<Float attribute="Numbers" context="#stay" />
-				<RegExpr attribute="Numbers" context="#stay" String="#([0-9a-fA-F]{3})|([0-9a-fA-F]{6})" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="&quot;[^&quot;]*&quot;" />
-				<RegExpr attribute="Attribute Values" context="#stay" String="'[^']*'" />
+				<RegExpr attribute="Numbers" context="#stay" String="#(?:[0-9a-fA-F]{3})|(?:[0-9a-fA-F]{6})" />
+				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
+				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
 			</context>
 
 		</contexts>
 
 		<itemDatas>
 
-			<itemData name="Normal Text" defStyleNum="dsNormal" />
-			<itemData name="Tags" defStyleNum="dsNormal"				color="#000080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Table Tags" defStyleNum="dsNormal"			color="#008080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Script Tags" defStyleNum="dsNormal"			color="#800000" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Image Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Style Tags" defStyleNum="dsNormal"			color="#800080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Anchor Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Attribute Values" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="HTML Comment" defStyleNum="dsComment"		color="#008000" selColor="#999999" bold="0" italic="0" />
-			<itemData name="CF Comment" defStyleNum="dsComment"			color="#ff9900" selColor="#999999" bold="0" italic="0" />
-			<itemData name="Script Comment" defStyleNum="dsComment"		color="#ff9900" selColor="#999999" bold="0" italic="0" />
-			<itemData name="CF Tags" defStyleNum="dsNormal"				color="#800000" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Custom Tags" defStyleNum="dsNormal"			color="#cc6666" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="CFX Tags" defStyleNum="dsNormal"			color="#008000" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Numbers" defStyleNum="dsNormal"				color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="HTML Entities" defStyleNum="dsNormal"		color="#000000" selColor="#ffffff" bold="1" italic="0" />
-			<itemData name="Style Selectors" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Style Properties" defStyleNum="dsNormal"	color="#000080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Style Values" defStyleNum="dsNormal"		color="#ff0000" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Brackets" defStyleNum="dsNormal"			color="#000080" selColor="#ffffff" bold="1" italic="0" />
-			<itemData name="Script Numbers" defStyleNum="dsNormal"		color="#ff00ff" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Script Strings" defStyleNum="dsNormal"		color="#008080" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Script Operators" defStyleNum="dsNormal"	color="#0000ff" selColor="#ffffff" bold="0" italic="0" />
-			<itemData name="Script Keywords" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />
-			<itemData name="Script Functions" defStyleNum="dsFunction"	bold="1" />
-			<itemData name="Script Objects" defStyleNum="dsNormal"		color="#0000cc" selColor="#ffffff" bold="1" italic="0" />
+			<itemData name="Normal Text"      defStyleNum="dsNormal" />
+			<itemData name="Tags"             defStyleNum="dsKeyword" spellChecking="false"/> <!-- #000080 -->
+			<itemData name="Table Tags"       defStyleNum="dsVariable" bold="1" spellChecking="false" /> <!-- #008080 -->
+			<itemData name="Script Tags"      defStyleNum="dsWarning" bold="1" spellChecking="false" /> <!-- #800000 -->
+			<itemData name="Image Tags"       defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->
+			<itemData name="Style Tags"       defStyleNum="dsInformation" bold="1" spellChecking="false" /> <!-- #800080 -->
+			<itemData name="Anchor Tags"      defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #008000 -->
+			<itemData name="Tag Attributes"   defStyleNum="dsOthers" spellChecking="false"/>
+			<itemData name="Attribute Values" defStyleNum="dsString" /> <!-- #0000ff -->
+			<itemData name="HTML Comment"     defStyleNum="dsComment" /> <!-- #008000 -->
+			<itemData name="CF Comment"       defStyleNum="dsComment" /> <!-- #ff9900 -->
+			<itemData name="Script Comment"   defStyleNum="dsComment" /> <!-- #ff9900 -->
+			<itemData name="CF Tags"          defStyleNum="dsFunction" bold="1" spellChecking="false" /> <!-- #800000 -->
+			<itemData name="Custom Tags"      defStyleNum="dsDataType" bold="1" spellChecking="false" /> <!-- #cc6666 -->
+			<itemData name="CFX Tags"         defStyleNum="dsOthers" bold="1" spellChecking="false" /> <!-- #008000 -->
+			<itemData name="Numbers"          defStyleNum="dsDecVal" spellChecking="false" /> <!-- #0000ff -->
+			<itemData name="HTML Entities"    defStyleNum="dsInformation" spellChecking="false" /> <!-- #000000 -->
+			<itemData name="Style Selectors"  defStyleNum="dsChar" /> <!-- #ff00ff -->
+			<itemData name="Style Properties" defStyleNum="dsAttribute" /> <!-- #000080 -->
+			<itemData name="Style Values"     defStyleNum="dsVerbatimString" /> <!-- #ff0000 -->
+			<itemData name="Brackets"         defStyleNum="dsKeyword" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Script Numbers"   defStyleNum="dsDecVal" spellChecking="false" /> <!-- #ff00ff -->
+			<itemData name="Script Strings"   defStyleNum="dsString" /> <!-- #008080 -->
+			<itemData name="Script Operators" defStyleNum="dsKeyword" spellChecking="false" /> <!-- #0000ff -->
+			<itemData name="Script Keywords"  defStyleNum="dsControlFlow" spellChecking="false" /> <!-- #0000cc -->
+			<itemData name="Script Functions" defStyleNum="dsFunction" bold="1" spellChecking="false" />
+			<itemData name="Script Objects"   defStyleNum="dsExtension" spellChecking="false" /> <!-- #0000cc -->
 
 		</itemDatas>
 
@@ -718,9 +717,7 @@
 
 		<comments>
 
-			<comment name="multiLine" start="&lt;!--" end="--&gt;" />
-			<comment name="multiLine" start="/*" end="*/" />
-			<comment name="singleLine" start="//" />
+			<comment name="multiLine" start="&lt;!---" end="---&gt;" region="CF Comment" />
 
 		</comments>
 
@@ -729,3 +726,4 @@
 	</general>
 
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/commonlisp.xml b/xml/commonlisp.xml
--- a/xml/commonlisp.xml
+++ b/xml/commonlisp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="6" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
+<language version="8" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
   <highlighting>
     <list name="symbols">
       <item>&lt;</item>
@@ -1114,8 +1114,8 @@
       <context name="Normal" attribute="Normal" lineEndContext="#stay">
         <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>
         <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
-        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="region"/>
+        <DetectChar attribute="Comment" context="Comment" char=";"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="BlockComment"/>
         <DetectChar attribute="Brackets" context="#stay" char="("/>
         <DetectChar attribute="Brackets" context="#stay" char=")"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
@@ -1125,13 +1125,16 @@
         <keyword attribute="Definition" context="function_decl" String="definitions"/>
         <RegExpr attribute="Char" context="#stay" String="#\\."/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="t"/>
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="f"/>
         <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>
-        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>
         <Float attribute="Float" context="#stay"/>
         <Int attribute="Decimal" context="#stay"/>
       </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="region"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="BlockComment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context name="function_decl" attribute="Function" lineEndContext="#stay">
         <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
@@ -1147,6 +1150,10 @@
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal"      defStyleNum="dsNormal"/>
@@ -1171,7 +1178,8 @@
     <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>
     <comments>
       <comment name="singleLine" start=";;" />
-      <comment name="multiLine" start="#|" end="|#" />
+      <comment name="multiLine" start="#|" end="|#" region="BlockComment" />
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/cs.xml b/xml/cs.xml
--- a/xml/cs.xml
+++ b/xml/cs.xml
@@ -1,5 +1,5 @@
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="C#" version="5" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
+<language name="C#" version="8" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
   <highlighting>
     <list name="keywords">
       <item>abstract</item>
@@ -100,9 +100,8 @@
         <Int attribute="Decimal" context="Int Suffixes"/>
         <HlCChar attribute="Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
         <RegExpr attribute="Keyword" context="#stay" String="\bpartial(?=\s+(class|struct|interface|void))"/>
@@ -110,11 +109,11 @@
         <RegExpr attribute="Keyword" context="#stay" String="\byield(?=\s+(return|break))"/>
         <RegExpr attribute="Keyword" context="#stay" String="\b(set|get)(?=\s*[;{])"/>
         <RegExpr attribute="Keyword" context="#stay" String="\bglobal(?=\s*::\s*\w+)"/>
-        <RegExpr attribute="Decimal" context="#stay" String="#region.*$" beginRegion="Region1"/>
-        <RegExpr attribute="Decimal" context="#stay" String="#endregion.*$" endRegion="Region1"/>
+        <StringDetect attribute="Decimal" context="Decimal" String="#region" beginRegion="Region1"/>
+        <StringDetect attribute="Decimal" context="Decimal" String="#endregion" endRegion="Region1"/>
         <RegExpr attribute="Function" context="#stay" String="\b[_\w][_\w\d]*(?=[\s]*[(])" />
-        <RegExpr attribute="Symbol" context="Member" String="[.]{1,1}" />
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+        <DetectChar attribute="Symbol" context="Member" char="."/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
       </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
           <AnyChar String="fF" attribute="Float" context="#pop"/>
@@ -137,10 +136,21 @@
       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
         <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="BlockComment" />
+      </context>
+      <context attribute="Decimal" lineEndContext="#pop" name="Decimal"/>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal"/>
@@ -161,8 +171,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -38,7 +38,7 @@
 
 -->
 
-<language name="CSS" version="9" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="CSS" version="10" kateversion="5.0" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
     <!-- https://www.w3.org/Style/CSS/current-work -->
 
     <highlighting>
@@ -1585,6 +1585,7 @@
                 <DetectSpaces />
                 <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
                 <IncludeRules context="##Alerts" />
+                <IncludeRules context="##Modelines" />
                 <DetectIdentifier />
             </context>
 
@@ -1731,8 +1732,9 @@
     <general>
         <keywords casesensitive="0" weakDeliminator="-%@" />
         <comments>
-            <comment name="multiLine" start="/*" end="*/" />
+            <comment name="multiLine" start="/*" end="*/" region="comment" />
         </comments>
     </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/curry.xml b/xml/curry.xml
--- a/xml/curry.xml
+++ b/xml/curry.xml
@@ -30,7 +30,7 @@
   <!-- dashes introducing a currydoc comment -->
   <!ENTITY currydoc    "---" >
 ]>
-<language name="Curry" version="1" kateversion="5.0"
+<language name="Curry" version="2" kateversion="5.0"
           section="Sources" extensions="*.curry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
           indenter="haskell">
@@ -229,13 +229,18 @@
     <!-- Multiline comment -->
     <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay" >
       <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Multiline Comment" />
+      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Modelines" />
     </context>
 
     <!-- Currydoc -->
     <context name="Currydoc" attribute="Currydoc" lineEndContext="#pop" />
 
     <!-- Single line comment -->
-    <context name="Comment" attribute="Comment" lineEndContext="#pop" />
+    <context name="Comment" attribute="Comment" lineEndContext="#pop">
+      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Modelines" />
+    </context>
 
     <!-- Import section -->
     <context name="Import" attribute="Normal" lineEndContext="#pop" >
@@ -356,9 +361,10 @@
   <general>
     <folding indentationsensitive="1"/>
     <comments>
-      <comment name="singleLine" start="--" />
+      <comment name="singleLine" start="--" position="afterwhitespace" />
       <comment name="multiLine" start="{-" end="-}" region="Multiline Comment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/d.xml b/xml/d.xml
--- a/xml/d.xml
+++ b/xml/d.xml
@@ -99,7 +99,7 @@
    ========================================================================
 -->
 
-<language name="D" version="5" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
+<language name="D" version="7" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
   <highlighting>
     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->
     <list name="userkeywords">
@@ -737,17 +737,20 @@
       <context name="CommentLine" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context name="CommentBlock" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context name="CommentNested" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
-       <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
-       <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
-       <IncludeRules context="##Alerts" />
+        <Detect2Chars attribute="Comment" context="CommentNested" char="/" char1="+" beginRegion="CommentNested"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="+" char1="/" endRegion="CommentNested"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       
       
@@ -864,14 +867,14 @@
       
       <!-- keywords -->
       <itemData name="Statement"      defStyleNum="dsKeyword"/>
-      <itemData name="Expression"     defStyleNum="dsKeyword"  color="#000080"/>
-      <itemData name="Declarator"     defStyleNum="dsKeyword"  color="#800000"/>
-      <itemData name="Template"       defStyleNum="dsKeyword"  color="#008000"/>
+      <itemData name="Expression"     defStyleNum="dsAttribute"  bold="1"/> <!-- #000080 -->
+      <itemData name="Declarator"     defStyleNum="dsWarning"    bold="1"/> <!-- #800000 -->
+      <itemData name="Template"       defStyleNum="dsOthers"     bold="1"/> <!-- #008000 -->
       
-      <itemData name="Attribute"      defStyleNum="dsKeyword"  color="#800080"/>
-      <itemData name="Deprecated"     defStyleNum="dsKeyword"  color="#800080" strikeOut="true"/>
+      <itemData name="Attribute"      defStyleNum="dsFunction"   bold="1"/> <!-- #800080 -->
+      <itemData name="Deprecated"     defStyleNum="dsFunction"   bold="1" strikeOut="true"/> <!-- #800080 -->
       
-      <itemData name="Property"       defStyleNum="dsDataType" color="#000080"/>
+      <itemData name="Property"       defStyleNum="dsDataType"   bold="1"/> <!-- #000080 -->
       
       <itemData name="Type"           defStyleNum="dsDataType"/>
       <itemData name="LibrarySymbols" defStyleNum="dsBuiltIn" italic="1"/>
@@ -879,20 +882,20 @@
       <itemData name="UserKeywords"   defStyleNum="dsDataType" italic="1"/>
 
       <!-- module, import -->
-      <itemData name="Module"         defStyleNum="dsKeyword"  color="#008000"/>
-      <itemData name="Module Name"    defStyleNum="dsNormal"   color="#008000"/>
+      <itemData name="Module"         defStyleNum="dsPreprocessor" bold="1"/> <!-- #008000 -->
+      <itemData name="Module Name"    defStyleNum="dsImport"/> <!-- #008000 -->
 
       <!-- pragma, special tokens -->
-      <itemData name="SpecialTokens"  defStyleNum="dsNormal"   color="#00aa00"/>
-      <itemData name="Pragma"         defStyleNum="dsKeyword"  color="#00aa00"/>
+      <itemData name="SpecialTokens"  defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->
+      <itemData name="Pragma"         defStyleNum="dsOthers"   bold="1"/> <!-- #00aa00 -->
 
       <!-- version, extern -->
-      <itemData name="Version"        defStyleNum="dsKeyword"  color="#808000"/>
-      <itemData name="Version Type"   defStyleNum="dsNormal"   bold="1"/>
-      <itemData name="Linkage"        defStyleNum="dsKeyword"  color="#808000"/>
-      <itemData name="Linkage Type"   defStyleNum="dsNormal"   bold="1"/>
+      <itemData name="Version"        defStyleNum="dsDecVal"/> <!-- #808000 -->
+      <itemData name="Version Type"   defStyleNum="dsNormal"      bold="1"/>
+      <itemData name="Linkage"        defStyleNum="dsInformation" bold="1"/> <!-- #808000 -->
+      <itemData name="Linkage Type"   defStyleNum="dsNormal"      bold="1"/>
 
-      <itemData name="Tests"        defStyleNum="dsKeyword"    color="#ff00ff"/>
+      <itemData name="Tests"        defStyleNum="dsFunction"      bold="1"/> <!-- #ff00ff -->
 
       <itemData name="Comment"        defStyleNum="dsComment"/>
       <itemData name="Region Marker"  defStyleNum="dsRegionMarker" />
@@ -917,10 +920,10 @@
       <itemData name="Delimited String Delimiter" defStyleNum="dsKeyword"/>
       
       <!-- Ddoc specific -->
-      <itemData name="Macros"      defStyleNum="dsOthers" color="#bf5fbf" selColor="#ffffff" bold="1" italic="0" />
-      <itemData name="Macro Text"  defStyleNum="dsNormal" color="#bf7fff" selColor="#ffffff" bold="0" italic="0" />
-      <itemData name="Ddoc"        defStyleNum="dsComment" color="#7f7fff" />
-      <itemData name="DdocSection" defStyleNum="dsKeyword" color="#7f7fff" bold="1" />
+      <itemData name="Macros"      defStyleNum="dsSpecialChar" bold="1" italic="0" /> <!-- #bf5fbf -->
+      <itemData name="Macro Text"  defStyleNum="dsAttribute" bold="0" italic="0" /> <!-- #bf7fff -->
+      <itemData name="Ddoc"        defStyleNum="dsDocumentation" /> <!-- #7f7fff -->
+      <itemData name="DdocSection" defStyleNum="dsAnnotation" bold="1" /> <!-- #7f7fff -->
       <itemData name="DdocCode"    defStyleNum="dsNormal" italic="1" />
     </itemDatas>
   </highlighting>
@@ -932,3 +935,4 @@
     <keywords casesensitive="true"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/diff.xml b/xml/diff.xml
--- a/xml/diff.xml
+++ b/xml/diff.xml
@@ -2,9 +2,6 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
   <!ENTITY file  "(====|\*\*\*|\-\-\-|diff|Only in .*:).*$">
-  <!ENTITY chunk "(\@\@|\d).*$">
-  <!ENTITY csep  "(\+\+\+|\-\-\-).*$">
-  <!ENTITY index  "Index:.*">
 ]>
 <!--
     2006-08-02: 1.10 Matthew Woehlke <mw_triad@sourceforge.net>
@@ -15,81 +12,88 @@
     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
      Fixed folding.
 -->
-<language name="Diff" version="5" kateversion="5.0" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
+<language name="Diff" version="6" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
 
   <highlighting>
 
     <contexts>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <RegExpr attribute="Header" context="Chunk" String="&chunk;" beginRegion="chunk" column="0"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal" fallthroughContext="AttrNormal">
+        <Detect2Chars attribute="Header" context="AttrHeader_Chunk" char="@" char1="@" beginRegion="chunk" column="0"/>
+        <AnyChar attribute="Header" context="AttrHeader_Chunk" String="0123456789" beginRegion="chunk" column="0"/>
         <RegExpr attribute="Header" context="RChunk" String="\*+$" beginRegion="chunk" column="0"/>
         <RegExpr attribute="File" context="#stay" String="Only in .*:.*$" column="0"/>
-        <RegExpr attribute="File" context="RFile" String="diff.*$" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="File" context="#stay" String="====.*$" column="0"/>
-        <RegExpr attribute="File" context="File" String="(\*\*\*|\-\-\-).*$" beginRegion="chunk" column="0"/>
+        <StringDetect attribute="File" context="AttrFile_RFile" String="diff" beginRegion="chunk" column="0"/>
+        <StringDetect attribute="File" context="AttrFile" String="====" column="0"/>
+        <StringDetect attribute="File" context="AttrFile_File" String="***" beginRegion="chunk" column="0"/>
+        <StringDetect attribute="File" context="AttrFile_File" String="---" beginRegion="chunk" column="0"/>
         <IncludeRules context="FindDiff"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="FindDiff">
-        <RegExpr attribute="File" context="#stay" String="\-\-\-.*$" column="0"/>
-        <RegExpr attribute="Header" context="#stay" String="&csep;" column="0"/>
+        <StringDetect attribute="File" context="AttrFile" String="---" column="0"/>
+        <StringDetect attribute="Header" context="AttrHeader" String="+++" column="0"/>
         <AnyChar attribute="Added line" context="Added" String="+&gt;" column="0"/>
         <AnyChar attribute="Removed line" context="Removed" String="-&lt;" column="0"/>
       </context>
 
       <!-- block contexts -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="File">
+      <context attribute="Normal Text" lineEndContext="#stay" name="File" fallthroughContext="AttrNormal">
         <IncludeRules context="FindDiff"/>
-        <RegExpr attribute="Header" context="ChunkInFile" String="&chunk;" beginRegion="chunk" column="0"/>
+        <Detect2Chars attribute="Header" context="AttrHeader_ChunkInFile" char="@" char1="@" beginRegion="chunk" column="0"/>
+        <AnyChar attribute="Header" context="AttrHeader_ChunkInFile" String="0123456789" beginRegion="chunk" column="0"/>
         <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>
         <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" column="0"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="Chunk">
+      <context attribute="Normal Text" lineEndContext="#stay" name="Chunk" fallthroughContext="AttrNormal">
         <IncludeRules context="FindDiff"/>
-        <RegExpr attribute="Header" context="#pop" String="&chunk;" endRegion="chunk" lookAhead="true" column="0"/>
+        <Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>
+        <AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ChunkInFile">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ChunkInFile" fallthroughContext="AttrNormal">
         <IncludeRules context="FindDiff"/>
-        <RegExpr attribute="Header" context="#pop" String="&chunk;" endRegion="chunk" lookAhead="true" column="0"/>
-        <RegExpr attribute="Normal Text" context="#pop" String="&index;" endRegion="chunk" column="0"/>
+        <Detect2Chars attribute="Header" context="#pop" char="@" char1="@" endRegion="chunk" lookAhead="true" column="0"/>
+        <AnyChar attribute="Header" context="#pop" String="0123456789" endRegion="chunk" lookAhead="true" column="0"/>
+        <StringDetect attribute="Normal Text" context="#pop!AttrNormal" String="Index:" endRegion="chunk" column="0"/>
         <RegExpr attribute="File" context="#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (old)" context="ChangedOld" char="!" column="0"/>
       </context>
 
       <!-- block contexts (diff -r) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="RFile">
+      <context attribute="Normal Text" lineEndContext="#stay" name="RFile" fallthroughContext="AttrNormal">
         <RegExpr attribute="File" context="#pop" String="(diff|Only in .*:).*$" endRegion="chunk" lookAhead="true" column="0"/>
         <RegExpr attribute="Header" context="#stay" String="&file;" column="0"/>
         <RegExpr attribute="Header" context="RChunkInFile" String="\*+$" beginRegion="chunk" column="0"/>
         <IncludeRules context="File"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="RChunk">
+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunk" fallthroughContext="AttrNormal">
         <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>
         <RegExpr attribute="Header" context="RChunkNew" String="\-\-\- .* \-\-\-\-$" column="0"/>
         <IncludeRules context="Chunk"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile">
+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFile" fallthroughContext="AttrNormal">
         <RegExpr attribute="Header" context="#stay" String="\*\*\* .* \*\*\*\*$" column="0"/>
         <RegExpr attribute="Header" context="RChunkInFileNew" String="\-\-\- .* \-\-\-\-$" column="0"/>
         <IncludeRules context="ChunkInFile"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkNew">
-        <RegExpr attribute="Header" context="#pop#pop" String="&chunk;" lookAhead="true" column="0"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkNew" fallthroughContext="AttrNormal">
+        <Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>
+        <AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>
         <IncludeRules context="FindDiff"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew">
-        <RegExpr attribute="Header" context="#pop#pop" String="&chunk;" lookAhead="true" column="0"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="RChunkInFileNew" fallthroughContext="AttrNormal">
+        <Detect2Chars attribute="Header" context="#pop#pop" char="@" char1="@" lookAhead="true" column="0"/>
+        <AnyChar attribute="Header" context="#pop#pop" String="0123456789" lookAhead="true" column="0"/>
         <RegExpr attribute="File" context="#pop#pop" String="&file;" endRegion="chunk" lookAhead="true" column="0"/>
         <DetectChar attribute="Changed line (new)" context="ChangedNew" char="!" column="0"/>
         <IncludeRules context="FindDiff"/>
@@ -101,6 +105,13 @@
       <context attribute="Changed line (old)" lineEndContext="#pop" name="ChangedOld"/>
       <context attribute="Changed line (new)" lineEndContext="#pop" name="ChangedNew"/>
 
+      <context attribute="Normal Text" lineEndContext="#pop" name="AttrNormal"/>
+      <context attribute="File" lineEndContext="#pop" name="AttrFile"/>
+      <context attribute="File" lineEndContext="#pop!File" name="AttrFile_File"/>
+      <context attribute="File" lineEndContext="#pop!RFile" name="AttrFile_RFile"/>
+      <context attribute="Header" lineEndContext="#pop" name="AttrHeader"/>
+      <context attribute="Header" lineEndContext="#pop!Chunk" name="AttrHeader_Chunk"/>
+      <context attribute="Header" lineEndContext="#pop!ChunkInFile" name="AttrHeader_ChunkInFile"/>
     </contexts>
 
     <itemDatas>
diff --git a/xml/djangotemplate.xml b/xml/djangotemplate.xml
--- a/xml/djangotemplate.xml
+++ b/xml/djangotemplate.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="Django HTML Template" version="4" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="5" kateversion="5.0" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
 
 <!--
     Based off of the katepart html syntax highlighting by Wilbert Berendsen.
@@ -59,6 +59,9 @@
 
   <context name="Template Comment" attribute="Template Comment" lineEndContext="#stay">
     <RegExpr attribute="Template Comment" context="#pop" String="\{%\s*endcomment\s*%\}" endRegion="templatecomment" />
+    <DetectSpaces />
+    <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Modelines" />
   </context>
 
   <context name="Template Var" attribute="Template Var" lineEndContext="#stay">
@@ -171,6 +174,7 @@
     <DetectSpaces/>
     <IncludeRules context="##Alerts" />
     <IncludeRules context="FindTemplate" />
+    <IncludeRules context="##Modelines" />
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
@@ -328,3 +332,4 @@
   </comments>
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/dot.xml b/xml/dot.xml
--- a/xml/dot.xml
+++ b/xml/dot.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->
-<language name="dot" version="3" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
+<language name="dot" version="4" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
 
   <highlighting>
 
@@ -133,12 +133,16 @@
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="CommentSL">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="CommentML">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
     </contexts>
@@ -162,7 +166,7 @@
 
     <comments>
       <comment name="singleLine" start="//"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
 
     <keywords casesensitive="1"/>
@@ -170,3 +174,4 @@
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/doxygen.xml b/xml/doxygen.xml
--- a/xml/doxygen.xml
+++ b/xml/doxygen.xml
@@ -2,9 +2,11 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
     <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->
+    <!ENTITY sl_word ".*?(?=&wordsep;)">
+    <!ENTITY ml_word ".*?(?=&wordsep;|\*/)">
 ]>
 <language name="Doxygen"
-          version="6"
+          version="7"
           kateversion="5.0"
           section="Markup"
           extensions="*.dox;*.doxygen"
@@ -42,10 +44,6 @@
       <item>\endrtfonly</item>       <item>@endrtfonly</item>
       <item>\endsecreflist</item>    <item>@endsecreflist</item>
       <item>\endxmlonly</item>       <item>@endxmlonly</item>
-      <item>\f[</item>               <item>@f[</item>
-      <item>\f]</item>               <item>@f]</item>
-      <item>\f$</item>               <item>@f$</item>
-      <!-- TODO Add @f{environment}{ and @f} -->
       <item>\hideinitializer</item>  <item>@hideinitializer</item>
       <item>\htmlonly</item>         <item>@htmlonly</item>
       <!-- TODO @internal is a candidate to be handled separately, cuz may introduce folding region -->
@@ -84,21 +82,6 @@
       <item>\test</item>             <item>@test</item>
       <item>\version</item>          <item>@version</item>
       <item>\xmlonly</item>          <item>@xmlonly</item>
-      <!-- TODO Introduce separate context for @~ ? -->
-      <item>\#</item>                <item>@#</item>
-      <item>\$</item>                <item>@$</item>
-      <item>\%</item>                <item>@%</item>
-      <item>\&amp;</item>            <item>@&amp;</item>
-      <item>\&gt;</item>             <item>@&gt;</item>
-      <item>\&lt;</item>             <item>@&lt;</item>
-      <item>\&quot;</item>           <item>@&quot;</item>
-      <item>\::</item>               <item>@::</item>
-      <item>\@</item>                <item>@@</item>
-      <item>\\</item>                <item>@\</item>
-      <item>\~</item>                <item>@~</item>
-      <item>\.</item>                <item>@.</item>
-      <item>\--</item>               <item>@--</item>
-      <item>\---</item>              <item>@---</item>
     </list>
 
     <list name="TagWord">
@@ -202,6 +185,12 @@
       <item>\var</item>              <item>@var</item>
       <item>\vhdlflow</item>         <item>@vhdlflow</item>
     </list>
+    <list name="TagEnd">
+      <item>\endcode</item>          <item>@endcode</item>
+      <item>\endverbatim</item>      <item>@endverbatim</item>
+      <item>\endmsc</item>           <item>@endmsc</item>
+      <item>\enddot</item>           <item>@enddot</item>
+    </list>
     <list name="Note">
       <item>\note</item>             <item>@note</item>
     </list>
@@ -231,8 +220,8 @@
       TODO Not all commands are handled properly nowadays :( Need few more contexts...
     -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <RegExpr attribute="Comment" context="LineComment" String="//(!|(/(?=[^/]|$)))&lt;?" />
-        <RegExpr attribute="Comment" context="BlockComment" String="/\*(\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment" />
+        <RegExpr attribute="Comment" context="LineComment" String="//(?:!|(?:/(?=[^/]|$)))&lt;?" />
+        <RegExpr attribute="Comment" context="BlockComment" String="/\*(?:\*[^*/]|!|[*!]&lt;|\*$)" beginRegion="BlockComment" />
         <RegExpr attribute="Region" context="#stay" String="//\s*@\{\s*$" beginRegion="MemberGroup" />
         <RegExpr attribute="Region" context="#stay" String="//\s*@\}\s*$"   endRegion="MemberGroup" />
         <RegExpr attribute="Region" context="#stay" String="/\*\s*@\{\s*\*/" beginRegion="MemberGroup" />
@@ -242,38 +231,21 @@
         <LineContinue attribute="Comment" context="#stay" />
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
-        <IncludeRules context="SL_DetectEnv" />
-        <keyword attribute="Tags" context="#stay" String="TagOnly" />
-        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />
-        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />
-        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />
-        <keyword attribute="Tags" context="SL_TagString" String="TagString" />
-        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />
-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\][^@\\ \t]+" />
         <DetectIdentifier />
-        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
-        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
+        <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />
+        <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />
+        <DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />
+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="BlockComment">
         <DetectSpaces />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
         <IncludeRules context="##Alerts" />
-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" beginRegion="Group" />
-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" endRegion="Group" />
-        <IncludeRules context="SL_DetectEnv" />
-        <keyword attribute="Tags" context="#stay" String="TagOnly" />
-        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />
-        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />
-        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />
-        <keyword attribute="Tags" context="ML_TagString" String="TagString" />
-        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />
-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\]([^@\\ \t\*]|\*(?!/))+" />
         <DetectIdentifier />
-        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />
-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
+        <DetectChar attribute="Comment" context="ML_StartTag" char="\" lookAhead="true" />
+        <DetectChar attribute="Comment" context="ML_StartTag" char="@" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
+        <DetectChar attribute="Comment" context="ML_StartHTMLTag" char="&lt;" lookAhead="true" />
+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
       </context>
 
       <!-- NOTE: all contexts beginning with ML_ are for multiline comments
@@ -284,123 +256,254 @@
                  much more complex and very hard to understand! (But use IncludeRules where the rules don't
                  refer to another SL_*/ML_* context, to help maintainability.)
       -->
+      <context attribute="Comment" lineEndContext="#pop" name="ML_StartTag">
+        <keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="#pop!ML_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="#pop!ML_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="#pop!ML_TagString" String="TagString" />
+        <keyword attribute="Tags" context="#pop!ML_TagWordString" String="TagWordString" />
+        <WordDetect attribute="Tags" context="#pop!ML_Code" String="\code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Code" String="@code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Formula" String="\f[" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Formula" String="@f[" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!ML_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!ML_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Msc" String="\msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Msc" String="@msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Dot" String="\dot" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!ML_Dot" String="@dot" beginRegion="VerbatimBlock" />
+        <IncludeRules context="Inc_OtherTag" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="ML_StartHTMLTag">
+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="#pop!ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
+        <StringDetect attribute="HTML Comment" context="#pop!ML_htmlcomment" String="&lt;!--" />
+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />
+      </context>
+
       <!-- tag contexts -->
       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWord">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
-        <IncludeRules context="SL_TagWord" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
+        <keyword attribute="Tags" context="#pop!ML_TagWord" String="TagWord" />
+        <IncludeRules context="ML_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="ML_TagParam">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
         <DetectSpaces />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in]" />
+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[out]" />
+        <StringDetect attribute="Tags" context="#pop!ML_TagWord" String="[in,out]" />
+        <IncludeRules context="ML_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordWord">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
         <DetectSpaces />
-        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
-      </context>
-      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->
-      <context attribute="Comment" lineEndContext="#pop#pop" name="ML_Tag2ndWord">
-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" lookAhead="true" />
-        <IncludeRules context="SL_Tag2ndWord" />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
+        <RegExpr attribute="Word" context="#pop!ML_TagWord" String="&ml_word;" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="ML_TagString">
         <DetectSpaces />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
         <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <RegExpr attribute="Description" context="#stay" String="." />
+        <RegExpr attribute="Description" context="#stay" String="[&lt;*]?[^&lt;*\s]+" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="ML_TagWordString">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
-        <IncludeRules context="SL_TagWordString" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
+        <IncludeRules context="ML_Inc_Word" />
       </context>
 
+      <context name="ML_Inc_Word" attribute="Word" lineEndContext="#pop">
+        <RegExpr attribute="Word" context="#pop" String="&ml_word;" />
+      </context>
+
+
       <!-- html contexts -->
       <context name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
-        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" />
+        <DetectSpaces />
+        <DetectChar attribute="Identifier" context="ML_identifiers" char="=" />
       </context>
       <context name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
       </context>
       <context name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <DetectChar attribute="Types" context="ML_types1" char="'" />
         <DetectChar attribute="Types" context="ML_types2" char="&quot;" />
       </context>
       <context name="ML_types1" attribute="Types" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="#pop#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <DetectChar attribute="Types" context="#pop#pop" char="'" />
       </context>
       <context name="ML_types2" attribute="Types" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="#pop#pop#pop#pop" char="*" char1="/" endRegion="BlockComment" />
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
+      <context name="ML_FindNextLine" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop!ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <Detect2Chars attribute="Comment" context="ML_VerbatimPrefix" char="*" char1="*" lookAhead="true" />
+        <DetectChar attribute="Comment" context="#pop" char="*" />
+      </context>
+      <context name="ML_VerbatimPrefix" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="*" />
+      </context>
+
+      <context name="ML_End_BlockComment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Error" context="#pop#pop#pop" char="*" char1="/" endRegion="BlockComment"/>
+      </context>
+
+      <context name="ML_Code" attribute="Code" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="ML_Verbatim" attribute="Verbatim" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="ML_Formula" attribute="Formulas" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
+      </context>
+
+      <context name="ML_FormulaShort" attribute="Formulas" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
+      </context>
+
+      <context name="ML_FormulaEnv" attribute="Word" lineEndContext="ML_FindNextLine">
+        <DetectChar attribute="Tags" context="#pop!ML_FormulaEnvStart" char="}" />
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+      </context>
+
+      <context name="ML_FormulaEnvStart" attribute="Formulas" lineEndContext="ML_FindNextLine" fallthroughContext="#pop!ML_FormulaEnvFormula">
+        <DetectSpaces attribute="Comment" />
+        <DetectChar attribute="Tags" context="#pop!ML_FormulaEnvFormula" char="{" />
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+      </context>
+
+      <context name="ML_FormulaEnvFormula" attribute="Formulas" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
+      </context>
+
+      <context name="ML_Msc" attribute="Message Sequence Chart" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="ML_Dot" attribute="Dot Graph" lineEndContext="ML_FindNextLine">
+        <Detect2Chars attribute="Comment" context="ML_End_BlockComment" char="*" char1="/" endRegion="VerbatimBlock" lookAhead="1"/>
+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />
+      </context>
+
       <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartTag">
+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="#pop!SL_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="#pop!SL_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="#pop!SL_TagString" String="TagString" />
+        <keyword attribute="Tags" context="#pop!SL_TagWordString" String="TagWordString" />
+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="\code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="@code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="\f[" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="@f[" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="\msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="@msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="\dot" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="@dot" beginRegion="VerbatimBlock" />
+        <IncludeRules context="Inc_OtherTag" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">
+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
+        <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="&lt;!--" />
+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />
+      </context>
+
       <!-- tag contexts -->
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">
         <DetectSpaces />
-        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">
         <DetectSpaces />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in]" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[out]" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in,out]" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">
         <DetectSpaces />
-        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
-      </context>
-      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->
-      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">
-        <DetectSpaces />
-        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <RegExpr attribute="Word" context="#pop!SL_TagWord" String="&sl_word;" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">
         <DetectSpaces />
         <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
         <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <RegExpr attribute="Description" context="#stay" String="." />
+        <RegExpr attribute="Description" context="#stay" String="&lt;?[^&lt;\s]+" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">
         <DetectSpaces />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
+      <context name="SL_Inc_Word" attribute="Word" lineEndContext="#pop">
+        <RegExpr attribute="Word" context="#pop" String="&sl_word;" />
+      </context>
 
       <!-- html contexts -->
       <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">
         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
-        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" />
+        <DetectSpaces />
+        <DetectChar attribute="Identifier" context="SL_identifiers" char="=" />
       </context>
       <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
       </context>
       <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">
-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectSpaces />
         <DetectChar attribute="Types" context="SL_types1" char="'" />
         <DetectChar attribute="Types" context="SL_types2" char="&quot;" />
       </context>
@@ -411,52 +514,90 @@
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
-      <context attribute="Comment" name="SL_DetectEnv" lineEndContext="#pop">
-        <RegExpr attribute="Tags" context="Code" String="[@\\]code\b" beginRegion="Code" />
-        <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim\b" beginRegion="Verbatim" />
-        <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" />
-        <RegExpr attribute="Tags" context="Msc" String="[@\\]msc\b" beginRegion="Msc" />
-        <RegExpr attribute="Tags" context="Dot" String="[@\\]dot\b" beginRegion="Dot" />
-        <keyword attribute="Note" context="#stay" String="Note" />
-        <keyword attribute="Warning" context="#stay" String="Warning" />
-        <keyword attribute="Attention" context="#stay" String="Attention" />
-        <keyword attribute="Todo" context="#stay" String="Todo" />
-        <RegExpr attribute="Entities" context="#stay" String="&amp;[A-Za-z]+&#59;" />
+      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces />
+        <StringDetect attribute="Comment" context="#pop" String="///" />
+        <StringDetect attribute="Comment" context="#pop" String="//!" />
+        <RegExpr attribute="Comment" context="#pop#pop#pop" String="." lookAhead="true" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Comment" name="SL_DetectComment" lineEndContext="#pop">
-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="BlockComment" />
-        <DetectChar attribute="Comment" context="#stay" char="*" />
-        <StringDetect attribute="Comment" context="#stay" String="///" />
+      <context name="SL_Code" attribute="Code" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Code" lineEndContext="#stay" name="Code">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode\b" endRegion="Code" />
+      <context name="SL_Verbatim" attribute="Verbatim" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim\b" endRegion="Verbatim" />
+      <context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
 
-      <context attribute="Formulas" lineEndContext="#stay" name="Formula">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" />
+      <context name="SL_FormulaShort" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
 
-      <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc\b" endRegion="Msc" />
+      <context name="SL_FormulaEnv" attribute="Word" lineEndContext="SL_FindNextLine">
+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />
       </context>
 
-      <context attribute="Dot Graph" lineEndContext="#stay" name="Dot">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot\b" endRegion="Dot" />
+      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthroughContext="#pop!SL_FormulaEnvFormula">
+        <DetectSpaces attribute="Comment" />
+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />
       </context>
 
+      <context name="SL_FormulaEnvFormula" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
+      </context>
+
+      <context name="SL_Msc" attribute="Message Sequence Chart" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="SL_Dot" attribute="Dot Graph" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="Entities" attribute="Word" lineEndContext="#stay">
+        <RegExpr attribute="Entities" context="#pop" String="&amp;[A-Za-z]+&#59;" />
+        <DetectChar attribute="Comment" context="#pop" char="&amp;" />
+      </context>
+
+      <context name="Inc_OtherTag" attribute="Comment" lineEndContext="#pop">
+        <keyword attribute="Note" context="#pop" String="Note" />
+        <keyword attribute="Warning" context="#pop" String="Warning" />
+        <keyword attribute="Attention" context="#pop" String="Attention" />
+        <keyword attribute="Todo" context="#pop" String="Todo" />
+        <keyword attribute="Tags" context="#pop" String="TagOnly" />
+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="{" beginRegion="Group" />
+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="}" endRegion="Group" />
+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="\" char1="~" />
+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />
+        <keyword attribute="Error" context="#pop" String="TagEnd" />
+        <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
+        <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />
+        <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
+        <DetectChar attribute="Comment" context="#pop" char="\" />
+        <DetectChar attribute="Comment" context="#pop" char="@" />
+      </context>
+
+      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier />
+      </context>
+
   </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal" />
@@ -480,10 +621,11 @@
       <itemData name="Warning"      defStyleNum="dsWarning" bold="1" italic="0" />
       <itemData name="Attention"    defStyleNum="dsAnnotation" bold="1" italic="0" />
       <itemData name="Todo"         defStyleNum="dsAnnotation" bold="1" italic="0" />
+      <itemData name="Error"        defStyleNum="dsError" />
     </itemDatas>
   </highlighting>
   <general>
-    <keywords casesensitive="1" weakDeliminator="\$~" />
+    <keywords casesensitive="1" weakDeliminator="\$" />
   </general>
 </language>
 <!-- kate: indent-width 2; -->
diff --git a/xml/doxygenlua.xml b/xml/doxygenlua.xml
--- a/xml/doxygenlua.xml
+++ b/xml/doxygenlua.xml
@@ -2,20 +2,22 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
     <!ENTITY wordsep "([][,?;()]|\.$|\.?\s)">     <!-- things that end a TagWord -->
+    <!ENTITY sl_word ".*?(?=&wordsep;)">
 ]>
 <!--
 sed -E '
-  s/<Detect2Chars(.*)char="\*" char1="\/"(.*)/<StringDetect\1String="]%1]" dynamic="true"\2/
-  s/ (name="ML_|name="BlockComment")/ dynamic="true" \1/
+  /LineContinue/d
+  /name="(ML_|BlockComment")/,/<\/context>/d
+  /\/\/\/| ml_word /d
+  s#//!#\x2d-!#
 ' doxygen.xml > doxygenlua.xml
 
 + edit
 - <language>
 - "Normal Text" context
-- grep '\\\*' doxygenlua.xml
 -->
 <language name="DoxygenLua"
-          version="7"
+          version="8"
           kateversion="5.0"
           section="Markup"
           extensions=""
@@ -52,10 +54,6 @@
       <item>\endrtfonly</item>       <item>@endrtfonly</item>
       <item>\endsecreflist</item>    <item>@endsecreflist</item>
       <item>\endxmlonly</item>       <item>@endxmlonly</item>
-      <item>\f[</item>               <item>@f[</item>
-      <item>\f]</item>               <item>@f]</item>
-      <item>\f$</item>               <item>@f$</item>
-      <!-- TODO Add @f{environment}{ and @f} -->
       <item>\hideinitializer</item>  <item>@hideinitializer</item>
       <item>\htmlonly</item>         <item>@htmlonly</item>
       <!-- TODO @internal is a candidate to be handled separately, cuz may introduce folding region -->
@@ -94,21 +92,6 @@
       <item>\test</item>             <item>@test</item>
       <item>\version</item>          <item>@version</item>
       <item>\xmlonly</item>          <item>@xmlonly</item>
-      <!-- TODO Introduce separate context for @~ ? -->
-      <item>\#</item>                <item>@#</item>
-      <item>\$</item>                <item>@$</item>
-      <item>\%</item>                <item>@%</item>
-      <item>\&amp;</item>            <item>@&amp;</item>
-      <item>\&gt;</item>             <item>@&gt;</item>
-      <item>\&lt;</item>             <item>@&lt;</item>
-      <item>\&quot;</item>           <item>@&quot;</item>
-      <item>\::</item>               <item>@::</item>
-      <item>\@</item>                <item>@@</item>
-      <item>\\</item>                <item>@\</item>
-      <item>\~</item>                <item>@~</item>
-      <item>\.</item>                <item>@.</item>
-      <item>\--</item>               <item>@--</item>
-      <item>\---</item>              <item>@---</item>
     </list>
 
     <list name="TagWord">
@@ -212,6 +195,12 @@
       <item>\var</item>              <item>@var</item>
       <item>\vhdlflow</item>         <item>@vhdlflow</item>
     </list>
+    <list name="TagEnd">
+      <item>\endcode</item>          <item>@endcode</item>
+      <item>\endverbatim</item>      <item>@endverbatim</item>
+      <item>\endmsc</item>           <item>@endmsc</item>
+      <item>\enddot</item>           <item>@enddot</item>
+    </list>
     <list name="Note">
       <item>\note</item>             <item>@note</item>
     </list>
@@ -241,174 +230,98 @@
       TODO Not all commands are handled properly nowadays :( Need few more contexts...
     -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <StringDetect attribute="Comment" context="LineComment" String="--!" />
+        <StringDetect attribute="Comment" context="LineComment" String="---" />
         <RegExpr attribute="Region" context="#stay" String="--\s*@\{\s*$" beginRegion="MemberGroup" />
-        <RegExpr attribute="Region" context="#stay" String="--\s*@\}\s*$" endRegion="MemberGroup" />
-        <RegExpr attribute="Comment" context="BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" />
-        <Detect2Chars attribute="Comment" context="LineComment" char="-" char1="-" />
+        <RegExpr attribute="Region" context="#stay" String="--\s*@\}\s*$"   endRegion="MemberGroup" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="LineComment">
-        <LineContinue attribute="Comment" context="#stay" />
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
-        <IncludeRules context="SL_DetectEnv" />
-        <keyword attribute="Tags" context="#stay" String="TagOnly" />
-        <keyword attribute="Tags" context="SL_TagWord" String="TagWord" />
-        <keyword attribute="Tags" context="SL_TagParam" String="TagParam" />
-        <keyword attribute="Tags" context="SL_TagWordWord" String="TagWordWord" />
-        <keyword attribute="Tags" context="SL_TagString" String="TagString" />
-        <keyword attribute="Tags" context="SL_TagWordString" String="TagWordString" />
-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\][^@\\ \t]+" />
         <DetectIdentifier />
-        <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
-        <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" dynamic="true" name="BlockComment">
-        <DetectSpaces />
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />
-        <IncludeRules context="##Alerts" />
-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="{" beginRegion="Group" />
-        <Detect2Chars attribute="Region" context="#stay" char="@" char1="}" endRegion="Group" />
-        <IncludeRules context="SL_DetectEnv" />
-        <keyword attribute="Tags" context="#stay" String="TagOnly" />
-        <keyword attribute="Tags" context="ML_TagWord" String="TagWord" />
-        <keyword attribute="Tags" context="ML_TagParam" String="TagParam" />
-        <keyword attribute="Tags" context="ML_TagWordWord" String="TagWordWord" />
-        <keyword attribute="Tags" context="ML_TagString" String="TagString" />
-        <keyword attribute="Tags" context="ML_TagWordString" String="TagWordString" />
-        <RegExpr attribute="Custom Tags" context="#stay" String="[@\\]([^@\\ \t])+" />
-        <DetectIdentifier />
-        <RegExpr attribute="Tags" context="#stay" String="\\(&lt;|&gt;)" />
-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
-      </context>
-
-      <!-- NOTE: all contexts beginning with ML_ are for multiline comments
-                 The following contexts contain a Detect2Chars that looks for a */ sequence
-                 to end multiline comments. Singleline comments do not have this limitation -
-                 that's why all contexts are copy&pasted and the line <Detect2Chars ... */> is removed.
-                 <IncludeRules context="acontext"> could be used instead but it would make context switching
-                 much more complex and very hard to understand! (But use IncludeRules where the rules don't
-                 refer to another SL_*/ML_* context, to help maintainability.)
-      -->
-      <!-- tag contexts -->
-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWord">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <IncludeRules context="SL_TagWord" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagParam">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <DetectSpaces />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in]" />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[out]" />
-        <StringDetect attribute="Tags" context="ML_Tag2ndWord" String="[in,out]" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWordWord">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <DetectSpaces />
-        <RegExpr attribute="Word" context="ML_Tag2ndWord" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
-      </context>
-      <!-- TODO for kate 2.x, convert references to "#pop!ML_TagWord" -->
-      <context attribute="Comment" lineEndContext="#pop#pop" dynamic="true" name="ML_Tag2ndWord">
-        <StringDetect attribute="Comment" context="#pop#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <IncludeRules context="SL_Tag2ndWord" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagString">
-        <DetectSpaces />
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <StringDetect attribute="HTML Comment" context="ML_htmlcomment" String="&lt;!--" />
-        <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
-        <RegExpr attribute="HTML Tag" context="ML_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <RegExpr attribute="Description" context="#stay" String="." />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" dynamic="true" name="ML_TagWordString">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <IncludeRules context="SL_TagWordString" />
+        <DetectChar attribute="Comment" context="SL_StartTag" char="\" lookAhead="true" />
+        <DetectChar attribute="Comment" context="SL_StartTag" char="@" lookAhead="true" />
+        <DetectChar attribute="Comment" context="SL_StartHTMLTag" char="&lt;" lookAhead="true" />
+        <DetectChar attribute="Comment" context="Entities" char="&amp;" lookAhead="true" />
       </context>
 
-      <!-- html contexts -->
-      <context dynamic="true" name="ML_htmltag" attribute="Identifier" lineEndContext="#stay">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
-        <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
-        <RegExpr attribute="Identifier" context="ML_identifiers" String="\s*=\s*" />
-      </context>
-      <context dynamic="true" name="ML_htmlcomment" attribute="HTML Comment" lineEndContext="#stay">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <IncludeRules context="##Alerts" />
-        <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
-      </context>
-      <context dynamic="true" name="ML_identifiers" attribute="Identifier" lineEndContext="#stay">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
-        <DetectChar attribute="Types" context="ML_types1" char="'" />
-        <DetectChar attribute="Types" context="ML_types2" char="&quot;" />
-      </context>
-      <context dynamic="true" name="ML_types1" attribute="Types" lineEndContext="#stay">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <DetectChar attribute="Types" context="#pop#pop" char="'" />
+      <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartTag">
+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
+        <keyword attribute="Tags" context="#pop!SL_TagParam" String="TagParam" />
+        <keyword attribute="Tags" context="#pop!SL_TagWordWord" String="TagWordWord" />
+        <keyword attribute="Tags" context="#pop!SL_TagString" String="TagString" />
+        <keyword attribute="Tags" context="#pop!SL_TagWordString" String="TagWordString" />
+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="\code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Code" String="@code" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="\verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Verbatim" String="@verbatim" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="\f[" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Formula" String="@f[" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="\f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaShort" String="@f$" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="\f{" beginRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop!SL_FormulaEnv" String="@f{" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="\msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Msc" String="@msc" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="\dot" beginRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop!SL_Dot" String="@dot" beginRegion="VerbatimBlock" />
+        <IncludeRules context="Inc_OtherTag" />
       </context>
-      <context dynamic="true" name="ML_types2" attribute="Types" lineEndContext="#stay">
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" lookAhead="true" />
-        <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
+      <context attribute="Comment" lineEndContext="#pop" name="SL_StartHTMLTag">
+        <Detect2Chars attribute="Comment" context="#pop" char="&lt;" char1="&lt;" />
+        <RegExpr attribute="HTML Tag" context="#pop!SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
+        <StringDetect attribute="HTML Comment" context="#pop!SL_htmlcomment" String="&lt;!--" />
+        <DetectChar attribute="Comment" context="#pop" char="&lt;" />
       </context>
 
-      <!-- NOTE: all contexts beginning with SL_ are for singleline comments -->
       <!-- tag contexts -->
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWord">
         <DetectSpaces />
-        <keyword attribute="Tags" context="#pop" String="TagWord" lookAhead="true" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <keyword attribute="Tags" context="#pop!SL_TagWord" String="TagWord" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagParam">
         <DetectSpaces />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in]" />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[out]" />
-        <StringDetect attribute="Tags" context="SL_Tag2ndWord" String="[in,out]" />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in]" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[out]" />
+        <StringDetect attribute="Tags" context="#pop!SL_TagWord" String="[in,out]" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordWord">
         <DetectSpaces />
-        <RegExpr attribute="Word" context="SL_Tag2ndWord" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
-      </context>
-      <!-- TODO for kate 2.x, convert references to "#pop!SL_TagWord" -->
-      <context attribute="Comment" lineEndContext="#pop#pop" name="SL_Tag2ndWord">
-        <DetectSpaces />
-        <RegExpr attribute="Word" context="#pop#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <RegExpr attribute="Word" context="#pop!SL_TagWord" String="&sl_word;" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagString">
         <DetectSpaces />
         <StringDetect attribute="HTML Comment" context="SL_htmlcomment" String="&lt;!--" />
         <Detect2Chars attribute="Comment" context="#stay" char="&lt;" char1="&lt;" />
         <RegExpr attribute="HTML Tag" context="SL_htmltag" String="&lt;\/?[-\w0-9._:@]+" />
-        <RegExpr attribute="Description" context="#stay" String="." />
+        <RegExpr attribute="Description" context="#stay" String="&lt;?[^&lt;\s]+" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SL_TagWordString">
         <DetectSpaces />
-        <RegExpr attribute="Word" context="#pop" String="\S(?=&wordsep;)" />
-        <RegExpr attribute="Word" context="#stay" String="\S" />
+        <IncludeRules context="SL_Inc_Word" />
       </context>
+      <context name="SL_Inc_Word" attribute="Word" lineEndContext="#pop">
+        <RegExpr attribute="Word" context="#pop" String="&sl_word;" />
+      </context>
 
       <!-- html contexts -->
       <context name="SL_htmltag" attribute="Identifier" lineEndContext="#pop">
         <Detect2Chars attribute="HTML Tag" context="#pop" char="/" char1="&gt;" />
         <DetectChar attribute="HTML Tag" context="#pop" char="&gt;" />
-        <RegExpr attribute="Identifier" context="SL_identifiers" String="\s*=\s*" />
+        <DetectSpaces />
+        <DetectChar attribute="Identifier" context="SL_identifiers" char="=" />
       </context>
       <context name="SL_htmlcomment" attribute="HTML Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <DetectIdentifier />
         <StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" />
       </context>
       <context name="SL_identifiers" attribute="Identifier" lineEndContext="#pop">
-        <RegExpr attribute="Identifier" context="#pop" String="\s*#?[a-zA-Z0-9]*" />
+        <DetectSpaces />
         <DetectChar attribute="Types" context="SL_types1" char="'" />
         <DetectChar attribute="Types" context="SL_types2" char="&quot;" />
       </context>
@@ -419,59 +332,96 @@
         <DetectChar attribute="Types" context="#pop#pop" char="&quot;" />
       </context>
 
-      <context attribute="Comment" name="SL_DetectEnv" lineEndContext="#pop">
-        <RegExpr attribute="Tags" context="Code" String="[@\\]code\b" beginRegion="Code" />
-        <RegExpr attribute="Tags" context="Verbatim" String="[@\\]verbatim\b" beginRegion="Verbatim" />
-        <RegExpr attribute="Tags" context="Formula" String="[@\\]f\[" beginRegion="Formula" />
-        <RegExpr attribute="Tags" context="Msc" String="[@\\]msc\b" beginRegion="Msc" />
-        <RegExpr attribute="Tags" context="Dot" String="[@\\]dot\b" beginRegion="Dot" />
-        <keyword attribute="Note" context="#stay" String="Note" />
-        <keyword attribute="Warning" context="#stay" String="Warning" />
-        <keyword attribute="Attention" context="#stay" String="Attention" />
-        <keyword attribute="Todo" context="#stay" String="Todo" />
-        <RegExpr attribute="Entities" context="#stay" String="&amp;[A-Za-z]+&#59;" />
+      <context name="SL_FindNextLine" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces />
+        <StringDetect attribute="Comment" context="#pop" String="--!" />
+        <RegExpr attribute="Comment" context="#pop#pop#pop" String="." lookAhead="true" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Comment" name="SL_DetectComment" lineEndContext="#pop">
-        <StringDetect attribute="Comment" context="#pop#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />
-        <DetectChar attribute="Comment" context="#stay" char="*" />
-        <StringDetect attribute="Comment" context="#stay" String="///" />
+      <context name="SL_Code" attribute="Code" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endcode" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endcode" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Code" lineEndContext="#stay" name="Code">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endcode\b" endRegion="Code" />
+      <context name="SL_Verbatim" attribute="Verbatim" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endverbatim" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endverbatim" endRegion="VerbatimBlock" />
       </context>
 
-      <context attribute="Verbatim" lineEndContext="#stay" name="Verbatim">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endverbatim\b" endRegion="Verbatim" />
+      <context name="SL_Formula" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\f]" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@f]" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
 
-      <context attribute="Formulas" lineEndContext="#stay" name="Formula">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]f\]" endRegion="Formula" />
+      <context name="SL_FormulaShort" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <StringDetect attribute="Tags" context="#pop" String="\f$" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f$" endRegion="VerbatimBlock" />
         <!-- TODO: How to force LaTeX math context here?? -->
         <!-- <IncludeRules context="##LaTeX" /> -->
       </context>
 
-      <context attribute="Message Sequence Chart" lineEndContext="#stay" name="Msc">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]endmsc\b" endRegion="Msc" />
+      <context name="SL_FormulaEnv" attribute="Word" lineEndContext="SL_FindNextLine">
+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvStart" char="}" />
       </context>
 
-      <context attribute="Dot Graph" lineEndContext="#stay" name="Dot">
-        <IncludeRules context="SL_DetectComment" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\]enddot\b" endRegion="Dot" />
+      <context name="SL_FormulaEnvStart" attribute="Formulas" lineEndContext="SL_FindNextLine" fallthroughContext="#pop!SL_FormulaEnvFormula">
+        <DetectSpaces attribute="Comment" />
+        <DetectChar attribute="Tags" context="#pop!SL_FormulaEnvFormula" char="{" />
       </context>
 
+      <context name="SL_FormulaEnvFormula" attribute="Formulas" lineEndContext="SL_FindNextLine">
+        <StringDetect attribute="Tags" context="#pop" String="\f}" endRegion="VerbatimBlock" />
+        <StringDetect attribute="Tags" context="#pop" String="@f}" endRegion="VerbatimBlock" />
+        <!-- TODO: How to force LaTeX math context here?? -->
+        <!-- <IncludeRules context="##LaTeX" /> -->
+      </context>
+
+      <context name="SL_Msc" attribute="Message Sequence Chart" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\endmsc" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@endmsc" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="SL_Dot" attribute="Dot Graph" lineEndContext="SL_FindNextLine">
+        <WordDetect attribute="Tags" context="#pop" String="\enddot" endRegion="VerbatimBlock" />
+        <WordDetect attribute="Tags" context="#pop" String="@enddot" endRegion="VerbatimBlock" />
+      </context>
+
+      <context name="Entities" attribute="Word" lineEndContext="#stay">
+        <RegExpr attribute="Entities" context="#pop" String="&amp;[A-Za-z]+&#59;" />
+        <DetectChar attribute="Comment" context="#pop" char="&amp;" />
+      </context>
+
+      <context name="Inc_OtherTag" attribute="Comment" lineEndContext="#pop">
+        <keyword attribute="Note" context="#pop" String="Note" />
+        <keyword attribute="Warning" context="#pop" String="Warning" />
+        <keyword attribute="Attention" context="#pop" String="Attention" />
+        <keyword attribute="Todo" context="#pop" String="Todo" />
+        <keyword attribute="Tags" context="#pop" String="TagOnly" />
+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="{" beginRegion="Group" />
+        <Detect2Chars attribute="Region" context="#pop" char="@" char1="}" endRegion="Group" />
+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="\" char1="~" />
+        <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />
+        <keyword attribute="Error" context="#pop" String="TagEnd" />
+        <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
+        <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />
+        <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
+        <DetectChar attribute="Comment" context="#pop" char="\" />
+        <DetectChar attribute="Comment" context="#pop" char="@" />
+      </context>
+
+      <context name="LanguageId" attribute="Word" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier />
+      </context>
+
   </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal" />
       <itemData name="Tags"         defStyleNum="dsAnnotation" bold="1" />
       <itemData name="Custom Tags"  defStyleNum="dsAnnotation" />
       <itemData name="Word"         defStyleNum="dsCommentVar" bold="1" italic="0" />
-      <itemData name="HTML Tag"     defStyleNum="dsKeyword" color="#000000" bold="1" italic="0" />
+      <itemData name="HTML Tag"     defStyleNum="dsKeyword" bold="1" italic="0" />
       <itemData name="Entities"     defStyleNum="dsOthers" color="#4086C0" bold="1" italic="1" />
       <itemData name="Description"  defStyleNum="dsDocumentation" />
       <itemData name="Comment"      defStyleNum="dsComment" />
@@ -488,10 +438,11 @@
       <itemData name="Warning"      defStyleNum="dsWarning" bold="1" italic="0" />
       <itemData name="Attention"    defStyleNum="dsAnnotation" bold="1" italic="0" />
       <itemData name="Todo"         defStyleNum="dsAnnotation" bold="1" italic="0" />
+      <itemData name="Error"        defStyleNum="dsError" />
     </itemDatas>
   </highlighting>
   <general>
-    <keywords casesensitive="1" weakDeliminator="\$~" />
+    <keywords casesensitive="1" weakDeliminator="\$" />
   </general>
 </language>
 <!-- kate: indent-width 2; -->
diff --git a/xml/dtd.xml b/xml/dtd.xml
--- a/xml/dtd.xml
+++ b/xml/dtd.xml
@@ -3,7 +3,7 @@
   <!ENTITY nmtoken "[\-\w\d\.:_]+">
   <!ENTITY entref  "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
 ]>
-<language name="DTD" version="2" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
+<language name="DTD" version="3" kateversion="3.4" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
   <highlighting>
 
     <list name="Category">
@@ -46,6 +46,7 @@
         <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
@@ -101,10 +102,9 @@
 
   <general>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
     </comments>
   </general>
 
 </language>
-<!-- kate: indent-width 2; indent-mode normal; tab-indents on; -->
-
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/eiffel.xml b/xml/eiffel.xml
--- a/xml/eiffel.xml
+++ b/xml/eiffel.xml
@@ -10,7 +10,7 @@
 
 Author of version 1.02: Sebastian Vuorinen
 -->
-<language name="Eiffel" version="2" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
+<language name="Eiffel" version="3" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
 	<highlighting>
 		<list name="keywords">
 			<item>agent</item>
@@ -97,7 +97,11 @@
 				<DetectChar attribute = "String" char = "&quot;" context="#pop" />
 			</context>
 
-			<context name = "Documentation" attribute="Comment" lineEndContext="#pop" />
+			<context name = "Documentation" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces />
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
+			</context>
 		</contexts>
 
 		<itemDatas>
@@ -118,8 +122,9 @@
 
 	<general>
 		<comments>
-			<comment name="singleLine" start="--" />
+			<comment name="singleLine" start="--" position="afterwhitespace" />
 		</comments>
 		<keywords casesensitive="1" />
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/elixir.xml b/xml/elixir.xml
--- a/xml/elixir.xml
+++ b/xml/elixir.xml
@@ -30,7 +30,7 @@
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="5">
+          version="6">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
@@ -180,6 +180,9 @@
         <RegExpr String="\w(?!\w)" attribute="Substitution" context="#pop"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="General Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="MarkdownCode" lineEndContext="#stay" name="Markdown Code">
         <RegExpr String="^\s*\`\`\`\s*$" attribute="MarkdownCode" context="#pop"/>
@@ -223,3 +226,4 @@
     <keywords casesensitive="1" weakDeliminator="!?"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/elm.xml b/xml/elm.xml
--- a/xml/elm.xml
+++ b/xml/elm.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Elm" version="3" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
+<language name="Elm" version="4" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
   <highlighting>
     <list name="declarations">
       <item>type</item>
@@ -38,9 +38,9 @@
     </list>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="code">
-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />
+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />
         <Detect2Chars attribute="Comment" context="comment" char="-" char1="-" />
-        <StringDetect attribute="Comment" context="documentation" String="{-|" />
+        <StringDetect attribute="Comment" context="documentation" String="{-|" beginRegion="Documentation" />
 
         <keyword attribute="Keyword"          context="#stay" String="declarations" />
         <keyword attribute="Keyword"          context="#stay" String="letExpressions" />
@@ -69,10 +69,16 @@
         <RegExpr attribute="String"     context="multilineString" String="&quot;&quot;&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comments">
-        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" />
-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />
+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="string">
         <RegExpr attribute="String" context="#stay" String="\\." />
@@ -108,7 +114,7 @@
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="documentation">
         <WordDetect attribute="Comment" context="#stay" String="@docs" />
-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Documentation" />
       </context>
     </contexts>
 
@@ -135,9 +141,10 @@
   <general>
     <folding indentationsensitive="1"/>
     <comments>
-      <comment name="singleLine" start="--" />
-      <comment name="multiLine" start="{-" end="-}" />
+      <comment name="singleLine" start="--" position="afterwhitespace" />
+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" />
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/erlang.xml b/xml/erlang.xml
--- a/xml/erlang.xml
+++ b/xml/erlang.xml
@@ -36,7 +36,7 @@
                                    - fixed highlighting problem when '@' at end of atom/variable
 -->
 
-<language name="Erlang" version="3" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
+<language name="Erlang" version="4" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <!-- ====== s3.8 p 24 of erlang spec ===== -->
@@ -220,6 +220,7 @@
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
diff --git a/xml/fasm.xml b/xml/fasm.xml
--- a/xml/fasm.xml
+++ b/xml/fasm.xml
@@ -1,897 +1,1750 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<!--
-"Intel x86 (FASM)" is based on ver. 1.3 of "Intel x86 (NASM)" by Nicola Gigante and Bogdan Drozdowski
-
-Known issues:
-* Does not include all 64-bit registers and instructions
-* "near" and "far" as in "jmp near MyLabel" is unhandeled.
-* Confuses and,or,not,xor,shl instructions,with operators with same name, e.g. "2 shl 4"
-* May confuse ah,bh,ch,dh with hexadecimal numbers.
-
-Notes:
-* "used" and "defined" are treated opperators and are not highlighted.
--->
-
-<language name="Intel x86 (FASM)" section="Assembler" version="2" kateversion="5.0" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">
-  <highlighting>
-    <list name="registers">
-      <!-- General purpose registers -->
-      <item>rax</item>
-      <item>eax</item>
-      <item>ax</item>
-      <item>ah</item>
-      <item>al</item>
-      <item>rbx</item>
-      <item>ebx</item>
-      <item>bx</item>
-      <item>bh</item>
-      <item>bl</item>
-      <item>rcx</item>
-      <item>ecx</item>
-      <item>cx</item>
-      <item>ch</item>
-      <item>cl</item>
-      <item>rdx</item>
-      <item>edx</item>
-      <item>dx</item>
-      <item>dh</item>
-      <item>dl</item>
-      <item>rbp</item>
-      <item>ebp</item>
-      <item>bp</item>
-      <item>rsi</item>
-      <item>esi</item>
-      <item>si</item>
-      <item>rdi</item>
-      <item>edi</item>
-      <item>di</item>
-      <item>rsp</item>
-      <item>esp</item>
-      <item>sp</item>
-      <item>r8</item>
-      <item>r9</item>
-      <item>r10</item>
-      <item>r11</item>
-      <item>r12</item>
-      <item>r13</item>
-      <item>r14</item>
-      <item>r15</item>
-      <!-- Segmentation registers -->
-      <item>cs</item>
-      <item>ds</item>
-      <item>es</item>
-      <item>fs</item>
-      <item>gs</item>
-      <item>ss</item>
-      <!-- Control registers -->
-      <item>cr0</item>
-      <!--<item>cr1</item>-->
-      <item>cr2</item>
-      <item>cr3</item>
-      <item>cr4</item>
-      <!-- Debug registers -->
-      <item>dr0</item>
-      <item>dr1</item>
-      <item>dr2</item>
-      <item>dr3</item>
-      <item>dr6</item>
-      <item>dr7</item>
-      <!-- x87 FPU Registers -->
-      <item>st</item>
-      <!-- MMX registers -->
-      <item>mm0</item>
-      <item>mm1</item>
-      <item>mm2</item>
-      <item>mm3</item>
-      <item>mm4</item>
-      <item>mm5</item>
-      <item>mm6</item>
-      <item>mm7</item>
-      <!-- XMM registers -->
-      <item>xmm0</item>
-      <item>xmm1</item>
-      <item>xmm2</item>
-      <item>xmm3</item>
-      <item>xmm4</item>
-      <item>xmm5</item>
-      <item>xmm6</item>
-      <item>xmm7</item>
-    </list>
-    <list name="instructions">
-      <item>aaa</item>
-      <item>aad</item>
-      <item>aam</item>
-      <item>aas</item>
-      <item>adc</item>
-      <item>add</item>
-      <item>addpd</item>
-      <item>addps</item>
-      <item>addsd</item>
-      <item>addss</item>
-      <item>addsubpd</item>
-      <item>addsubps</item>
-      <item>and</item>
-      <item>andnpd</item>
-      <item>andnps</item>
-      <item>andpd</item>
-      <item>andps</item>
-      <item>arpl</item>
-      <item>bound</item>
-      <item>bsf</item>
-      <item>bsr</item>
-      <item>bswap</item>
-      <item>bt</item>
-      <item>btc</item>
-      <item>btr</item>
-      <item>bts</item>
-      <item>call</item>
-      <item>cbw</item>
-      <item>cwde</item>
-      <item>cwd</item>
-      <item>cdq</item>
-      <item>cdqe</item>
-      <item>cqo</item>
-      <item>clc</item>
-      <item>cld</item>
-      <item>clgi</item>
-      <item>cli</item>
-      <item>clts</item>
-      <item>clflush</item>
-      <item>cmc</item>
-      <item>cmova</item>
-      <item>cmovae</item>
-      <item>cmovb</item>
-      <item>cmovbe</item>
-      <item>cmovc</item>
-      <item>cmove</item>
-      <item>cmovg</item>
-      <item>cmovge</item>
-      <item>cmovl</item>
-      <item>cmovle</item>
-      <item>cmovna</item>
-      <item>cmovnae</item>
-      <item>cmovnb</item>
-      <item>cmovnbe</item>
-      <item>cmovnc</item>
-      <item>cmovne</item>
-      <item>cmovng</item>
-      <item>cmovnge</item>
-      <item>cmovnl</item>
-      <item>cmovnle</item>
-      <item>cmovno</item>
-      <item>cmovnp</item>
-      <item>cmovns</item>
-      <item>cmovnz</item>
-      <item>cmovo</item>
-      <item>cmovp</item>
-      <item>cmovpe</item>
-      <item>cmovpo</item>
-      <item>cmovs</item>
-      <item>cmovz</item>
-      <item>cmp</item>
-      <item>cmpeqpd</item>
-      <item>cmpeqps</item>
-      <item>cmpeqsd</item>
-      <item>cmpeqss</item>
-      <item>cmplepd</item>
-      <item>cmpleps</item>
-      <item>cmplesd</item>
-      <item>cmpless</item>
-      <item>cmpltpd</item>
-      <item>cmpltps</item>
-      <item>cmpltsd</item>
-      <item>cmpltss</item>
-      <item>cmpneqpd</item>
-      <item>cmpneqps</item>
-      <item>cmpneqsd</item>
-      <item>cmpneqss</item>
-      <item>cmpnlepd</item>
-      <item>cmpnleps</item>
-      <item>cmpnlesd</item>
-      <item>cmpnless</item>
-      <item>cmpnltpd</item>
-      <item>cmpnltps</item>
-      <item>cmpnltsd</item>
-      <item>cmpnltss</item>
-      <item>cmpordpd</item>
-      <item>cmpordps</item>
-      <item>cmpordsd</item>
-      <item>cmpordss</item>
-      <item>cmppd</item>
-      <item>cmpps</item>
-      <item>cmps</item>
-      <item>cmpsb</item>
-      <item>cmpsd</item>
-      <item>cmpss</item>
-      <item>cmpsw</item>
-      <item>cmpunordpd</item>
-      <item>cmpunordps</item>
-      <item>cmpunordsd</item>
-      <item>cmpunordss</item>
-      <item>cmpxchg</item>
-      <item>cmpxchg486</item>
-      <item>cmpxchg8b</item>
-      <item>cmpxchg16b</item>
-      <item>comisd</item>
-      <item>comiss</item>
-      <item>cpuid</item>
-      <item>cvtdq2pd</item>
-      <item>cvtdq2ps</item>
-      <item>cvtpd2dq</item>
-      <item>cvtpd2pi</item>
-      <item>cvtpd2ps</item>
-      <item>cvtpi2pd</item>
-      <item>cvtpi2ps</item>
-      <item>cvtps2dq</item>
-      <item>cvtps2pd</item>
-      <item>cvtps2pi</item>
-      <item>cvtsd2si</item>
-      <item>cvtsd2ss</item>
-      <item>cvtsi2sd</item>
-      <item>cvtsi2ss</item>
-      <item>cvtss2sd</item>
-      <item>cvtss2si</item>
-      <item>cvttpd2dq</item>
-      <item>cvttpd2pi</item>
-      <item>cvttps2dq</item>
-      <item>cvttps2pi</item>
-      <item>cvttsd2si</item>
-      <item>cvttss2si</item>
-      <item>daa</item>
-      <item>das</item>
-      <item>dec</item>
-      <item>div</item>
-      <item>divpd</item>
-      <item>divps</item>
-      <item>divsd</item>
-      <item>divss</item>
-      <item>emms</item>
-      <item>enter</item>
-      <item>f2xm1</item>
-      <item>fabs</item>
-      <item>fadd</item>
-      <item>faddp</item>
-      <item>fbld</item>
-      <item>fbstp</item>
-      <item>fchs</item>
-      <item>fclex</item>
-      <item>fnclex</item>
-      <item>fcmovb</item>
-      <item>fcmovbe</item>
-      <item>fcmove</item>
-      <item>fcmovnb</item>
-      <item>fcmovnbe</item>
-      <item>fcmovne</item>
-      <item>fcmovnu</item>
-      <item>fcmovu</item>
-      <item>fcom</item>
-      <item>fcomp</item>
-      <item>fcompp</item>
-      <item>fcomi</item>
-      <item>fcomip</item>
-      <item>fcos</item>
-      <item>fdecstp</item>
-      <item>fdisi</item>
-      <item>feni</item>
-      <item>fdiv</item>
-      <item>fdivr</item>
-      <item>fdivp</item>
-      <item>fdivrp</item>
-      <item>femms</item>
-      <item>ffree</item>
-      <item>ffreep</item>
-      <item>fiadd</item>
-      <item>ficom</item>
-      <item>ficomp</item>
-      <item>fidiv</item>
-      <item>fidivr</item>
-      <item>fild</item>
-      <item>fimul</item>
-      <item>fincstp</item>
-      <item>finit</item>
-      <item>fist</item>
-      <item>fistp</item>
-      <item>fisttp</item>
-      <item>fisub</item>
-      <item>fisubr</item>
-      <item>fld</item>
-      <item>fld1</item>
-      <item>fldl2e</item>
-      <item>fldl2t</item>
-      <item>fldlg2</item>
-      <item>fldln2</item>
-      <item>fldcw</item>
-      <item>fldenv</item>
-      <item>fldpi</item>
-      <item>fldz</item>
-      <item>fmul</item>
-      <item>fmulp</item>
-      <item>fndisi</item>
-      <item>fneni</item>
-      <item>fninit</item>
-      <item>fnop</item>
-      <item>fnsave</item>
-      <item>fnstcw</item>
-      <item>fnstenv</item>
-      <item>fnstsw</item>
-      <item>fnwait</item>
-      <item>fpatan</item>
-      <item>fptan</item>
-      <item>fprem</item>
-      <item>fprem1</item>
-      <item>frndint</item>
-      <item>frstor</item>
-      <item>fsave</item>
-      <item>fscale</item>
-      <item>fsetpm</item>
-      <item>fsin</item>
-      <item>fsincos</item>
-      <item>fsqrt</item>
-      <item>fst</item>
-      <item>fstp</item>
-      <item>fstcw</item>
-      <item>fstenv</item>
-      <item>fstsw</item>
-      <item>fsub</item>
-      <item>fsubr</item>
-      <item>fsubp</item>
-      <item>fsubrp</item>
-      <item>ftst</item>
-      <item>fucom</item>
-      <item>fucomp</item>
-      <item>fucompp</item>
-      <item>fucomi</item>
-      <item>fucomip</item>
-      <item>fwait</item>
-      <item>fxam</item>
-      <item>fxch</item>
-      <item>fxrstor</item>
-      <item>fxsave</item>
-      <item>fxtract</item>
-      <item>fyl2x</item>
-      <item>fyl2xp1</item>
-      <item>haddpd</item>
-      <item>haddps</item>
-      <item>hlt</item>
-      <item>hsubpd</item>
-      <item>hsubps</item>
-      <item>ibts</item>
-      <item>idiv</item>
-      <item>imul</item>
-      <item>in</item>
-      <item>inc</item>
-      <item>ins</item>
-      <item>insb</item>
-      <item>insd</item>
-      <item>insw</item>
-      <item>int</item>
-      <item>int1</item>
-      <item>int3</item>
-      <item>into</item>
-      <item>invd</item>
-      <item>invlpg</item>
-      <item>invlpga</item>
-      <item>iret</item>
-      <item>iretd</item>
-      <item>iretq</item>
-      <item>iretw</item>
-      <item>ja</item>
-      <item>jae</item>
-      <item>jb</item>
-      <item>jbe</item>
-      <item>jc</item>
-      <item>je</item>
-      <item>jg</item>
-      <item>jge</item>
-      <item>jl</item>
-      <item>jle</item>
-      <item>jna</item>
-      <item>jnae</item>
-      <item>jnb</item>
-      <item>jnbe</item>
-      <item>jnc</item>
-      <item>jne</item>
-      <item>jng</item>
-      <item>jnge</item>
-      <item>jnl</item>
-      <item>jnle</item>
-      <item>jno</item>
-      <item>jnp</item>
-      <item>jns</item>
-      <item>jnz</item>
-      <item>jo</item>
-      <item>jp</item>
-      <item>jpe</item>
-      <item>jpo</item>
-      <item>js</item>
-      <item>jz</item>
-      <item>jcxz</item>
-      <item>jecxz</item>
-      <item>jrcxz</item>
-      <item>jmp</item>
-      <item>lahf</item>
-      <item>lar</item>
-      <item>lddqu</item>
-      <item>ldmxcsr</item>
-      <item>lds</item>
-      <item>les</item>
-      <item>lea</item>
-      <item>leave</item>
-      <item>lfence</item>
-      <item>lfs</item>
-      <item>lgdt</item>
-      <item>lgs</item>
-      <item>lidt</item>
-      <item>lldt</item>
-      <item>lmsw</item>
-      <item>loadall</item>
-      <item>loadall286</item>
-      <item>lods</item>
-      <item>lodsb</item>
-      <item>lodsd</item>
-      <item>lodsq</item>
-      <item>lodsw</item>
-      <item>loop</item>
-      <item>loope</item>
-      <item>loopne</item>
-      <item>loopnz</item>
-      <item>loopz</item>
-      <item>lsl</item>
-      <item>lss</item>
-      <item>ltr</item>
-      <item>maskmovdqu</item>
-      <item>maskmovq</item>
-      <item>maxpd</item>
-      <item>maxps</item>
-      <item>maxsd</item>
-      <item>maxss</item>
-      <item>mfence</item>
-      <item>minpd</item>
-      <item>minps</item>
-      <item>minsd</item>
-      <item>minss</item>
-      <item>monitor</item>
-      <item>mov</item>
-      <item>movapd</item>
-      <item>movaps</item>
-      <item>movd</item>
-      <item>movddup</item>
-      <item>movdq2q</item>
-      <item>movdqa</item>
-      <item>movdqu</item>
-      <item>movhlps</item>
-      <item>movhpd</item>
-      <item>movhps</item>
-      <item>movlhps</item>
-      <item>movlpd</item>
-      <item>movlps</item>
-      <item>movmskpd</item>
-      <item>movmskps</item>
-      <item>movntdq</item>
-      <item>movnti</item>
-      <item>movntpd</item>
-      <item>movntps</item>
-      <item>movntq</item>
-      <item>movq</item>
-      <item>movq2dq</item>
-      <item>movs</item>
-      <item>movsb</item>
-      <item>movsd</item>
-      <item>movshdup</item>
-      <item>movsldup</item>
-      <item>movsq</item>
-      <item>movss</item>
-      <item>movsx</item>
-      <item>movsxd</item>
-      <item>movsw</item>
-      <item>movupd</item>
-      <item>movups</item>
-      <item>movzx</item>
-      <item>mul</item>
-      <item>mulpd</item>
-      <item>mulps</item>
-      <item>mulsd</item>
-      <item>mulss</item>
-      <item>mwait</item>
-      <item>neg</item>
-      <item>nop</item>
-      <item>not</item>
-      <item>or</item>
-      <item>orpd</item>
-      <item>orps</item>
-      <item>out</item>
-      <item>outs</item>
-      <item>outsb</item>
-      <item>outsw</item>
-      <item>outsd</item>
-      <item>packssdw</item>
-      <item>packsswb</item>
-      <item>packuswb</item>
-      <item>paddb</item>
-      <item>paddd</item>
-      <item>paddq</item>
-      <item>paddsb</item>
-      <item>paddsw</item>
-      <item>paddusb</item>
-      <item>paddusw</item>
-      <item>paddw</item>
-      <item>pand</item>
-      <item>pandn</item>
-      <item>pause</item>
-      <item>pavgb</item>
-      <item>pavgusb</item>
-      <item>pavgw</item>
-      <item>pcmpeqb</item>
-      <item>pcmpeqw</item>
-      <item>pcmpeqd</item>
-      <item>pcmpgtb</item>
-      <item>pcmpgtw</item>
-      <item>pcmpgtd</item>
-      <item>pdistib</item>
-      <item>pextrw</item>
-      <item>pf2id</item>
-      <item>pf2iw</item>
-      <item>pfacc</item>
-      <item>pfadd</item>
-      <item>pfcmpeq</item>
-      <item>pfcmpge</item>
-      <item>pfcmpgt</item>
-      <item>pfmax</item>
-      <item>pfmin</item>
-      <item>pfmul</item>
-      <item>pfnacc</item>
-      <item>pfpnacc</item>
-      <item>pfrcp</item>
-      <item>pfrcpit1</item>
-      <item>pfrcpit2</item>
-      <item>pfrsqit1</item>
-      <item>pfrsqrt</item>
-      <item>pfsub</item>
-      <item>pfsubr</item>
-      <item>pi2fd</item>
-      <item>pi2fw</item>
-      <item>pinsrw</item>
-      <item>pmachriw</item>
-      <item>pmaddwd</item>
-      <item>pmagw</item>
-      <item>pmaxsw</item>
-      <item>pmaxub</item>
-      <item>pminsw</item>
-      <item>pminub</item>
-      <item>pmovmskb</item>
-      <item>pmulhrw</item>
-      <item>pmulhuw</item>
-      <item>pmulhw</item>
-      <item>pmullw</item>
-      <item>pmuludq</item>
-      <item>pmvgezb</item>
-      <item>pmvlzb</item>
-      <item>pmvnzb</item>
-      <item>pmvzb</item>
-      <item>pop</item>
-      <item>popa</item>
-      <item>popaw</item>
-      <item>popad</item>
-      <item>popf</item>
-      <item>popfw</item>
-      <item>popfd</item>
-      <item>popfq</item>
-      <item>por</item>
-      <item>prefetch</item>
-      <item>prefetchnta</item>
-      <item>prefetcht0</item>
-      <item>prefetcht1</item>
-      <item>prefetcht2</item>
-      <item>prefetchw</item>
-      <item>psadbw</item>
-      <item>pshufd</item>
-      <item>pshufhw</item>
-      <item>pshuflw</item>
-      <item>pshufw</item>
-      <item>pslld</item>
-      <item>pslldq</item>
-      <item>psllq</item>
-      <item>psllw</item>
-      <item>psrad</item>
-      <item>psraw</item>
-      <item>psrld</item>
-      <item>psrldq</item>
-      <item>psrlq</item>
-      <item>psrlw</item>
-      <item>psubb</item>
-      <item>psubd</item>
-      <item>psubq</item>
-      <item>psubsb</item>
-      <item>psubsiw</item>
-      <item>psubsw</item>
-      <item>psubusb</item>
-      <item>psubusw</item>
-      <item>psubw</item>
-      <item>pswapd</item>
-      <item>punpckhbw</item>
-      <item>punpckhdq</item>
-      <item>punpckhqdq</item>
-      <item>punpckhwd</item>
-      <item>punpcklbw</item>
-      <item>punpckldq</item>
-      <item>punpcklqdq</item>
-      <item>punpcklwd</item>
-      <item>push</item>
-      <item>pusha</item>
-      <item>pushad</item>
-      <item>pushaw</item>
-      <item>pushf</item>
-      <item>pushfd</item>
-      <item>pushfq</item>
-      <item>pushfw</item>
-      <item>pxor</item>
-      <item>rcl</item>
-      <item>rcr</item>
-      <item>rcpps</item>
-      <item>rcpss</item>
-      <item>rdmsr</item>
-      <item>rdpmc</item>
-      <item>rdshr</item>
-      <item>rdtsc</item>
-      <item>rdtscp</item>
-      <item>ret</item>
-      <item>retf</item>
-      <item>retn</item>
-      <item>rol</item>
-      <item>ror</item>
-      <item>rsdc</item>
-      <item>rsldt</item>
-      <item>rsm</item>
-      <item>rsqrtps</item>
-      <item>rsqrtss</item>
-      <item>rsts</item>
-      <item>sahf</item>
-      <item>sal</item>
-      <item>sar</item>
-      <item>salc</item>
-      <item>sbb</item>
-      <item>scas</item>
-      <item>scasb</item>
-      <item>scasd</item>
-      <item>scasq</item>
-      <item>scasw</item>
-      <item>seta</item>
-      <item>setae</item>
-      <item>setb</item>
-      <item>setbe</item>
-      <item>setc</item>
-      <item>sete</item>
-      <item>setg</item>
-      <item>setge</item>
-      <item>setl</item>
-      <item>setle</item>
-      <item>setna</item>
-      <item>setnae</item>
-      <item>setnb</item>
-      <item>setnbe</item>
-      <item>setnc</item>
-      <item>setne</item>
-      <item>setng</item>
-      <item>setnge</item>
-      <item>setnl</item>
-      <item>setnle</item>
-      <item>setno</item>
-      <item>setnp</item>
-      <item>setns</item>
-      <item>setnz</item>
-      <item>seto</item>
-      <item>setp</item>
-      <item>setpe</item>
-      <item>setpo</item>
-      <item>sets</item>
-      <item>setz</item>
-      <item>sfence</item>
-      <item>sgdt</item>
-      <item>shl</item>
-      <item>shld</item>
-      <item>shr</item>
-      <item>shrd</item>
-      <item>shufpd</item>
-      <item>shufps</item>
-      <item>sidt</item>
-      <item>skinit</item>
-      <item>sldt</item>
-      <item>smi</item>
-      <item>smint</item>
-      <item>smintold</item>
-      <item>smsw</item>
-      <item>sqrtpd</item>
-      <item>sqrtps</item>
-      <item>sqrtsd</item>
-      <item>sqrtss</item>
-      <item>stc</item>
-      <item>std</item>
-      <item>stgi</item>
-      <item>sti</item>
-      <item>stmxcsr</item>
-      <item>stos</item>
-      <item>stosb</item>
-      <item>stosd</item>
-      <item>stosq</item>
-      <item>stosw</item>
-      <item>str</item>
-      <item>sub</item>
-      <item>subpd</item>
-      <item>subps</item>
-      <item>subsd</item>
-      <item>subss</item>
-      <item>svdc</item>
-      <item>svldt</item>
-      <item>svts</item>
-      <item>swapgs</item>
-      <item>syscall</item>
-      <item>sysenter</item>
-      <item>sysexit</item>
-      <item>sysret</item>
-      <item>test</item>
-      <item>ucomisd</item>
-      <item>ucomiss</item>
-      <item>ud0</item>
-      <item>ud1</item>
-      <item>ud2</item>
-      <item>umov</item>
-      <item>unpckhpd</item>
-      <item>unpckhps</item>
-      <item>unpcklpd</item>
-      <item>unpcklps</item>
-      <item>verr</item>
-      <item>verw</item>
-      <item>vmload</item>
-      <item>vmmcall</item>
-      <item>vmrun</item>
-      <item>vmsave</item>
-      <item>wait</item>
-      <item>wbinvd</item>
-      <item>wrmsr</item>
-      <item>wrshr</item>
-      <item>xadd</item>
-      <item>xbts</item>
-      <item>xchg</item>
-      <item>xlat</item>
-      <item>xlatb</item>
-      <item>xor</item>
-      <item>xorpd</item>
-      <item>xorps</item>
-    </list>
-
-    <list name="Data">
-      <!-- Initialized data (1.2.2)-->
-      <item>db</item>
-      <item>dw</item>
-      <item>du</item>
-      <item>dd</item>
-      <item>dp</item>
-      <item>df</item>
-      <item>dq</item>
-      <item>dt</item>
-      <!-- Uninitialized data (1.2.2)-->
-      <item>rb</item>
-      <item>rw</item>
-      <item>rd</item>
-      <item>rp</item>
-      <item>rf</item>
-      <item>rq</item>
-      <item>rt</item>
-      <!-- binary file include (1.2.2)-->
-      <item>file</item>
-      <!-- operand size from (1.2.1)-->
-      <item>byte</item>
-      <item>word</item>
-      <item>dword</item>
-      <item>pword</item>
-      <item>qword</item>
-      <item>tbyte</item>
-      <item>tword</item>
-      <item>dqword</item>
-      <item>ptr</item>
-    </list>
-
-    <list name="Preprocessor Keywords"> <!-- Contains keywords for macros, structures, etc... -->
-      <item>append</item>
-      <item>at</item>   <!-- As in "virtual at"-->
-      <item>break</item>
-      <item>common</item>
-      <item>display</item>
-      <item>else</item>
-      <item>end</item> <!-- As in "end if"-->
-      <item>equ</item>
-      <item>fix</item>
-      <item>foward</item>
-      <item>if</item>
-      <item>irp</item>
-      <item>irps</item>
-      <item>label</item>
-      <item>local</item>
-      <item>match</item>
-      <item>macro</item>
-      <item>purge</item>
-      <item>repeat</item>
-      <item>rept</item>
-      <item>reverse</item>
-      <item>restore</item>
-      <item>struc</item>
-      <item>times</item>
-      <item>while</item>
-      <item>virtual</item>
-    </list>
-
-    <list name="Instruction-like Keywords"> <!-- Contains instruction-like keywords -->
-      <item>align</item>
-      <item>entry</item>
-      <item>extrn</item>
-      <item>format</item>
-      <item>include</item>
-      <item>invoke</item>
-      <item>data</item>
-      <item>load</item>
-      <item>from</item>
-      <item>heap</item>
-      <item>org</item>
-      <item>proc</item>
-      <item>public</item>
-      <item>section</item>
-      <item>segment</item>
-      <item>stack</item>
-      <item>store</item>
-      <item>use16</item>
-      <item>use32</item>
-      <item>use64</item>
-    </list>
-
-    <contexts>
-      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-        <keyword attribute="Registers" context="#stay" String="registers"/>
-        <keyword attribute="Data" context="#stay" String="Data"/>
-        <keyword attribute="Instructions" context="#stay" String="instructions"/>
-        <keyword attribute="Instructions" context="#stay" String="Instruction-like Keywords"/>
-        <keyword attribute="Preprocessor" context="#stay" String="Preprocessor Keywords"/>
-        <DetectChar attribute="Comment" context="Comment" char=";"/>
-        <AnyChar attribute="String" context="String" String="&quot;'"/>
-        <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9@_.$?]+:"/>
-        <!-- Conditional instructions -->
-        <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/>
-        <!-- hexadecimal numbers -->
-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[a-f0-9]+h)([ \t,]+|$)"/>
-        <!-- octal and binary numbers -->
-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/>
-        <DetectChar attribute="Number" context="#stay" char="$"/>
-        <HlCOct attribute="BaseN" context="#stay"/>
-        <HlCHex attribute="BaseN" context="#stay"/>
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Number" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay"/>
-      </context>
-      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>
-      <context name="String" attribute="String" lineEndContext="#pop">
-        <AnyChar attribute="String" context="#pop" String="&quot;'"/>
-      </context>
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Registers" defStyleNum="dsKeyword"/>
-      <itemData name="Instructions" defStyleNum="dsBuiltIn"/>
-      <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="Label" defStyleNum="dsFunction"/>
-      <itemData name="Data" defStyleNum="dsDataType"/>
-      <itemData name="BaseN" defStyleNum="dsBaseN"/>
-      <itemData name="Float" defStyleNum="dsFloat"/>
-      <itemData name="Number" defStyleNum="dsDecVal"/>
-      <itemData name="Char" defStyleNum="dsChar"/>
-      <itemData name="String" defStyleNum="dsString"/>
-      <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <keywords casesensitive="0"/>
-    <comments>
-      <comment name="singleLine" start=";"/>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+    <!ENTITY float "[0-9]++(?:\.[0-9]*+(?:e[-+]?[0-9]*+)?|(?=f\b)|e[-+]?[0-9]++\b)">
+
+    <!ENTITY hex_cont "[0-9a-f]*+(?=h)">
+    <!ENTITY oct_hex_cont "[0-7]*+(?:&hex_cont;|(?=[oqh]))">
+    <!ENTITY hex "[0-9]&hex_cont;">
+    <!ENTITY oct_hex "[0-7]&oct_hex_cont;">
+    <!ENTITY bin_oct_hex "[01]*+(?:&oct_hex_cont;|(?=[byoqh]))">
+    <!ENTITY baseN "0x[0-9a-f]*+|&bin_oct_hex;|&oct_hex;|&hex;">
+
+    <!ENTITY number "[0-9]*+(?:to[0-9]+|(?=d?))">
+]>
+<language name="Intel x86 (FASM)" section="Assembler" version="4" kateversion="5.62" extensions="*.asm;*.inc;*.fasm" mimetype="" author="rCX (rCX12@yahoo.com)" license="GPL">
+  <highlighting>
+    <list name="registers">
+      <!-- General purpose registers -->
+      <item>rax</item>
+      <item>eax</item>
+      <item>ax</item>
+      <item>ah</item>
+      <item>al</item>
+      <item>rbx</item>
+      <item>ebx</item>
+      <item>bx</item>
+      <item>bh</item>
+      <item>bl</item>
+      <item>rcx</item>
+      <item>ecx</item>
+      <item>cx</item>
+      <item>ch</item>
+      <item>cl</item>
+      <item>rdx</item>
+      <item>edx</item>
+      <item>dx</item>
+      <item>dh</item>
+      <item>dl</item>
+      <item>rbp</item>
+      <item>ebp</item>
+      <item>bp</item>
+      <item>rsi</item>
+      <item>esi</item>
+      <item>si</item>
+      <item>rdi</item>
+      <item>edi</item>
+      <item>di</item>
+      <item>rsp</item>
+      <item>esp</item>
+      <item>sp</item>
+      <item>r8</item>
+      <item>r9</item>
+      <item>r10</item>
+      <item>r11</item>
+      <item>r12</item>
+      <item>r13</item>
+      <item>r14</item>
+      <item>r15</item>
+      <!-- Segmentation registers -->
+      <item>cs</item>
+      <item>ds</item>
+      <item>es</item>
+      <item>fs</item>
+      <item>gs</item>
+      <item>ss</item>
+      <!-- Control registers -->
+      <item>cr0</item>
+      <!--<item>cr1</item>-->
+      <item>cr2</item>
+      <item>cr3</item>
+      <item>cr4</item>
+      <!-- Debug registers -->
+      <item>dr0</item>
+      <item>dr1</item>
+      <item>dr2</item>
+      <item>dr3</item>
+      <item>dr6</item>
+      <item>dr7</item>
+      <!-- x87 FPU Registers -->
+      <item>st0</item>
+      <item>st1</item>
+      <item>st2</item>
+      <item>st3</item>
+      <item>st4</item>
+      <item>st5</item>
+      <item>st6</item>
+      <item>st7</item>
+      <!-- MMX registers -->
+      <item>mm0</item>
+      <item>mm1</item>
+      <item>mm2</item>
+      <item>mm3</item>
+      <item>mm4</item>
+      <item>mm5</item>
+      <item>mm6</item>
+      <item>mm7</item>
+      <!-- SEE registers -->
+      <item>xmm0</item>
+      <item>xmm1</item>
+      <item>xmm2</item>
+      <item>xmm3</item>
+      <item>xmm4</item>
+      <item>xmm5</item>
+      <item>xmm6</item>
+      <item>xmm7</item>
+      <!-- AVX registers -->
+      <item>ymm0</item>
+      <item>ymm1</item>
+      <item>ymm2</item>
+      <item>ymm3</item>
+      <item>ymm4</item>
+      <item>ymm5</item>
+      <item>ymm6</item>
+      <item>ymm7</item>
+      <!-- AVX-512 registers -->
+      <item>zmm0</item>
+      <item>zmm1</item>
+      <item>zmm2</item>
+      <item>zmm3</item>
+      <item>zmm4</item>
+      <item>zmm5</item>
+      <item>zmm6</item>
+      <item>zmm7</item>
+      <!-- Opmask registers -->
+      <item>k0</item>
+      <item>k1</item>
+      <item>k2</item>
+      <item>k3</item>
+      <item>k4</item>
+      <item>k5</item>
+      <item>k6</item>
+      <item>k7</item>
+      <!-- Bounds -->
+      <item>bnd0</item>
+      <item>bnd1</item>
+      <item>bnd2</item>
+      <item>bnd3</item>
+    </list>
+
+    <list name="branch instructions">
+      <item>call</item>
+      <item>ja</item>
+      <item>jae</item>
+      <item>jb</item>
+      <item>jbe</item>
+      <item>jc</item>
+      <item>je</item>
+      <item>jg</item>
+      <item>jge</item>
+      <item>jl</item>
+      <item>jle</item>
+      <item>jmp</item>
+      <item>jna</item>
+      <item>jnae</item>
+      <item>jnb</item>
+      <item>jnbe</item>
+      <item>jnc</item>
+      <item>jne</item>
+      <item>jng</item>
+      <item>jnge</item>
+      <item>jnl</item>
+      <item>jnle</item>
+      <item>jno</item>
+      <item>jnp</item>
+      <item>jns</item>
+      <item>jnz</item>
+      <item>jo</item>
+      <item>jp</item>
+      <item>jpe</item>
+      <item>jpo</item>
+      <item>js</item>
+      <item>jz</item>
+      <item>jcxz</item>
+      <item>jecxz</item>
+      <item>loop</item>
+      <item>loopd</item>
+      <item>loope</item>
+      <item>looped</item>
+      <item>loopew</item>
+      <item>loopne</item>
+      <item>loopned</item>
+      <item>loopnew</item>
+      <item>loopnz</item>
+      <item>loopnzd</item>
+      <item>loopnzw</item>
+      <item>loopw</item>
+      <item>loopz</item>
+      <item>loopzd</item>
+      <item>loopzw</item>
+      <item>loopnz</item>
+      <item>loopnzd</item>
+      <item>loopnzw</item>
+      <item>loopz</item>
+      <item>loopzw</item>
+      <item>ret</item>
+      <item>retd</item>
+      <item>retf</item>
+      <item>retfd</item>
+      <item>retfw</item>
+      <item>retn</item>
+      <item>retnd</item>
+      <item>retnw</item>
+      <item>retw</item>
+      <item>iret</item>
+      <item>iretd</item>
+      <item>iretq</item>
+      <item>iretw</item>
+      <item>rsm</item>
+      <item>syscall</item>
+      <item>sysenter</item>
+      <item>sysexit</item>
+      <item>sysret</item>
+      <item>syscallq</item>
+      <item>sysretq</item>
+    </list>
+
+    <list name="instructions">
+      <item>aaa</item>
+      <item>aad</item>
+      <item>aam</item>
+      <item>aas</item>
+      <item>adc</item>
+      <item>add</item>
+      <item>addpd</item>
+      <item>addps</item>
+      <item>addsd</item>
+      <item>addss</item>
+      <item>addsubpd</item>
+      <item>addsubps</item>
+      <item>aesdec</item>
+      <item>aesdeclast</item>
+      <item>aesenc</item>
+      <item>aesenclast</item>
+      <item>aesimc</item>
+      <item>aeskeygenassist</item>
+      <item>and</item>
+      <item>andn</item>
+      <item>andnpd</item>
+      <item>andnps</item>
+      <item>andpd</item>
+      <item>andps</item>
+      <item>arpl</item>
+      <item>bextr</item>
+      <item>blcfill</item>
+      <item>blci</item>
+      <item>blcic</item>
+      <item>blcmsk</item>
+      <item>blcs</item>
+      <item>blendpd</item>
+      <item>blendps</item>
+      <item>blendvpd</item>
+      <item>blendvps</item>
+      <item>blsfill</item>
+      <item>blsi</item>
+      <item>blsic</item>
+      <item>blsmsk</item>
+      <item>blsr</item>
+      <item>bndldx</item>
+      <item>bndmk</item>
+      <item>bndstx</item>
+      <item>bound</item>
+      <item>bsf</item>
+      <item>bsr</item>
+      <item>bswap</item>
+      <item>bt</item>
+      <item>btc</item>
+      <item>btr</item>
+      <item>bts</item>
+      <item>bzhi</item>
+      <item>cbw</item>
+      <item>cdq</item>
+      <item>cdqe</item>
+      <item>clc</item>
+      <item>cld</item>
+      <item>clflush</item>
+      <item>clgi</item>
+      <item>cli</item>
+      <item>clts</item>
+      <item>cmc</item>
+      <item>cmov</item>
+      <item>cmova</item>
+      <item>cmovae</item>
+      <item>cmovb</item>
+      <item>cmovbe</item>
+      <item>cmovc</item>
+      <item>cmove</item>
+      <item>cmovg</item>
+      <item>cmovge</item>
+      <item>cmovl</item>
+      <item>cmovle</item>
+      <item>cmovna</item>
+      <item>cmovnae</item>
+      <item>cmovnb</item>
+      <item>cmovnbe</item>
+      <item>cmovnc</item>
+      <item>cmovne</item>
+      <item>cmovng</item>
+      <item>cmovnge</item>
+      <item>cmovnl</item>
+      <item>cmovnle</item>
+      <item>cmovno</item>
+      <item>cmovnp</item>
+      <item>cmovns</item>
+      <item>cmovnz</item>
+      <item>cmovo</item>
+      <item>cmovp</item>
+      <item>cmovpe</item>
+      <item>cmovpo</item>
+      <item>cmovs</item>
+      <item>cmovz</item>
+      <item>cmp</item>
+      <item>cmpeq</item>
+      <item>cmpeqpd</item>
+      <item>cmpeqps</item>
+      <item>cmpeqsd</item>
+      <item>cmpeqss</item>
+      <item>cmple</item>
+      <item>cmplepd</item>
+      <item>cmpleps</item>
+      <item>cmplesd</item>
+      <item>cmpless</item>
+      <item>cmplt</item>
+      <item>cmpltpd</item>
+      <item>cmpltps</item>
+      <item>cmpltsd</item>
+      <item>cmpltss</item>
+      <item>cmpneq</item>
+      <item>cmpneqpd</item>
+      <item>cmpneqps</item>
+      <item>cmpneqsd</item>
+      <item>cmpneqss</item>
+      <item>cmpnle</item>
+      <item>cmpnlepd</item>
+      <item>cmpnleps</item>
+      <item>cmpnlesd</item>
+      <item>cmpnless</item>
+      <item>cmpnlt</item>
+      <item>cmpnltpd</item>
+      <item>cmpnltps</item>
+      <item>cmpnltsd</item>
+      <item>cmpnltss</item>
+      <item>cmpord</item>
+      <item>cmpordpd</item>
+      <item>cmpordps</item>
+      <item>cmpordsd</item>
+      <item>cmpordss</item>
+      <item>cmppd</item>
+      <item>cmpps</item>
+      <item>cmps</item>
+      <item>cmpsb</item>
+      <item>cmpsd</item>
+      <item>cmpsq</item>
+      <item>cmpss</item>
+      <item>cmpsw</item>
+      <item>cmpunord</item>
+      <item>cmpunordpd</item>
+      <item>cmpunordps</item>
+      <item>cmpunordsd</item>
+      <item>cmpunordss</item>
+      <item>cmpxchg16b</item>
+      <item>cmpxchg486</item>
+      <item>cmpxchg8b</item>
+      <item>cmpxchg</item>
+      <item>comisd</item>
+      <item>comiss</item>
+      <item>compare</item>
+      <item>cpuid</item>
+      <item>cqo</item>
+      <item>crc32</item>
+      <item>cvtdq2pd</item>
+      <item>cvtdq2ps</item>
+      <item>cvtpd2dq</item>
+      <item>cvtpd2pi</item>
+      <item>cvtpd2ps</item>
+      <item>cvtpi2pd</item>
+      <item>cvtpi2ps</item>
+      <item>cvtps2dq</item>
+      <item>cvtps2pd</item>
+      <item>cvtps2pi</item>
+      <item>cvtsd2si</item>
+      <item>cvtsd2ss</item>
+      <item>cvtsi2sd</item>
+      <item>cvtsi2ss</item>
+      <item>cvtss2sd</item>
+      <item>cvtss2si</item>
+      <item>cvttpd2dq</item>
+      <item>cvttpd2pi</item>
+      <item>cvttps2dq</item>
+      <item>cvttps2pi</item>
+      <item>cvttsd2si</item>
+      <item>cvttss2si</item>
+      <item>cwd</item>
+      <item>cwde</item>
+      <item>daa</item>
+      <item>das</item>
+      <item>dec</item>
+      <item>div</item>
+      <item>divpd</item>
+      <item>divps</item>
+      <item>divsd</item>
+      <item>divss</item>
+      <item>dppd</item>
+      <item>dpps</item>
+      <item>emms</item>
+      <item>enter</item>
+      <item>extractps</item>
+      <item>extrq</item>
+      <item>f2xm1</item>
+      <item>fabs</item>
+      <item>fadd</item>
+      <item>faddp</item>
+      <item>fbld</item>
+      <item>fbstp</item>
+      <item>fchs</item>
+      <item>fclex</item>
+      <item>fcmovb</item>
+      <item>fcmovbe</item>
+      <item>fcmove</item>
+      <item>fcmovnb</item>
+      <item>fcmovnbe</item>
+      <item>fcmovne</item>
+      <item>fcmovnu</item>
+      <item>fcmovu</item>
+      <item>fcom</item>
+      <item>fcomi</item>
+      <item>fcomip</item>
+      <item>fcomp</item>
+      <item>fcompp</item>
+      <item>fcos</item>
+      <item>fdecstp</item>
+      <item>fdisi</item>
+      <item>fdiv</item>
+      <item>fdivp</item>
+      <item>fdivr</item>
+      <item>fdivrp</item>
+      <item>femms</item>
+      <item>feni</item>
+      <item>ffree</item>
+      <item>ffreep</item>
+      <item>fiadd</item>
+      <item>ficom</item>
+      <item>ficomp</item>
+      <item>fidiv</item>
+      <item>fidivr</item>
+      <item>fild</item>
+      <item>fimul</item>
+      <item>fincstp</item>
+      <item>finit</item>
+      <item>fist</item>
+      <item>fistp</item>
+      <item>fisttp</item>
+      <item>fisub</item>
+      <item>fisubr</item>
+      <item>fld1</item>
+      <item>fld</item>
+      <item>fldcw</item>
+      <item>fldenv</item>
+      <item>fldenvd</item>
+      <item>fldenvw</item>
+      <item>fldl2e</item>
+      <item>fldl2t</item>
+      <item>fldlg2</item>
+      <item>fldln2</item>
+      <item>fldpi</item>
+      <item>fldz</item>
+      <item>fmul</item>
+      <item>fmulp</item>
+      <item>fnclex</item>
+      <item>fndisi</item>
+      <item>fneni</item>
+      <item>fninit</item>
+      <item>fnop</item>
+      <item>fnsave</item>
+      <item>fnsaved</item>
+      <item>fnsavew</item>
+      <item>fnstcw</item>
+      <item>fnstenv</item>
+      <item>fnstenvd</item>
+      <item>fnstenvw</item>
+      <item>fnstsw</item>
+      <item>fnwait</item>
+      <item>fpatan</item>
+      <item>fprem1</item>
+      <item>fprem</item>
+      <item>fptan</item>
+      <item>frndint</item>
+      <item>frstor</item>
+      <item>frstord</item>
+      <item>frstorw</item>
+      <item>fsave</item>
+      <item>fsaved</item>
+      <item>fsavew</item>
+      <item>fscale</item>
+      <item>fsetpm</item>
+      <item>fsin</item>
+      <item>fsincos</item>
+      <item>fsqrt</item>
+      <item>fst</item>
+      <item>fstcw</item>
+      <item>fstenv</item>
+      <item>fstenvd</item>
+      <item>fstenvw</item>
+      <item>fstp</item>
+      <item>fstsw</item>
+      <item>fsub</item>
+      <item>fsubp</item>
+      <item>fsubr</item>
+      <item>fsubrp</item>
+      <item>ftst</item>
+      <item>fucom</item>
+      <item>fucomi</item>
+      <item>fucomip</item>
+      <item>fucomp</item>
+      <item>fucompp</item>
+      <item>fwait</item>
+      <item>fxam</item>
+      <item>fxch</item>
+      <item>fxrstor64</item>
+      <item>fxrstor</item>
+      <item>fxsave64</item>
+      <item>fxsave</item>
+      <item>fxtract</item>
+      <item>fyl2x</item>
+      <item>fyl2xp1</item>
+      <item>getsec</item>
+      <item>haddpd</item>
+      <item>haddps</item>
+      <item>hlt</item>
+      <item>hsubpd</item>
+      <item>hsubps</item>
+      <item>ibts</item>
+      <item>idiv</item>
+      <item>imul</item>
+      <item>in</item>
+      <item>inc</item>
+      <item>ins</item>
+      <item>insb</item>
+      <item>insd</item>
+      <item>insertps</item>
+      <item>insertq</item>
+      <item>insw</item>
+      <item>int1</item>
+      <item>int3</item>
+      <item>int</item>
+      <item>into</item>
+      <item>invd</item>
+      <item>invept</item>
+      <item>invlpg</item>
+      <item>invlpga</item>
+      <item>invpcid</item>
+      <item>invvpid</item>
+      <item>lahf</item>
+      <item>lar</item>
+      <item>lddqu</item>
+      <item>ldmxcsr</item>
+      <item>lds</item>
+      <item>lea</item>
+      <item>leave</item>
+      <item>les</item>
+      <item>lfence</item>
+      <item>lfs</item>
+      <item>lgdt</item>
+      <item>lgs</item>
+      <item>lidt</item>
+      <item>lldt</item>
+      <item>lmsw</item>
+      <item>loadall286</item>
+      <item>loadall</item>
+      <item>lock</item>
+      <item>lods</item>
+      <item>lodsb</item>
+      <item>lodsd</item>
+      <item>lodsq</item>
+      <item>lodsw</item>
+      <item>lsl</item>
+      <item>lss</item>
+      <item>ltr</item>
+      <item>lzcnt</item>
+      <item>maskmovdqu</item>
+      <item>maskmovq</item>
+      <item>maxpd</item>
+      <item>maxps</item>
+      <item>maxsd</item>
+      <item>maxss</item>
+      <item>mfence</item>
+      <item>minpd</item>
+      <item>minps</item>
+      <item>minsd</item>
+      <item>minss</item>
+      <item>monitor</item>
+      <item>mov</item>
+      <item>movapd</item>
+      <item>movaps</item>
+      <item>movbe</item>
+      <item>movd</item>
+      <item>movddup</item>
+      <item>movdq2q</item>
+      <item>movdqa</item>
+      <item>movdqu</item>
+      <item>movhlps</item>
+      <item>movhpd</item>
+      <item>movhps</item>
+      <item>movlhps</item>
+      <item>movlpd</item>
+      <item>movlps</item>
+      <item>movmskpd</item>
+      <item>movmskps</item>
+      <item>movntdq</item>
+      <item>movntdqa</item>
+      <item>movnti</item>
+      <item>movntpd</item>
+      <item>movntps</item>
+      <item>movntq</item>
+      <item>movntsd</item>
+      <item>movntss</item>
+      <item>movq2dq</item>
+      <item>movq</item>
+      <item>movs</item>
+      <item>movsb</item>
+      <item>movsd</item>
+      <item>movshdup</item>
+      <item>movsldup</item>
+      <item>movsq</item>
+      <item>movss</item>
+      <item>movsw</item>
+      <item>movsx</item>
+      <item>movsxd</item>
+      <item>movupd</item>
+      <item>movups</item>
+      <item>movzx</item>
+      <item>mpsadbw</item>
+      <item>mul</item>
+      <item>mulpd</item>
+      <item>mulps</item>
+      <item>mulsd</item>
+      <item>mulss</item>
+      <item>mulx</item>
+      <item>mwait</item>
+      <item>neg</item>
+      <item>nop</item>
+      <item>not</item>
+      <item>or</item>
+      <item>orpd</item>
+      <item>orps</item>
+      <item>out</item>
+      <item>outs</item>
+      <item>outsb</item>
+      <item>outsd</item>
+      <item>outsw</item>
+      <item>pabsb</item>
+      <item>pabsd</item>
+      <item>pabsw</item>
+      <item>packssdw</item>
+      <item>packsswb</item>
+      <item>packusdw</item>
+      <item>packuswb</item>
+      <item>paddb</item>
+      <item>paddd</item>
+      <item>paddq</item>
+      <item>paddsb</item>
+      <item>paddsw</item>
+      <item>paddusb</item>
+      <item>paddusw</item>
+      <item>paddw</item>
+      <item>palignr</item>
+      <item>pand</item>
+      <item>pandn</item>
+      <item>pause</item>
+      <item>pavgb</item>
+      <item>pavgusb</item>
+      <item>pavgw</item>
+      <item>pblendvb</item>
+      <item>pblendw</item>
+      <item>pclmulqdq</item>
+      <item>pcmpeqb</item>
+      <item>pcmpeqd</item>
+      <item>pcmpeqq</item>
+      <item>pcmpeqw</item>
+      <item>pcmpestri</item>
+      <item>pcmpestrm</item>
+      <item>pcmpgtb</item>
+      <item>pcmpgtd</item>
+      <item>pcmpgtq</item>
+      <item>pcmpgtw</item>
+      <item>pcmpistri</item>
+      <item>pcmpistrm</item>
+      <item>pdep</item>
+      <item>pdistib</item>
+      <item>pext</item>
+      <item>pextrb</item>
+      <item>pextrd</item>
+      <item>pextrq</item>
+      <item>pextrw</item>
+      <item>pf2id</item>
+      <item>pf2iw</item>
+      <item>pfacc</item>
+      <item>pfadd</item>
+      <item>pfcmpeq</item>
+      <item>pfcmpge</item>
+      <item>pfcmpgt</item>
+      <item>pfmax</item>
+      <item>pfmin</item>
+      <item>pfmul</item>
+      <item>pfnacc</item>
+      <item>pfpnacc</item>
+      <item>pfrcp</item>
+      <item>pfrcpit1</item>
+      <item>pfrcpit2</item>
+      <item>pfrsqit1</item>
+      <item>pfrsqrt</item>
+      <item>pfsub</item>
+      <item>pfsubr</item>
+      <item>phaddd</item>
+      <item>phaddsw</item>
+      <item>phaddw</item>
+      <item>phminposuw</item>
+      <item>phsubd</item>
+      <item>phsubsw</item>
+      <item>phsubw</item>
+      <item>pi2fd</item>
+      <item>pi2fw</item>
+      <item>pinsrb</item>
+      <item>pinsrd</item>
+      <item>pinsrq</item>
+      <item>pinsrw</item>
+      <item>pmachriw</item>
+      <item>pmaddubsw</item>
+      <item>pmaddwd</item>
+      <item>pmagw</item>
+      <item>pmaxsb</item>
+      <item>pmaxsd</item>
+      <item>pmaxsw</item>
+      <item>pmaxub</item>
+      <item>pmaxud</item>
+      <item>pmaxuw</item>
+      <item>pminsb</item>
+      <item>pminsd</item>
+      <item>pminsw</item>
+      <item>pminub</item>
+      <item>pminud</item>
+      <item>pminuw</item>
+      <item>pmovmskb</item>
+      <item>pmovsxbd</item>
+      <item>pmovsxbq</item>
+      <item>pmovsxbw</item>
+      <item>pmovsxdq</item>
+      <item>pmovsxwd</item>
+      <item>pmovsxwq</item>
+      <item>pmovzxbd</item>
+      <item>pmovzxbq</item>
+      <item>pmovzxbw</item>
+      <item>pmovzxdq</item>
+      <item>pmovzxwd</item>
+      <item>pmovzxwq</item>
+      <item>pmuldq</item>
+      <item>pmulhrsw</item>
+      <item>pmulhrw</item>
+      <item>pmulhuw</item>
+      <item>pmulhw</item>
+      <item>pmulld</item>
+      <item>pmullw</item>
+      <item>pmuludq</item>
+      <item>pmvgezb</item>
+      <item>pmvlzb</item>
+      <item>pmvnzb</item>
+      <item>pmvzb</item>
+      <item>pop</item>
+      <item>popa</item>
+      <item>popad</item>
+      <item>popaw</item>
+      <item>popcnt</item>
+      <item>popd</item>
+      <item>popf</item>
+      <item>popfd</item>
+      <item>popfq</item>
+      <item>popfw</item>
+      <item>popw</item>
+      <item>por</item>
+      <item>prefetch</item>
+      <item>prefetchnta</item>
+      <item>prefetcht0</item>
+      <item>prefetcht1</item>
+      <item>prefetcht2</item>
+      <item>prefetchw</item>
+      <item>psadbw</item>
+      <item>pshufb</item>
+      <item>pshufd</item>
+      <item>pshufhw</item>
+      <item>pshuflw</item>
+      <item>pshufw</item>
+      <item>psignb</item>
+      <item>psignd</item>
+      <item>psignw</item>
+      <item>pslld</item>
+      <item>pslldq</item>
+      <item>psllq</item>
+      <item>psllw</item>
+      <item>psrad</item>
+      <item>psraw</item>
+      <item>psrld</item>
+      <item>psrldq</item>
+      <item>psrlq</item>
+      <item>psrlw</item>
+      <item>psubb</item>
+      <item>psubd</item>
+      <item>psubq</item>
+      <item>psubsb</item>
+      <item>psubsiw</item>
+      <item>psubsw</item>
+      <item>psubusb</item>
+      <item>psubusw</item>
+      <item>psubw</item>
+      <item>pswapd</item>
+      <item>ptest</item>
+      <item>punpckhbw</item>
+      <item>punpckhdq</item>
+      <item>punpckhqdq</item>
+      <item>punpckhwd</item>
+      <item>punpcklbw</item>
+      <item>punpckldq</item>
+      <item>punpcklqdq</item>
+      <item>punpcklwd</item>
+      <item>push</item>
+      <item>pusha</item>
+      <item>pushad</item>
+      <item>pushaw</item>
+      <item>pushd</item>
+      <item>pushf</item>
+      <item>pushfd</item>
+      <item>pushfq</item>
+      <item>pushfw</item>
+      <item>pushw</item>
+      <item>pxor</item>
+      <item>rcl</item>
+      <item>rcpps</item>
+      <item>rcpss</item>
+      <item>rcr</item>
+      <item>rdfsbase</item>
+      <item>rdgsbase</item>
+      <item>rdmsr</item>
+      <item>rdmsrq</item>
+      <item>rdpmc</item>
+      <item>rdrand</item>
+      <item>rdshr</item>
+      <item>rdtsc</item>
+      <item>rdtscp</item>
+      <item>rol</item>
+      <item>ror</item>
+      <item>rorx</item>
+      <item>roundpd</item>
+      <item>roundps</item>
+      <item>roundsd</item>
+      <item>roundss</item>
+      <item>rsdc</item>
+      <item>rsldt</item>
+      <item>rsm</item>
+      <item>rsqrtps</item>
+      <item>rsqrtss</item>
+      <item>rsts</item>
+      <item>sahf</item>
+      <item>sal</item>
+      <item>salc</item>
+      <item>sar</item>
+      <item>sarx</item>
+      <item>sbb</item>
+      <item>scas</item>
+      <item>scasb</item>
+      <item>scasd</item>
+      <item>scasq</item>
+      <item>scasw</item>
+      <item>set</item>
+      <item>seta</item>
+      <item>setae</item>
+      <item>setb</item>
+      <item>setbe</item>
+      <item>setc</item>
+      <item>sete</item>
+      <item>setg</item>
+      <item>setge</item>
+      <item>setl</item>
+      <item>setle</item>
+      <item>setna</item>
+      <item>setnae</item>
+      <item>setnb</item>
+      <item>setnbe</item>
+      <item>setnc</item>
+      <item>setne</item>
+      <item>setng</item>
+      <item>setnge</item>
+      <item>setnl</item>
+      <item>setnle</item>
+      <item>setno</item>
+      <item>setnp</item>
+      <item>setns</item>
+      <item>setnz</item>
+      <item>seto</item>
+      <item>setp</item>
+      <item>setpe</item>
+      <item>setpo</item>
+      <item>sets</item>
+      <item>setz</item>
+      <item>sfence</item>
+      <item>sgdt</item>
+      <item>shl</item>
+      <item>shld</item>
+      <item>shlx</item>
+      <item>shr</item>
+      <item>shrd</item>
+      <item>shrx</item>
+      <item>shufpd</item>
+      <item>shufps</item>
+      <item>sidt</item>
+      <item>skinit</item>
+      <item>sldt</item>
+      <item>smi</item>
+      <item>smint</item>
+      <item>smintold</item>
+      <item>smsw</item>
+      <item>sqrtpd</item>
+      <item>sqrtps</item>
+      <item>sqrtsd</item>
+      <item>sqrtss</item>
+      <item>stc</item>
+      <item>std</item>
+      <item>stgi</item>
+      <item>sti</item>
+      <item>stmxcsr</item>
+      <item>stos</item>
+      <item>stosb</item>
+      <item>stosd</item>
+      <item>stosq</item>
+      <item>stosw</item>
+      <item>str</item>
+      <item>sub</item>
+      <item>subpd</item>
+      <item>subps</item>
+      <item>subsd</item>
+      <item>subss</item>
+      <item>svdc</item>
+      <item>svldt</item>
+      <item>svts</item>
+      <item>swapgs</item>
+      <item>t1mskc</item>
+      <item>test</item>
+      <item>tzcnt</item>
+      <item>tzmsk</item>
+      <item>ucomisd</item>
+      <item>ucomiss</item>
+      <item>ud0</item>
+      <item>ud1</item>
+      <item>ud2</item>
+      <item>umov</item>
+      <item>unpckhpd</item>
+      <item>unpckhps</item>
+      <item>unpcklpd</item>
+      <item>unpcklps</item>
+      <item>vaesenc</item>
+      <item>vaesenclast</item>
+      <item>vaesimc</item>
+      <item>vblendvpd</item>
+      <item>vblendvps</item>
+      <item>vbroadcastf128</item>
+      <item>vbroadcasti128</item>
+      <item>vbroadcastsd</item>
+      <item>vbroadcastss</item>
+      <item>vcomisd</item>
+      <item>vcomiss</item>
+      <item>vcvtdq2pd</item>
+      <item>vcvtdq2ps</item>
+      <item>vcvtpd2dq</item>
+      <item>vcvtpd2ps</item>
+      <item>vcvtph2ps</item>
+      <item>vcvtps2dq</item>
+      <item>vcvtps2pd</item>
+      <item>vcvtps2ph</item>
+      <item>vcvtsd2si</item>
+      <item>vcvtsd2ss</item>
+      <item>vcvtsi2sd</item>
+      <item>vcvtsi2ss</item>
+      <item>vcvtss2sd</item>
+      <item>vcvtss2si</item>
+      <item>vcvttpd2dq</item>
+      <item>vcvttps2dq</item>
+      <item>vcvttsd2si</item>
+      <item>vcvttss2si</item>
+      <item>vdppd</item>
+      <item>verr</item>
+      <item>verw</item>
+      <item>vextractf128</item>
+      <item>vextracti128</item>
+      <item>vextractps</item>
+      <item>vfm132pd</item>
+      <item>vfm132ps</item>
+      <item>vfm132sd</item>
+      <item>vfm132ss</item>
+      <item>vfm213pd</item>
+      <item>vfm213ps</item>
+      <item>vfm213sd</item>
+      <item>vfm213ss</item>
+      <item>vfm231pd</item>
+      <item>vfm231ps</item>
+      <item>vfm231sd</item>
+      <item>vfm231ss</item>
+      <item>vfmaddpd</item>
+      <item>vfmaddsub132pd</item>
+      <item>vfmaddsub132ps</item>
+      <item>vfmaddsub213pd</item>
+      <item>vfmaddsub213ps</item>
+      <item>vfmaddsub231pd</item>
+      <item>vfmaddsub231ps</item>
+      <item>vfmsubadd132pd</item>
+      <item>vfmsubadd132ps</item>
+      <item>vfmsubadd213pd</item>
+      <item>vfmsubadd213ps</item>
+      <item>vfmsubadd231pd</item>
+      <item>vfmsubadd231ps</item>
+      <item>vfmsubss</item>
+      <item>vfnm132pd</item>
+      <item>vfnm132ps</item>
+      <item>vfnm132sd</item>
+      <item>vfnm132ss</item>
+      <item>vfnm213pd</item>
+      <item>vfnm213ps</item>
+      <item>vfnm213sd</item>
+      <item>vfnm213ss</item>
+      <item>vfnm231pd</item>
+      <item>vfnm231ps</item>
+      <item>vfnm231sd</item>
+      <item>vfnm231ss</item>
+      <item>vfrczpd</item>
+      <item>vfrczps</item>
+      <item>vfrczsd</item>
+      <item>vfrczss</item>
+      <item>vgatherdpd</item>
+      <item>vgatherdps</item>
+      <item>vgatherqpd</item>
+      <item>vgatherqps</item>
+      <item>vinsertf128</item>
+      <item>vinserti128</item>
+      <item>vinsertps</item>
+      <item>vlddqu</item>
+      <item>vldmxcsr</item>
+      <item>vmaskmovdqu</item>
+      <item>vmaskmovpd</item>
+      <item>vmaskmovps</item>
+      <item>vmcall</item>
+      <item>vmclear</item>
+      <item>vmlaunch</item>
+      <item>vmload</item>
+      <item>vmmcall</item>
+      <item>vmovapd</item>
+      <item>vmovaps</item>
+      <item>vmovd</item>
+      <item>vmovddup</item>
+      <item>vmovdqa</item>
+      <item>vmovdqu</item>
+      <item>vmovhlps</item>
+      <item>vmovhpd</item>
+      <item>vmovhps</item>
+      <item>vmovlhps</item>
+      <item>vmovlpd</item>
+      <item>vmovlps</item>
+      <item>vmovmskpd</item>
+      <item>vmovmskps</item>
+      <item>vmovntdq</item>
+      <item>vmovntdqa</item>
+      <item>vmovntpd</item>
+      <item>vmovntps</item>
+      <item>vmovq</item>
+      <item>vmovsd</item>
+      <item>vmovshdup</item>
+      <item>vmovsldup</item>
+      <item>vmovss</item>
+      <item>vmovupd</item>
+      <item>vmovups</item>
+      <item>vmptrld</item>
+      <item>vmptrst</item>
+      <item>vmread</item>
+      <item>vmresume</item>
+      <item>vmrun</item>
+      <item>vmsave</item>
+      <item>vmwrite</item>
+      <item>vmxoff</item>
+      <item>vmxon</item>
+      <item>vpabsb</item>
+      <item>vpabsd</item>
+      <item>vpabsw</item>
+      <item>vpackssdw</item>
+      <item>vpacksswb</item>
+      <item>vpackusdw</item>
+      <item>vpackuswb</item>
+      <item>vpaddb</item>
+      <item>vpaddd</item>
+      <item>vpaddq</item>
+      <item>vpaddsb</item>
+      <item>vpaddsw</item>
+      <item>vpaddusb</item>
+      <item>vpaddusw</item>
+      <item>vpaddw</item>
+      <item>vpalignr</item>
+      <item>vpand</item>
+      <item>vpandn</item>
+      <item>vpause</item>
+      <item>vpavgb</item>
+      <item>vpavgusb</item>
+      <item>vpavgw</item>
+      <item>vpblendvb</item>
+      <item>vpblendw</item>
+      <item>vpbroadcastb</item>
+      <item>vpbroadcastd</item>
+      <item>vpbroadcastq</item>
+      <item>vpbroadcastw</item>
+      <item>vpclmulqdq</item>
+      <item>vpcmov</item>
+      <item>vpcmpeqb</item>
+      <item>vpcmpeqd</item>
+      <item>vpcmpeqq</item>
+      <item>vpcmpeqw</item>
+      <item>vpcmpestri</item>
+      <item>vpcmpestrm</item>
+      <item>vpcmpgtb</item>
+      <item>vpcmpgtd</item>
+      <item>vpcmpgtq</item>
+      <item>vpcmpgtw</item>
+      <item>vpcmpistri</item>
+      <item>vpcmpistrm</item>
+      <item>vpcomb</item>
+      <item>vpcomd</item>
+      <item>vfmadd132ps</item>
+      <item>vfnmadd132ps</item>
+      <item>vfmsub132ps</item>
+      <item>vfnmsub132ps</item>
+      <item>vfmadd213ps</item>
+      <item>vfnmadd213ps</item>
+      <item>vfmsub213ps</item>
+      <item>vfnmsub213ps</item>
+      <item>vfmadd231ps</item>
+      <item>vfnmadd231ps</item>
+      <item>vfmsub231ps</item>
+      <item>vfnmsub231ps</item>
+      <item>vfmadd132pd</item>
+      <item>vfnmadd132pd</item>
+      <item>vfmsub132pd</item>
+      <item>vfnmsub132pd</item>
+      <item>vfmadd213pd</item>
+      <item>vfnmadd213pd</item>
+      <item>vfmsub213pd</item>
+      <item>vfnmsub213pd</item>
+      <item>vfmadd231pd</item>
+      <item>vfnmadd231pd</item>
+      <item>vfmsub231pd</item>
+      <item>vfnmsub231pd</item>
+      <item>vfmadd132ss</item>
+      <item>vfnmadd132ss</item>
+      <item>vfmsub132ss</item>
+      <item>vfnmsub132ss</item>
+      <item>vfmadd213ss</item>
+      <item>vfnmadd213ss</item>
+      <item>vfmsub213ss</item>
+      <item>vfnmsub213ss</item>
+      <item>vfmadd231ss</item>
+      <item>vfnmadd231ss</item>
+      <item>vfmsub231ss</item>
+      <item>vfnmsub231ss</item>
+      <item>vfmadd132sd</item>
+      <item>vfnmadd132sd</item>
+      <item>vfmsub132sd</item>
+      <item>vfnmsub132sd</item>
+      <item>vfmadd213sd</item>
+      <item>vfnmadd213sd</item>
+      <item>vfmsub213sd</item>
+      <item>vfnmsub213sd</item>
+      <item>vfmadd231sd</item>
+      <item>vfnmadd231sd</item>
+      <item>vfmsub231sd</item>
+      <item>vfnmsub231sd</item>
+      <item>vpcomeqb</item>
+      <item>vpcomeqd</item>
+      <item>vpcomeqq</item>
+      <item>vpcomequb</item>
+      <item>vpcomequd</item>
+      <item>vpcomequq</item>
+      <item>vpcomequw</item>
+      <item>vpcomeqw</item>
+      <item>vpcomfalseb</item>
+      <item>vpcomfalsed</item>
+      <item>vpcomfalseq</item>
+      <item>vpcomfalseub</item>
+      <item>vpcomfalseud</item>
+      <item>vpcomfalseuq</item>
+      <item>vpcomfalseuw</item>
+      <item>vpcomfalsew</item>
+      <item>vpcomgeb</item>
+      <item>vpcomged</item>
+      <item>vpcomgeq</item>
+      <item>vpcomgeub</item>
+      <item>vpcomgeud</item>
+      <item>vpcomgeuq</item>
+      <item>vpcomgeuw</item>
+      <item>vpcomgew</item>
+      <item>vpcomgtb</item>
+      <item>vpcomgtd</item>
+      <item>vpcomgtq</item>
+      <item>vpcomgtub</item>
+      <item>vpcomgtud</item>
+      <item>vpcomgtuq</item>
+      <item>vpcomgtuw</item>
+      <item>vpcomgtw</item>
+      <item>vpcomleb</item>
+      <item>vpcomled</item>
+      <item>vpcomleq</item>
+      <item>vpcomleub</item>
+      <item>vpcomleud</item>
+      <item>vpcomleuq</item>
+      <item>vpcomleuw</item>
+      <item>vpcomlew</item>
+      <item>vpcomltb</item>
+      <item>vpcomltd</item>
+      <item>vpcomltq</item>
+      <item>vpcomltub</item>
+      <item>vpcomltud</item>
+      <item>vpcomltuq</item>
+      <item>vpcomltuw</item>
+      <item>vpcomltw</item>
+      <item>vpcomneqb</item>
+      <item>vpcomneqd</item>
+      <item>vpcomneqq</item>
+      <item>vpcomnequb</item>
+      <item>vpcomnequd</item>
+      <item>vpcomnequq</item>
+      <item>vpcomnequw</item>
+      <item>vpcomneqw</item>
+      <item>vpcomq</item>
+      <item>vpcomtrueb</item>
+      <item>vpcomtrued</item>
+      <item>vpcomtrueq</item>
+      <item>vpcomtrueub</item>
+      <item>vpcomtrueud</item>
+      <item>vpcomtrueuq</item>
+      <item>vpcomtrueuw</item>
+      <item>vpcomtruew</item>
+      <item>vpcomub</item>
+      <item>vpcomud</item>
+      <item>vpcomuq</item>
+      <item>vpcomuw</item>
+      <item>vpcomw</item>
+      <item>vpdep</item>
+      <item>vpdistib</item>
+      <item>vperm2f128</item>
+      <item>vperm2i128</item>
+      <item>vpermd</item>
+      <item>vpermil2pd</item>
+      <item>vpermil2ps</item>
+      <item>vpermilpd</item>
+      <item>vpermilps</item>
+      <item>vpermpd</item>
+      <item>vpermps</item>
+      <item>vpermq</item>
+      <item>vpext</item>
+      <item>vpextrb</item>
+      <item>vpextrd</item>
+      <item>vpextrq</item>
+      <item>vpextrw</item>
+      <item>vpf2id</item>
+      <item>vpf2iw</item>
+      <item>vpfacc</item>
+      <item>vpfadd</item>
+      <item>vpfcmpeq</item>
+      <item>vpfcmpge</item>
+      <item>vpfcmpgt</item>
+      <item>vpfmax</item>
+      <item>vpfmin</item>
+      <item>vpfmul</item>
+      <item>vpfnacc</item>
+      <item>vpfpnacc</item>
+      <item>vpfrcp</item>
+      <item>vpfrcpit1</item>
+      <item>vpfrcpit2</item>
+      <item>vpfrsqit1</item>
+      <item>vpfrsqrt</item>
+      <item>vpfsub</item>
+      <item>vpfsubr</item>
+      <item>vpgatherdd</item>
+      <item>vscatterdpd</item>
+      <item>vscatterdps</item>
+      <item>vscatterqpd</item>
+      <item>vscatterqps</item>
+      <item>vpscatterdd</item>
+      <item>vpscatterdq</item>
+      <item>vpscatterqd</item>
+      <item>vpscatterqq</item>
+      <item>vpgatherdq</item>
+      <item>vpgatherqd</item>
+      <item>vpgatherqq</item>
+      <item>vphaddbd</item>
+      <item>vphaddbq</item>
+      <item>vphaddbw</item>
+      <item>vphaddd</item>
+      <item>vphadddq</item>
+      <item>vphaddsw</item>
+      <item>vphaddubd</item>
+      <item>vphaddubq</item>
+      <item>vphaddubw</item>
+      <item>vphaddudq</item>
+      <item>vphadduwd</item>
+      <item>vphadduwq</item>
+      <item>vphaddw</item>
+      <item>vphaddwd</item>
+      <item>vphaddwq</item>
+      <item>vphminposuw</item>
+      <item>vphsubbw</item>
+      <item>vphsubd</item>
+      <item>vphsubdq</item>
+      <item>vphsubsw</item>
+      <item>vphsubw</item>
+      <item>vphsubwd</item>
+      <item>vpi2fd</item>
+      <item>vpi2fw</item>
+      <item>vpinsrb</item>
+      <item>vpinsrd</item>
+      <item>vpinsrq</item>
+      <item>vpinsrw</item>
+      <item>vpmachriw</item>
+      <item>vpmacsdd</item>
+      <item>vpmacsdqh</item>
+      <item>vpmacsdql</item>
+      <item>vpmacssdd</item>
+      <item>vpmacssdqh</item>
+      <item>vpmacssdql</item>
+      <item>vpmacsswd</item>
+      <item>vpmacssww</item>
+      <item>vpmacswd</item>
+      <item>vpmacsww</item>
+      <item>vpmadcsswd</item>
+      <item>vpmadcswd</item>
+      <item>vpmaddubsw</item>
+      <item>vpmaddwd</item>
+      <item>vpmagw</item>
+      <item>vpmaskmovd</item>
+      <item>vpmaskmovq</item>
+      <item>vpmaxsb</item>
+      <item>vpmaxsd</item>
+      <item>vpmaxsw</item>
+      <item>vpmaxub</item>
+      <item>vpmaxud</item>
+      <item>vpmaxuw</item>
+      <item>vpminsb</item>
+      <item>vpminsd</item>
+      <item>vpminsw</item>
+      <item>vpminub</item>
+      <item>vpminud</item>
+      <item>vpminuw</item>
+      <item>vpmovmskb</item>
+      <item>vpmovsxbd</item>
+      <item>vpmovsxbq</item>
+      <item>vpmovsxbw</item>
+      <item>vpmovsxdq</item>
+      <item>vpmovsxwd</item>
+      <item>vpmovsxwq</item>
+      <item>vpmovzxbd</item>
+      <item>vpmovzxbq</item>
+      <item>vpmovzxbw</item>
+      <item>vpmovzxdq</item>
+      <item>vpmovzxwd</item>
+      <item>vpmovzxwq</item>
+      <item>vpmuldq</item>
+      <item>vpmulhrsw</item>
+      <item>vpmulhrw</item>
+      <item>vpmulhuw</item>
+      <item>vpmulhw</item>
+      <item>vpmulld</item>
+      <item>vpmullw</item>
+      <item>vpmuludq</item>
+      <item>vpmvgezb</item>
+      <item>vpmvlzb</item>
+      <item>vpmvnzb</item>
+      <item>vpmvzb</item>
+      <item>vpor</item>
+      <item>vpperm</item>
+      <item>vprefetch</item>
+      <item>vprefetchnta</item>
+      <item>vprefetcht0</item>
+      <item>vprefetcht1</item>
+      <item>vprefetcht2</item>
+      <item>vprefetchw</item>
+      <item>vprotb</item>
+      <item>vprotd</item>
+      <item>vprotq</item>
+      <item>vprotw</item>
+      <item>vpsadbw</item>
+      <item>vpshab</item>
+      <item>vpshad</item>
+      <item>vpshaq</item>
+      <item>vpshaw</item>
+      <item>vpshlb</item>
+      <item>vpshld</item>
+      <item>vpshlq</item>
+      <item>vpshlw</item>
+      <item>vpshufb</item>
+      <item>vpshufd</item>
+      <item>vpshufhw</item>
+      <item>vpshuflw</item>
+      <item>vpshufw</item>
+      <item>vpsignb</item>
+      <item>vpsignd</item>
+      <item>vpsignw</item>
+      <item>vpslld</item>
+      <item>vpslldq</item>
+      <item>vpsllq</item>
+      <item>vpsllvd</item>
+      <item>vpsllvq</item>
+      <item>vpsllw</item>
+      <item>vpsrad</item>
+      <item>vpsravd</item>
+      <item>vpsraw</item>
+      <item>vpsrld</item>
+      <item>vpsrldq</item>
+      <item>vpsrlq</item>
+      <item>vpsrlvd</item>
+      <item>vpsrlvq</item>
+      <item>vpsrlw</item>
+      <item>vpsubb</item>
+      <item>vpsubd</item>
+      <item>vpsubq</item>
+      <item>vpsubsb</item>
+      <item>vpsubsiw</item>
+      <item>vpsubsw</item>
+      <item>vpsubusb</item>
+      <item>vpsubusw</item>
+      <item>vpsubw</item>
+      <item>vpswapd</item>
+      <item>vptest</item>
+      <item>vpunpckhbw</item>
+      <item>vpunpckhdq</item>
+      <item>vpunpckhqdq</item>
+      <item>vpunpckhwd</item>
+      <item>vpunpcklbw</item>
+      <item>vpunpckldq</item>
+      <item>vpunpcklqdq</item>
+      <item>vpunpcklwd</item>
+      <item>vpxor</item>
+      <item>vrcpps</item>
+      <item>vroundpd</item>
+      <item>vroundps</item>
+      <item>vrsqrtps</item>
+      <item>vsqrtpd</item>
+      <item>vsqrtps</item>
+      <item>vstmxcsr</item>
+      <item>vtestpd</item>
+      <item>vtestps</item>
+      <item>vzeroall</item>
+      <item>vzeroupper</item>
+      <item>wait</item>
+      <item>wbinvd</item>
+      <item>wrfsbase</item>
+      <item>wrgsbase</item>
+      <item>wrmsr</item>
+      <item>wrmsrq</item>
+      <item>wrshr</item>
+      <item>xabort</item>
+      <item>xacquire</item>
+      <item>xadd</item>
+      <item>xbegin</item>
+      <item>xbts</item>
+      <item>xchg</item>
+      <item>xend</item>
+      <item>xgetbv</item>
+      <item>xlat</item>
+      <item>xlatb</item>
+      <item>xor</item>
+      <item>xorpd</item>
+      <item>xorps</item>
+      <item>xrelease</item>
+      <item>xrstor64</item>
+      <item>xrstor</item>
+      <item>xsave64</item>
+      <item>xsave</item>
+      <item>xsaveopt64</item>
+      <item>xsaveopt</item>
+      <item>xsetbv</item>
+      <item>xtest</item>
+    </list>
+
+    <list name="repeat prefixes">
+      <item>rep</item>
+      <item>repe</item>
+      <item>repz</item>
+      <item>repne</item>
+      <item>repnz</item>
+    </list>
+
+    <list name="operators">
+      <item>used</item>
+      <item>defined</item>
+
+      <item>mod</item>
+      <item>and</item>
+      <item>or</item>
+      <item>xor</item>
+      <item>not</item>
+      <item>shl</item>
+      <item>shr</item>
+      <item>bsf</item>
+      <item>bsr</item>
+      <item>rva</item>
+      <item>plt</item>
+      <!-- jump and call operand -->
+      <item>far</item>
+      <item>near</item>
+      <item>short</item>
+    </list>
+
+    <list name="Data">
+      <!-- Initialized data (1.2.2)-->
+      <item>db</item>
+      <item>dw</item>
+      <item>du</item>
+      <item>dd</item>
+      <item>dp</item>
+      <item>df</item>
+      <item>dq</item>
+      <item>dt</item>
+      <!-- Uninitialized data (1.2.2)-->
+      <item>rb</item>
+      <item>rw</item>
+      <item>rd</item>
+      <item>rp</item>
+      <item>rf</item>
+      <item>rq</item>
+      <item>rt</item>
+      <!-- binary file include (1.2.2)-->
+      <item>file</item>
+      <!-- operand size from (1.2.1)-->
+      <item>byte</item>
+      <item>word</item>
+      <item>dword</item>
+      <item>fword</item>
+      <item>pword</item>
+      <item>qword</item>
+      <item>tbyte</item>
+      <item>tword</item>
+      <item>dqword</item>
+      <item>xword</item>
+      <item>qqword</item>
+      <item>yword</item>
+      <item>dqqword</item>
+      <item>zword</item>
+      <item>ptr</item>
+    </list>
+
+    <list name="Preprocessor Keywords"> <!-- Contains keywords for macros, structures, etc... -->
+      <item>assert</item>
+      <item>append</item>
+      <item>at</item>   <!-- As in "virtual at"-->
+      <item>break</item>
+      <item>calminstruction</item>
+      <item>common</item>
+      <item>display</item>
+      <item>else</item>
+      <item>end</item> <!-- As in "end if"-->
+      <item>equ</item>
+      <item>err</item>
+      <item>fix</item>
+      <item>foward</item>
+      <item>if</item>
+      <item>iterate</item>
+      <item>irp</item>
+      <item>irps</item>
+      <item>label</item>
+      <item>local</item>
+      <item>match</item>
+      <item>macro</item>
+      <item>postpone</item>
+      <item>purge</item>
+      <item>repeat</item>
+      <item>rept</item>
+      <item>reverse</item>
+      <item>restore</item>
+      <item>restruc</item>
+      <item>struc</item>
+      <item>times</item>
+      <item>while</item>
+      <item>virtual</item>
+      <item>namespace</item>
+    </list>
+
+    <list name="Instruction-like Keywords"> <!-- Contains instruction-like keywords -->
+      <item>align</item>
+      <item>entry</item>
+      <item>extrn</item>
+      <item>format</item>
+      <item>include</item>
+      <item>invoke</item>
+      <item>data</item>
+      <item>load</item>
+      <item>from</item>
+      <item>heap</item>
+      <item>org</item>
+      <item>proc</item>
+      <item>public</item>
+      <item>section</item>
+      <item>segment</item>
+      <item>stack</item>
+      <item>store</item>
+      <item>use16</item>
+      <item>use32</item>
+      <item>use64</item>
+    </list>
+
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Instruction">
+        <DetectSpaces attribute="Normal Text"/>
+        <RegExpr attribute="Label" context="Instruction" String="(?:(?:\.|@@|&#37;&#37;)(?:\.@)?)?[A-Za-z_][A-Za-z0-9_.]*+:|\.:|@@:" firstNonSpace="1"/>
+      </context>
+
+      <context name="Instruction" attribute="Normal Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
+        <keyword attribute="Instructions" context="#pop!Operand" String="instructions"/>
+        <keyword attribute="Branch Instructions" context="#pop!Operand" String="branch instructions"/>
+        <keyword attribute="Data" context="#pop!Operand" String="Data"/>
+        <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="Preprocessor Keywords" lookAhead="1"/>
+        <keyword attribute="Instructions" context="#pop!Operand" String="Instruction-like Keywords"/>
+        <keyword attribute="Instructions" context="#stay" String="repeat prefixes"/>
+        <DetectIdentifier attribute="Unknown Instructions" context="UnknownInstruction"/>
+        <LineContinue attribute="Symbol" context="#pop!Operand"/>
+        <AnyChar attribute="Symbol" context="#stay" String="{}"/>
+      </context>
+      <context name="UnknownInstruction" attribute="Unknown Instructions" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Operand">
+        <DetectChar attribute="Symbol" context="#stay" char="."/>
+        <DetectIdentifier attribute="Unknown Instructions" context="#stay"/>
+      </context>
+
+      <context name="Operand" attribute="Normal Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Symbol" context="Dollar" char="$"/>
+        <LineContinue attribute="Symbol"/>
+        <AnyChar attribute="Symbol" context="#stay" String=",.+-=/*%~$!?&lt;>()[]{}:|&amp;#`\"/>
+        <DetectChar attribute="String" context="SQString" char="'"/>
+        <DetectChar attribute="String" context="DQString" char="&quot;"/>
+        <DetectChar attribute="Label" context="@Label" char="@"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
+        <AnyChar attribute="Number" context="Number" String="0123456789" lookAhead="1"/>
+        <keyword attribute="Registers" context="#stay" String="registers"/>
+        <keyword attribute="Data" context="#stay" String="Data"/>
+        <keyword attribute="Operators" context="#stay" String="operators"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="@Label" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Label" context="#pop" String="bfr"/>
+        <RegExpr attribute="Error" context="#pop" String="."/>
+      </context>
+
+      <context name="Dollar" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="BaseN" context="#pop!$Hex" String="0123456789"/>
+        <AnyChar attribute="Symbol" context="#pop" String="$@%"/>
+      </context>
+      <context name="$Hex" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" String="[0-9a-fA-F_]*"/>
+      </context>
+
+      <context name="Number" attribute="Number" lineEndContext="#pop">
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="x"/>
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="X"/>
+        <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>
+        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>
+        <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>
+      </context>
+      <context name="FloatSuffix" attribute="Float" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="fF"/>
+      </context>
+      <context name="BaseSuffix" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="byoqhBYOQH"/>
+      </context>
+      <context name="NumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="dD"/>
+      </context>
+      <context name="CheckNumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#pop"/>
+        <AnyChar attribute="Symbol" context="#pop" String=",.+-=/*%~!?&lt;>()[]{}:|&amp;#`"/>
+        <RegExpr attribute="Error" context="#pop" String="[\d\w]+"/>
+      </context>
+
+      <context name="SQString" attribute="String" lineEndContext="#pop">
+        <LineContinue attribute="Symbol"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="DQString" attribute="String" lineEndContext="#pop">
+        <LineContinue attribute="Symbol"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.prefix" String="end"/>
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.prefix" String="else"/>
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor.virtual" String="virtual"/>
+        <DetectIdentifier attribute="Preprocessor" context="#pop!PreprocessorOperand"/>
+      </context>
+
+      <context name="PreprocessorOperand" attribute="Preprocessor" lineEndContext="#pop">
+        <DetectChar attribute="Symbol" context="#pop" char="{"/>
+        <IncludeRules context="Operand"/>
+      </context>
+
+      <context name="Preprocessor.virtual" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!Operand">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Preprocessor" context="#pop!Operand" String="at"/>
+      </context>
+      <context name="Preprocessor.prefix" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!PreprocessorOperand">
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword attribute="Preprocessor" context="#pop!PreprocessorOperand" String="Preprocessor Keywords"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!PreprocessorOperand"/>
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces attribute="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+        <DetectIdentifier attribute="Comment"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Registers" defStyleNum="dsKeyword"/>
+      <itemData name="Instructions" defStyleNum="dsBuiltIn"/>
+      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"/>
+      <itemData name="Unknown Instructions" defStyleNum="dsNormal"/>
+      <itemData name="Operators" defStyleNum="dsOperator"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Label" defStyleNum="dsFunction"/>
+      <itemData name="Data" defStyleNum="dsDataType"/>
+      <itemData name="BaseN" defStyleNum="dsBaseN"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="Number" defStyleNum="dsDecVal"/>
+      <itemData name="Radix" defStyleNum="dsBaseN"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
+      <itemData name="Symbol" defStyleNum="dsOperator"/>
+      <itemData name="Error" defStyleNum="dsError"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0"/>
+    <comments>
+      <comment name="singleLine" start=";" position="afterwhitespace"/>
     </comments>
   </general>
 </language>
diff --git a/xml/fortran-fixed.xml b/xml/fortran-fixed.xml
new file mode 100644
--- /dev/null
+++ b/xml/fortran-fixed.xml
@@ -0,0 +1,592 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Fortran (Fixed Format)" version="7" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
+<!-- by Franchin Matteo, fnch@libero.it -->
+<!-- NOTE: Keep in sync with the "Fortran (Free Format)" highlighter! (fortran-free.xml) -->
+  <highlighting>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                              L I S T S                            *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <list name="keywords">
+      <item>allocate</item>
+      <item>break</item>
+      <item>call</item>
+      <item>common</item>
+      <item>continue</item>
+      <item>cycle</item>
+      <item>deallocate</item>
+      <item>forall</item>
+      <item>where</item>
+      <item>elsewhere</item>
+      <item>equivalence</item>
+      <item>exit</item>
+      <item>external</item>
+      <item>for</item>
+      <item>go</item>
+      <item>goto</item>
+      <item>if</item>
+      <item>implicit</item>
+      <item>include</item>
+      <item>interface</item>
+      <item>intrinsic</item>
+      <item>namelist</item>
+      <item>none</item>
+      <item>nullify</item>
+      <item>operator</item>
+      <item>assignment</item>
+      <item>pause</item>
+      <item>procedure</item>
+      <item>pure</item>
+      <item>elemental</item>
+      <item>record</item>
+      <item>recursive</item>
+      <item>result</item>
+      <item>return</item>
+      <item>stop</item>
+      <item>to</item>
+      <item>use</item>
+      <item>only</item>
+      <item>entry</item>
+      <item>while</item>
+      <!-- Others keywords:
+           case, default, select, selectcase,
+           contains, do, elseif, else, then -->
+    </list>
+    <list name="io_functions">
+      <item>access</item>
+      <item>backspace</item>
+      <item>close</item>
+      <item>inquire</item>
+      <item>open</item>
+      <item>print</item>
+      <item>read</item>
+      <item>rewind</item>
+      <item>write</item>
+      <item>format</item>
+    </list>
+    <!-- Keywords inside read(...), write(...), backspace(...),
+          rewind(...), endfile(...), close(...) -->
+    <list name="io_keywords">
+      <item>unit</item>
+      <item>end</item>
+      <item>err</item>
+      <item>fmt</item>
+      <item>iostat</item>
+      <item>status</item>
+      <item>advance</item>
+      <item>size</item>
+      <item>eor</item>
+    </list>
+    <!-- Keywords inside open(...) -->
+    <list name="open_keywords">
+      <item>unit</item>
+      <item>iostat</item>
+      <item>err</item>
+      <item>file</item>
+      <item>status</item>
+      <item>access</item>
+      <item>form</item>
+      <item>recl</item>
+      <item>blank</item>
+      <item>position</item>
+      <item>action</item>
+      <item>delim</item>
+      <item>pad</item>
+    </list>
+    <!-- Keywords inside inquire(...) -->
+    <list name="inquire_keywords">
+      <item>unit</item>
+      <item>iostat</item>
+      <item>err</item>
+      <item>file</item>
+      <item>exist</item>
+      <item>opened</item>
+      <item>number</item>
+      <item>named</item>
+      <item>name</item>
+      <item>access</item>
+      <item>sequential</item>
+      <item>direct</item>
+      <item>form</item>
+      <item>formatted</item>
+      <item>unformatted</item>
+      <item>recl</item>
+      <item>nextrec</item>
+      <item>blank</item>
+      <item>position</item>
+      <item>action</item>
+      <item>read</item>
+      <item>write</item>
+      <item>readwrite</item>
+      <item>delim</item>
+      <item>pad</item>
+    </list>
+    <list name="types">
+      <item>parameter</item>
+      <item>save</item>
+      <item>pointer</item>
+      <item>public</item>
+      <item>private</item>
+      <item>target</item>
+      <item>allocatable</item>
+      <item>optional</item>
+      <item>sequence</item>
+      <!-- Others types: double, precision -->
+    </list>
+
+<!-- There are 4 types of intrinsic procedures in Fortran 90:
+   1) Elemental procedures (elemental_procs);
+   2) Inquiry functions (inquiry_fn);
+   3) Transformational functions (transform_fn);
+   4) Non elemental subroutines (non_elem_subr);
+  Often mathematical functions have one generic form and many specific names!
+  If you use the generic form, the compiler will select the right function
+  to use depending on the type of the arguments.
+  But you can use also the specific names!
+  -->
+
+<!-- E L E M E N T A L    P R O C E D U R E S -->
+    <list name="elemental_procs">
+    <!-- Elemental functions that may convert -->
+      <item>abs</item>   <!-- Generic form: abs -->
+      <item>cabs</item>  <!-- Specific names for abs -->
+      <item>dabs</item>
+      <item>iabs</item>
+      <item>aimag</item>
+      <item>aint</item>  <!-- Generic form: aint -->
+      <item>dint</item>  <!-- Specific name for aint -->
+      <item>anint</item> <!-- Generic form: anint -->
+      <item>dnint</item> <!-- Specific name for anint -->
+      <item>ceiling</item>
+      <item>cmplx</item>
+      <item>dcmplx</item> <!-- (non standard) -->
+      <item>dimag</item>  <!-- (non standard) -->
+      <item>floor</item>
+      <item>nint</item>  <!-- Generic form: nint -->
+      <item>idnint</item><!-- Specific name for nint -->
+      <item>int</item>   <!-- Generic form: int -->
+      <item>idint</item> <!-- Specific names for int -->
+      <item>ifix</item>
+      <item>real</item>  <!-- Generic form: real -->
+      <item>float</item> <!-- Specific names for real -->
+      <item>sngl</item>
+      <item>dble</item>
+      <item>dreal</item> <!-- (non standard) -->
+      <item>aprime</item> <!-- 5 functions from fortran.xml -->
+      <item>dconjg</item> <!-- I don't know if they really belong to -->
+      <item>dfloat</item> <!-- the fortran 90/95 standard! -->
+      <item>ddmim</item>
+      <item>rand</item>
+    <!-- Elemental functions that do not convert -->
+      <item>modulo</item>
+      <item>conjg</item>
+      <item>dprod</item>  <!-- dprod(x, y) is the specific name for x*y -->
+      <item>dim</item>    <!-- Generic form: dim -->
+      <item>ddim</item>   <!-- Specific names for dim -->
+      <item>idim</item>
+      <item>max</item>    <!-- Generic form: max -->
+      <item>amax0</item>  <!-- Specific names for max -->
+      <item>amax1</item>
+      <item>max0</item>
+      <item>max1</item>
+      <item>dmax1</item>
+      <item>min</item>    <!-- Generic form: min -->
+      <item>amin0</item>  <!-- Specific names for min -->
+      <item>amin1</item>
+      <item>min0</item>
+      <item>min1</item>
+      <item>dmin1</item>
+      <item>mod</item>    <!-- Generic form: mod -->
+      <item>amod</item>   <!-- Specific names for mod -->
+      <item>dmod</item>
+      <item>sign</item>   <!-- Generic form: sign -->
+      <item>dsign</item>  <!-- Specific names for sign -->
+      <item>isign</item>
+    <!-- Elemental mathematical functions -->
+      <item>acos</item>    <!-- Generic form: acos -->
+      <item>dacos</item>   <!-- Specific names for acos -->
+      <item>asin</item>    <!-- Generic form: asin -->
+      <item>dasin</item>   <!-- Specific names for asin -->
+      <item>atan</item>    <!-- Generic form: atan -->
+      <item>datan</item>   <!-- Specific names for atan -->
+      <item>atan2</item>   <!-- Generic form: atan2 -->
+      <item>datan2</item>  <!-- Specific names for atan2 -->
+      <item>cos</item>     <!-- Generic form: cos -->
+      <item>ccos</item>    <!-- Specific names for cos -->
+      <item>dcos</item>
+      <item>cosh</item>    <!-- Generic form: cosh -->
+      <item>dcosh</item>   <!-- Specific names for cosh -->
+      <item>exp</item>     <!-- Generic form: exp -->
+      <item>cexp</item>    <!-- Specific names for exp -->
+      <item>dexp</item>
+      <item>log</item>     <!-- Generic form: log -->
+      <item>alog</item>    <!-- Specific names for log -->
+      <item>dlog</item>
+      <item>clog</item>
+      <item>log10</item>   <!-- Generic form: log10 -->
+      <item>alog10</item>  <!-- Specific names for log10 -->
+      <item>dlog10</item>
+      <item>sin</item>     <!-- Generic form: sin -->
+      <item>csin</item>    <!-- Specific names for sin -->
+      <item>dsin</item>
+      <item>sinh</item>    <!-- Generic form: sinh -->
+      <item>dsinh</item>   <!-- Specific name for sinh -->
+      <item>sqrt</item>    <!-- Generic form: sqrt -->
+      <item>csqrt</item>   <!-- Specific names for sqrt -->
+      <item>dsqrt</item>
+      <item>tan</item>     <!-- Generic form: tan -->
+      <item>dtan</item>    <!-- Generic form: dtan -->
+      <item>tanh</item>    <!-- Generic form: tanh -->
+      <item>dtanh</item>   <!-- Specific names for tanh -->
+    <!-- Elemental character and logical functions -->
+    <!-- Character-integer conversions -->
+      <item>achar</item>
+      <item>char</item>
+      <item>iachar</item>
+      <item>ichar</item>
+    <!-- Lexical comparison functions -->
+      <item>lge</item>
+      <item>lgt</item>
+      <item>lle</item>
+      <item>llt</item>
+    <!-- String-handling elemental functions -->
+      <item>adjustl</item>
+      <item>adjustr</item>
+      <item>index</item>
+      <item>len_trim</item>
+      <item>scan</item>
+      <item>verify</item>
+    <!-- Logical conversion -->
+      <item>logical</item>
+    <!-- Elemental functions to manipulate reals -->
+      <item>exponent</item>
+      <item>fraction</item>
+      <item>nearest</item>
+      <item>rrspacing</item>
+      <item>scale</item>
+      <item>set_exponent</item>
+      <item>spacing</item>
+    <!-- Bit manipulation elemental functions -->
+      <item>btest</item>
+      <item>iand</item>
+      <item>ibclr</item>
+      <item>ibits</item>
+      <item>ibset</item>
+      <item>ieor</item>
+      <item>ior</item>
+      <item>ishft</item>
+      <item>ishftc</item>
+      <item>not</item>
+    <!-- Bit manipulation elemental subroutine -->
+      <item>mvbits</item>
+    <!-- Merge elemental function -->
+      <item>merge</item>
+    </list>
+
+<!-- I N Q U I R Y    F U N C T I O N S -->
+    <list name="inquiry_fn">
+    <!-- Inquiry functions for any type -->
+      <item>associated</item>
+      <item>present</item>
+      <item>kind</item>
+    <!-- String-handling inquiry function -->
+      <item>len</item>
+    <!-- Numeric inquiry functions -->
+      <item>digits</item>
+      <item>epsilon</item>
+      <item>huge</item>
+      <item>maxexponent</item>
+      <item>minexponent</item>
+      <item>precision</item>
+      <item>radix</item>
+      <item>range</item>
+      <item>tiny</item>
+    <!-- Bit inquiry function -->
+      <item>bit_size</item>
+    <!-- Array inquiry functions -->
+      <item>allocated</item>
+      <item>lbound</item>
+      <item>ubound</item>
+      <item>shape</item>
+      <item>size</item>
+    </list>
+
+<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->
+    <list name="transform_fn">
+    <!-- String-handling transformational functions -->
+      <item>repeat</item>
+      <item>trim</item>
+    <!-- Transformational functions for kind values -->
+      <item>selected_int_kind</item>
+      <item>selected_real_kind</item>
+    <!-- Transfer function -->
+      <item>transfer</item>
+    <!-- Vector and matrix multiplication functions -->
+      <item>dot_product</item>
+      <item>matmul</item>
+    <!-- Transformational functions that reduce arrays -->
+      <item>all</item>
+      <item>any</item>
+      <item>count</item>
+      <item>maxval</item>
+      <item>minval</item>
+      <item>product</item>
+      <item>sum</item>
+    <!-- Packing and unpacking arrays -->
+      <item>pack</item>
+      <item>unpack</item>
+    <!-- Transformational function for reshaping an array -->
+      <item>reshape</item>
+    <!-- Transformational function for replication -->
+      <item>spread</item>
+    <!-- Array shifting functions -->
+      <item>cshift</item>
+      <item>eoshift</item>
+    <!-- Matrix transpose -->
+      <item>transpose</item>
+    <!-- Transformational functions for geometric location -->
+      <item>maxloc</item>
+      <item>minloc</item>
+    </list>
+
+<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->
+    <list name="non_elem_subr">
+    <!-- Real time clock -->
+      <item>date_and_time</item>
+      <item>system_clock</item>
+    <!-- Random numbers -->
+      <item>random_number</item>
+      <item>random_seed</item>
+    </list>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                           C O N T E X T S                         *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >
+        <IncludeRules context="find_preprocessor" />
+        <IncludeRules context="find_comments" />
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_decls" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_io_stmnts" />
+        <IncludeRules context="find_op_and_log" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_continue" />
+        <IncludeRules context="find_symbols" />
+        <IncludeRules context="find_begin_stmnts" />
+        <IncludeRules context="find_end_stmnts" />
+        <IncludeRules context="find_mid_stmnts" />
+      </context>
+<!--************************END OF THE MAIN CONTEXT*************************-->
+
+
+<!-- IMPORTANT: If you modify something, do it also in "fortran-free.xml"! -->
+
+<!-- This context highlights preprocessor lines -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">
+        <DetectChar attribute="Preprocessor" context="preprocessor" char="#" column="0"/>
+        <StringDetect attribute="Preprocessor" context="preprocessor" String="cDEC$" column="0"/>
+        <StringDetect attribute="Preprocessor" context="preprocessor" String="CDEC$" column="0"/>
+      </context>
+      <context attribute="Preprocessor" lineEndContext="#pop" name="preprocessor" />
+
+<!-- This context highlights operators and the logical values .true. .false. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">
+        <StringDetect attribute="Logical" context="#stay" String=".true." insensitive="true"/>
+        <StringDetect attribute="Logical" context="#stay" String=".false." insensitive="true"/>
+        <RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>
+        <Detect2Chars attribute="Operator" context="#stay" char="=" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="/" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="&gt;" char1="="/>
+        <AnyChar attribute="Operator" context="#stay" String="&lt;&gt;"/>
+      </context>
+
+<!-- This context highlights comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
+        <AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>
+        <DetectChar attribute="Comment" context="comment" char="!"/>
+        <RegExpr attribute="Comment" context="comment" String="." column="72" />
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
+
+<!-- This context highlights symbols -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">
+        <Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>
+        <Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>
+        <AnyChar attribute="Keyword" context="#stay" String="&amp;+-*/=?[]^{|}~"/>
+        <AnyChar attribute="Symbol" context="#stay" String="(),"/>
+      </context>
+
+<!-- This context highlights the continuation character -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_continue">
+        <RegExpr attribute="Continuation character" context="#stay" String="^     [^0-9\s]" column="0"/>
+      </context>
+
+<!-- This context highlights items inside the parentesis of a function -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+      </context>
+
+<!-- The following two contexts match input/output statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>
+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>
+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>
+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>
+      </context>
+<!-- This context matches parenthesis for the read, write, ... statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
+        <DetectChar attribute="IO Function" context="#stay" char="*"/>
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers" />
+        <IncludeRules context="find_symbols" />
+      </context>
+<!-- This context highlights the text inside the parenthesis of fortran statement -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="true"/>
+        <DetectChar attribute="IO Function" context="#stay" char=":"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_symbols" />
+      </context>
+
+<!-- The following context matches the begin of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" beginRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:then|do|select\s+case)\b" insensitive="true" beginRegion="Block"/>
+      </context>
+<!-- The following context matches the end of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" endRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:do|if)\b" insensitive="true" endRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:select|where|forall|interface)\b" insensitive="true"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>
+        <WordDetect attribute="Keyword" context="#stay" String="end" insensitive="true" endRegion="Routine"/>
+      </context>
+<!-- The following context matches the mid of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">
+        <WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="Block" beginRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bcase(?:\s+default)?\b" insensitive="true" endRegion="Block" beginRegion="Block"/>
+        <WordDetect attribute="Keyword" context="#stay" String="contains" insensitive="true" endRegion="Routine" beginRegion="Routine"/>
+      </context>
+
+<!-- The following two contexts match declarations -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
+        <RegExpr attribute="Data Type" context="#stay" String="\b(?:integer|real|complex)[\*]\d{1,2}" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="true"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <WordDetect attribute="Data Type" context="#stay" String="data" firstNonSpace="true" insensitive="true"/>
+        <!--<RegExpr attribute="Data Type" context="find_paren" String="real\s*[(]" firstNonSpace="true" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="real(?![\w\*])" firstNonSpace="true" insensitive="true"/>-->
+        <RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:type|integer|real|complex|character|logical|intent|dimension)\s*[(]" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\b(?:type|integer|real|complex|character|logical|double\s*precision|intent|dimension)\b" insensitive="true"/>
+        <Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>
+      </context>
+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
+        <DetectChar attribute="Data Type" context="find_paren" char="("/>
+        <DetectChar attribute="Data Type" context="#pop" char=")"/>
+      </context>
+
+<!-- The following context matches intrinsic procedures -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      <!-- INTRINSIC PROCEDURES -->
+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>
+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>
+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>
+      </context>
+
+<!-- The following context matches integer and real numbers -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
+        <!-- Floating-point numbers with optional kind -->
+        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="true"/>
+        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+(?:[_](?:[0-9]+|[a-z][\w_]*))?" insensitive="true"/>
+        <!-- Integers with optional kind specifier -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+(?:[_](?:[0-9]+|[a-zA-Z][\w_]*))?"/>
+        <!-- Integers in binary, octal and hexadecimal notations -->
+        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx](?:[&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="true"/>
+      </context>
+
+<!-- The following four contexts implement the complex string multi-line declarations -->
+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->
+      <context attribute="String" lineEndContext="#stay" name="find_strings">
+        <DetectChar attribute="String" context="string_1" char="&apos;"/>
+        <DetectChar attribute="String" context="string_2" char="&quot;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>
+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>
+        <AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>
+        <DetectChar attribute="Comment" context="comment" char="!" firstNonSpace="true"/>
+      </context>
+    </contexts>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Decimal" defStyleNum="dsDecVal"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Symbol" defStyleNum="dsNormal"/>
+      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Operator" defStyleNum="dsOperator" bold="1" italic="0"/>
+      <itemData name="Logical" defStyleNum="dsConstant" bold="1" italic="0"/>
+      <itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>
+      <itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
+      <itemData name="Continuation character" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
+      <itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>
+      <itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>
+      <itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="c"/>
+    </comments>
+    <keywords casesensitive="0"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/fortran-free.xml b/xml/fortran-free.xml
new file mode 100644
--- /dev/null
+++ b/xml/fortran-free.xml
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Fortran (Free Format)" version="3" kateversion="5.53" section="Sources" extensions="*.f90;*.F90;*.f95;*.F95;*.f03;*.F03;*.f08;*.F08;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it), Janus Weil" license="MIT" priority="10">
+<!-- Original author: Franchin Matteo (fnch@libero.it).
+     Adaptation to free & fixed format: Janus Weil.
+-->
+<!-- NOTE: Keep in sync with the "Fortran (Fixed Format)" highlighter! (fortran-fixed.xml) -->
+  <highlighting>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                              L I S T S                            *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <list name="keywords">
+      <include>keywords##Fortran (Fixed Format)</include>
+      <item>associate</item>
+      <item>import</item>
+      <item>impure</item>
+    </list>
+    <list name="io_functions">
+      <include>io_functions##Fortran (Fixed Format)</include>
+    </list>
+    <!-- Keywords inside read(...), write(...), backspace(...),
+          rewind(...), endfile(...), close(...) -->
+    <list name="io_keywords">
+      <include>io_keywords##Fortran (Fixed Format)</include>
+    </list>
+    <!-- Keywords inside open(...) -->
+    <list name="open_keywords">
+      <include>open_keywords##Fortran (Fixed Format)</include>
+    </list>
+    <!-- Keywords inside inquire(...) -->
+    <list name="inquire_keywords">
+      <include>inquire_keywords##Fortran (Fixed Format)</include>
+    </list>
+    <list name="types">
+      <include>types##Fortran (Fixed Format)</include>
+      <item>abstract</item>
+      <item>asynchronous</item>
+      <item>bind</item>
+      <item>contiguous</item>
+      <item>deferred</item>
+      <item>enum</item>
+      <item>enumerator</item>
+      <item>final</item>
+      <item>generic</item>
+      <item>nopass</item>
+      <item>non_overridable</item>
+      <item>protected</item>
+      <item>value</item>
+      <item>volatile</item>
+    </list>
+
+<!-- There are 4 types of intrinsic procedures in Fortran 90:
+   1) Elemental procedures (elemental_procs);
+   2) Inquiry functions (inquiry_fn);
+   3) Transformational functions (transform_fn);
+   4) Non elemental subroutines (non_elem_subr);
+  Often mathematical functions have one generic form and many specific names!
+  If you use the generic form, the compiler will select the right function
+  to use depending on the type of the arguments.
+  But you can use also the specific names!
+  -->
+
+<!-- E L E M E N T A L    P R O C E D U R E S -->
+    <list name="elemental_procs">
+      <include>elemental_procs##Fortran (Fixed Format)</include>
+    <!-- Elemental mathematical functions -->
+      <item>acosh</item>
+      <item>asinh</item>
+      <item>atanh</item>
+      <item>bessel_j0</item>
+      <item>bessel_j1</item>
+      <item>bessel_jn</item>
+      <item>bessel_y0</item>
+      <item>bessel_y1</item>
+      <item>bessel_yn</item>
+      <item>erf</item>
+      <item>erfc</item>
+      <item>erfc_scaled</item>
+      <item>gamma</item>
+      <item>log_gamma</item>
+      <item>hypot</item>
+    </list>
+
+<!-- I N Q U I R Y    F U N C T I O N S -->
+    <list name="inquiry_fn">
+      <include>inquiry_fn##Fortran (Fixed Format)</include>
+    <!-- Inquiry functions for any type -->
+      <item>extends_type_of</item>
+      <item>same_type_as</item>
+      <item>storage_size</item>
+    <!-- Coarray inquiry functions -->
+      <item>lcobound</item>
+      <item>ucobound</item>
+      <item>image_index</item>
+    </list>
+
+<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->
+    <list name="transform_fn">
+      <include>transform_fn##Fortran (Fixed Format)</include>
+    <!-- Transformational functions for kind values -->
+      <item>selected_char_kind</item>
+    <!-- Transformational functions that reduce arrays -->
+      <item>parity</item>
+      <item>iall</item>
+      <item>iany</item>
+      <item>iparity</item>
+    <!-- Coarray transformational functions -->
+      <item>num_images</item>
+      <item>this_image</item>
+    </list>
+
+<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->
+    <list name="non_elem_subr">
+      <include>non_elem_subr##Fortran (Fixed Format)</include>
+    <!-- Real time clock -->
+      <item>cpu_time</item>
+    <!-- System commands -->
+      <item>execute_command_line</item>
+      <item>get_environment_variable</item>
+    </list>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *                           C O N T E X T S                         *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="default" >
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_io_stmnts" />
+        <IncludeRules context="find_op_and_log##Fortran (Fixed Format)" />
+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />
+        <IncludeRules context="find_preprocessor##Fortran (Fixed Format)" />
+        <IncludeRules context="find_comments" />
+        <IncludeRules context="find_symbols##Fortran (Fixed Format)" />
+        <IncludeRules context="find_begin_stmnts" />
+        <IncludeRules context="find_mid_stmnts" />
+        <IncludeRules context="find_end_stmnts" />
+        <IncludeRules context="find_decls" />
+        <IncludeRules context="find_intrinsics" />
+      </context>
+<!--************************END OF THE MAIN CONTEXT*************************-->
+
+
+<!-- IMPORTANT: If you modify something, do it also in "fortran-fixed.xml"! -->
+
+<!-- This context highlights comments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
+        <DetectChar attribute="Comment" context="comment" char="!"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
+
+<!-- This context highlights items inside the parentesis of a function -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
+      <!-- inside_func_paren##Fortran (Fixed Format) -->
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />
+      </context>
+
+<!-- The following two contexts match input/output statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:flush|wait)\s*[(]" insensitive="true"/>
+      <!-- find_io_stmnts##Fortran (Fixed Format) -->
+        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(?:read|write|backspace|rewind|end\s*file|close|open|inquire)\s*[(]" insensitive="true"/>
+        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>
+        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>
+        <keyword attribute="IO Function" context="#stay" String="io_functions"/>
+      </context>
+<!-- This context matches parenthesis for the read, write, ... statements -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
+      <!-- find_io_paren##Fortran (Fixed Format) -->
+        <DetectChar attribute="IO Function" context="#stay" char="*"/>
+        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>
+        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="find_intrinsics" />
+        <IncludeRules context="find_numbers##Fortran (Fixed Format)" />
+        <IncludeRules context="find_symbols##Fortran (Fixed Format)" />
+      </context>
+<!-- This context highlights the text inside the parenthesis of fortran statement -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
+        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>
+        <DetectChar attribute="IO Function" context="#pop" char=")"/>
+        <IncludeRules context="find_strings" />
+        <IncludeRules context="format_stmnt##Fortran (Fixed Format)" />
+      </context>
+
+<!-- FIXME: beginRegion/endRegion don't work well with IncludeRules. When this is corrected, use IncludeRules instead of replicating rules. -->
+<!-- The following context matches the begin of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
+        <WordDetect attribute="Keyword" context="#stay" String="submodule" insensitive="true" beginRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:do\s*[,\s]\s*concurrent|select\s+type|block|critical)\b" insensitive="true" beginRegion="Block"/>
+      <!-- Here IncludeRules: find_begin_stmnts##Fortran (Fixed Format) -->
+        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" beginRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:then|do|select\s+case)\b" insensitive="true" beginRegion="Block"/>
+      </context>
+<!-- The following context matches the end of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:procedure|submodule)\b" insensitive="true" endRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:block|critical)\b" insensitive="true" endRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:associate)\b" insensitive="true"/>
+        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*(?:type|enum)\b" insensitive="true"/>
+      <!-- Here IncludeRules: find_end_stmnts##Fortran (Fixed Format) -->
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:subroutine|function|block\s*data|program|module)\b" insensitive="true" endRegion="Routine"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:do|if)\b" insensitive="true" endRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(?:select|where|forall|interface)\b" insensitive="true"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>
+        <WordDetect attribute="Keyword" context="#stay" String="end" insensitive="true" endRegion="Routine"/>
+      </context>
+<!-- The following context matches the mid of program units -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">
+        <RegExpr attribute="Keyword" context="#stay" String="\b(?:type\s+is|class\s+(?:is|default))\b" insensitive="true" endRegion="Block" beginRegion="Block"/>
+      <!-- Here IncludeRules: find_mid_stmnts##Fortran (Fixed Format) -->
+        <WordDetect attribute="Keyword" context="#stay" String="else" insensitive="true" endRegion="Block" beginRegion="Block"/>
+        <RegExpr attribute="Keyword" context="#stay" String="\bcase(?:\s+default)?\b" insensitive="true" endRegion="Block" beginRegion="Block"/>
+        <WordDetect attribute="Keyword" context="#stay" String="contains" insensitive="true" endRegion="Routine" beginRegion="Routine"/>
+      </context>
+
+<!-- The following two contexts match declarations -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:class|extends|procedure|pass|codimension)\s*[(]" insensitive="true"/>
+        <WordDetect attribute="Data Type" context="#stay" String="codimension" insensitive="true"/>
+        <WordDetect attribute="Data Type" context="#stay" String="procedure" insensitive="true"/>
+        <WordDetect attribute="Data Type" context="#stay" String="pass" insensitive="true"/>
+      <!-- find_decls##Fortran (Fixed Format) -->
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <!--<RegExpr attribute="Data Type" context="find_paren" String="real\s*[(]" firstNonSpace="true" insensitive="true"/>-->
+        <RegExpr attribute="Data Type" context="find_paren" String="\b(?:type|integer|real|complex|character|logical|intent|dimension)\s*[(]" insensitive="true"/>
+        <IncludeRules context="find_decls##Fortran (Fixed Format)"/>
+      </context>
+<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
+      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
+      <!-- find_paren##Fortran (Fixed Format) -->
+        <DetectChar attribute="Data Type" context="find_paren" char="("/>
+        <DetectChar attribute="Data Type" context="find_paren" char="["/>
+        <DetectChar attribute="Data Type" context="#pop" char=")"/>
+        <DetectChar attribute="Data Type" context="#pop" char="]"/>
+      </context>
+
+<!-- The following context matches intrinsic procedures -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
+      <!-- find_intrinsics##Fortran (Fixed Format) -->
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      <!-- INTRINSIC PROCEDURES -->
+        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>
+        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>
+        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
+        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>
+      </context>
+
+<!-- The following four contexts implement the complex string multi-line declarations -->
+<!-- NOTE: Contexts replicated from "Fortran (Fixed Format)" -->
+      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->
+      <context attribute="String" lineEndContext="#stay" name="find_strings">
+        <DetectChar attribute="String" context="string_1" char="&apos;"/>
+        <DetectChar attribute="String" context="string_2" char="&quot;"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>
+        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
+        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
+        <DetectSpaces />
+        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>
+        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>
+        <DetectChar attribute="Comment" context="comment" char="!" firstNonSpace="true"/>
+      </context>
+    </contexts>
+
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->
+<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>
+      <itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
+      <itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>
+      <itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>
+      <itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="!"/>
+    </comments>
+    <keywords casesensitive="0"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/fortran.xml b/xml/fortran.xml
deleted file mode 100644
--- a/xml/fortran.xml
+++ /dev/null
@@ -1,584 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Fortran" version="3" kateversion="5.0" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.f90;*.F90;*.fpp;*.FPP;*.f95;*.F95;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="LGPL" priority="9">
-<!-- by Franchin Matteo, fnch@libero.it -->
-  <highlighting>
-
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-<!-- *                              L I S T S                            *  -->
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-    <list name="keywords">
-      <item>allocate</item>
-      <item>break</item>
-      <item>call</item>
-      <item>case</item>
-      <item>common</item>
-      <!--item> contains </item-->
-      <item>continue</item>
-      <item>cycle</item>
-      <item>deallocate</item>
-      <item>default</item>
-      <!--item> do </item-->
-      <item>forall</item>
-      <item>where</item>
-      <item>elsewhere</item>
-      <!--item> elseif </item-->
-      <!--item> else </item-->
-      <item>equivalence</item>
-      <item>exit</item>
-      <item>external</item>
-      <item>for</item>
-      <item>go</item>
-      <item>goto</item>
-      <item>if</item>
-      <item>implicit</item>
-      <item>include</item>
-      <item>interface</item>
-      <item>intrinsic</item>
-      <item>namelist</item>
-      <item>none</item>
-      <item>nullify</item>
-      <item>operator</item>
-      <item>assignment</item>
-      <item>pause</item>
-      <item>procedure</item>
-      <item>pure</item>
-      <item>elemental</item>
-      <item>record</item>
-      <item>recursive</item>
-      <item>result</item>
-      <item>return</item>
-      <item>select</item>
-      <item>selectcase</item>
-      <item>stop</item>
-      <!--item> then </item-->
-      <item>to</item>
-      <item>use</item>
-      <item>only</item>
-      <item>entry</item>
-      <item>while</item>
-    </list>
-    <list name="io_functions">
-      <item>access</item>
-      <item>backspace</item>
-      <item>close</item>
-      <item>inquire</item>
-      <item>open</item>
-      <item>print</item>
-      <item>read</item>
-      <item>rewind</item>
-      <item>write</item>
-      <item>format</item>
-    </list>
-    <!-- Keywords inside read(...), write(...), backspace(...),
-          rewind(...), endfile(...), close(...) -->
-    <list name="io_keywords">
-      <item>unit</item>
-      <item>end</item>
-      <item>err</item>
-      <item>fmt</item>
-      <item>iostat</item>
-      <item>status</item>
-      <item>advance</item>
-      <item>size</item>
-      <item>eor</item>
-    </list>
-    <!-- Keywords inside open(...) -->
-    <list name="open_keywords">
-      <item>unit</item>
-      <item>iostat</item>
-      <item>err</item>
-      <item>file</item>
-      <item>status</item>
-      <item>access</item>
-      <item>form</item>
-      <item>recl</item>
-      <item>blank</item>
-      <item>position</item>
-      <item>action</item>
-      <item>delim</item>
-      <item>pad</item>
-    </list>
-    <!-- Keywords inside inquire(...) -->
-    <list name="inquire_keywords">
-      <item>unit</item>
-      <item>iostat</item>
-      <item>err</item>
-      <item>file</item>
-      <item>exist</item>
-      <item>opened</item>
-      <item>number</item>
-      <item>named</item>
-      <item>name</item>
-      <item>access</item>
-      <item>sequential</item>
-      <item>direct</item>
-      <item>form</item>
-      <item>formatted</item>
-      <item>unformatted</item>
-      <item>recl</item>
-      <item>nextrec</item>
-      <item>blank</item>
-      <item>position</item>
-      <item>action</item>
-      <item>read</item>
-      <item>write</item>
-      <item>readwrite</item>
-      <item>delim</item>
-      <item>pad</item>
-    </list>
-    <list name="types">
-      <item>double</item>
-      <item>precision</item>
-      <item>parameter</item>
-      <item>save</item>
-      <item>pointer</item>
-      <item>public</item>
-      <item>private</item>
-      <item>target</item>
-      <item>allocatable</item>
-      <item>optional</item>
-      <item>sequence</item>
-    </list>
-
-<!-- There are 4 types of intrinsic procedures in Fortran 90:
-   1) Elemental procedures (elemental_procs);
-   2) Inquiry functions (inquiry_fn);
-   3) Transformational functions (transform_fn);
-   4) Non elemental subroutines (non_elem_subr);
-  Often mathematical functions have one generic form and many specific names!
-  If you use the generic form, the compiler will select the right function
-  to use depending on the type of the arguments.
-  But you can use also the specific names!
-  -->
-
-<!-- E L E M E N T A L    P R O C E D U R E S -->
-    <list name="elemental_procs">
-    <!-- Elemental functions that may convert -->
-      <item>abs</item>   <!-- Generic form: abs -->
-      <item>cabs</item>  <!-- Specific names for abs -->
-      <item>dabs</item>
-      <item>iabs</item>
-      <item>aimag</item>
-      <item>aint</item>  <!-- Generic form: aint -->
-      <item>dint</item>  <!-- Specific name for aint -->
-      <item>anint</item> <!-- Generic form: anint -->
-      <item>dnint</item> <!-- Specific name for anint -->
-      <item>ceiling</item>
-      <item>cmplx</item>
-      <item>dcmplx</item> <!-- (non standard) -->
-      <item>dimag</item>  <!-- (non standard) -->
-      <item>floor</item>
-      <item>nint</item>  <!-- Generic form: nint -->
-      <item>idnint</item><!-- Specific name for nint -->
-      <item>int</item>   <!-- Generic form: int -->
-      <item>idint</item> <!-- Specific names for int -->
-      <item>ifix</item>
-      <item>real</item>  <!-- Generic form: real -->
-      <item>float</item> <!-- Specific names for real -->
-      <item>sngl</item>
-      <item>dble</item>
-      <item>dreal</item> <!-- (non standard) -->
-      <item>aprime</item> <!-- 5 functions from fortran.xml -->
-      <item>dconjg</item> <!-- I don't know if they really belong to -->
-      <item>dfloat</item> <!-- the fortran 90/95 standard! -->
-      <item>ddmim</item>
-      <item>rand</item>
-    <!-- Elemental functions that do not convert -->
-      <item>modulo</item>
-      <item>conjg</item>
-      <item>dprod</item>  <!-- dprod(x, y) is the specific name for x*y -->
-      <item>dim</item>    <!-- Generic form: dim -->
-      <item>ddim</item>   <!-- Specific names for dim -->
-      <item>idim</item>
-      <item>max</item>    <!-- Generic form: max -->
-      <item>amax0</item>  <!-- Specific names for max -->
-      <item>amax1</item>
-      <item>max0</item>
-      <item>max1</item>
-      <item>dmax1</item>
-      <item>min</item>    <!-- Generic form: min -->
-      <item>amin0</item>  <!-- Specific names for min -->
-      <item>amin1</item>
-      <item>min0</item>
-      <item>min1</item>
-      <item>dmin1</item>
-      <item>mod</item>    <!-- Generic form: mod -->
-      <item>amod</item>   <!-- Specific names for mod -->
-      <item>dmod</item>
-      <item>sign</item>   <!-- Generic form: sign -->
-      <item>dsign</item>  <!-- Specific names for sign -->
-      <item>isign</item>
-    <!-- Elemental mathematical functions -->
-      <item>acos</item>    <!-- Generic form: acos -->
-      <item>dacos</item>   <!-- Specific names for acos -->
-      <item>asin</item>    <!-- Generic form: asin -->
-      <item>dasin</item>   <!-- Specific names for asin -->
-      <item>atan</item>    <!-- Generic form: atan -->
-      <item>datan</item>   <!-- Specific names for atan -->
-      <item>atan2</item>   <!-- Generic form: atan2 -->
-      <item>datan2</item>  <!-- Specific names for atan2 -->
-      <item>cos</item>     <!-- Generic form: cos -->
-      <item>ccos</item>    <!-- Specific names for cos -->
-      <item>dcos</item>
-      <item>cosh</item>    <!-- Generic form: cosh -->
-      <item>dcosh</item>   <!-- Specific names for cosh -->
-      <item>exp</item>     <!-- Generic form: exp -->
-      <item>cexp</item>    <!-- Specific names for exp -->
-      <item>dexp</item>
-      <item>log</item>     <!-- Generic form: log -->
-      <item>alog</item>    <!-- Specific names for log -->
-      <item>dlog</item>
-      <item>clog</item>
-      <item>log10</item>   <!-- Generic form: log10 -->
-      <item>alog10</item>  <!-- Specific names for log10 -->
-      <item>dlog10</item>
-      <item>sin</item>     <!-- Generic form: sin -->
-      <item>csin</item>    <!-- Specific names for sin -->
-      <item>dsin</item>
-      <item>sinh</item>    <!-- Generic form: sinh -->
-      <item>dsinh</item>   <!-- Specific name for sinh -->
-      <item>sqrt</item>    <!-- Generic form: sqrt -->
-      <item>csqrt</item>   <!-- Specific names for sqrt -->
-      <item>dsqrt</item>
-      <item>tan</item>     <!-- Generic form: tan -->
-      <item>dtan</item>    <!-- Generic form: dtan -->
-      <item>tanh</item>    <!-- Generic form: tanh -->
-      <item>dtanh</item>   <!-- Specific names for tanh -->
-    <!-- Elemental character and logical functions -->
-    <!-- Character-integer conversions -->
-      <item>achar</item>
-      <item>char</item>
-      <item>iachar</item>
-      <item>ichar</item>
-    <!-- Lexical comparison functions -->
-      <item>lge</item>
-      <item>lgt</item>
-      <item>lle</item>
-      <item>llt</item>
-    <!-- String-handling elemental functions -->
-      <item>adjustl</item>
-      <item>adjustr</item>
-      <item>index</item>
-      <item>len_trim</item>
-      <item>scan</item>
-      <item>verify</item>
-    <!-- Logical conversion -->
-      <item>logical</item>
-    <!-- Elemental functions to manipulate reals -->
-      <item>exponent</item>
-      <item>fraction</item>
-      <item>nearest</item>
-      <item>rrspacing</item>
-      <item>scale</item>
-      <item>set_exponent</item>
-      <item>spacing</item>
-    <!-- Bit manipulation elemental functions -->
-      <item>btest</item>
-      <item>iand</item>
-      <item>ibclr</item>
-      <item>ibits</item>
-      <item>ibset</item>
-      <item>ieor</item>
-      <item>ior</item>
-      <item>ishft</item>
-      <item>ishftc</item>
-      <item>not</item>
-    <!-- Bit manipulation elemental subroutine -->
-      <item>mvbits</item>
-    <!-- Merge elemental function -->
-      <item>merge</item>
-    </list>
-
-<!-- I N Q U I R Y    F U N C T I O N S -->
-    <list name="inquiry_fn">
-    <!-- Inquiry functions for any type -->
-      <item>associated</item>
-      <item>present</item>
-      <item>kind</item>
-    <!-- String-handling inquiry function -->
-      <item>len</item>
-    <!-- Numeric inquiry functions -->
-      <item>digits</item>
-      <item>epsilon</item>
-      <item>huge</item>
-      <item>maxexponent</item>
-      <item>minexponent</item>
-      <item>precision</item>
-      <item>radix</item>
-      <item>range</item>
-      <item>tiny</item>
-    <!-- Bit inquiry function -->
-      <item>bit_size</item>
-    <!-- Array inquiry functions -->
-      <item>allocated</item>
-      <item>lbound</item>
-      <item>ubound</item>
-      <item>shape</item>
-      <item>size</item>
-    </list>
-
-<!-- T R A N S F O R M A T I O N A L    F U N C T I O N S -->
-    <list name="transform_fn">
-    <!-- String-handling transformational functions -->
-      <item>repeat</item>
-      <item>trim</item>
-    <!-- Transformational functions for kind values -->
-      <item>selected_int_kind</item>
-      <item>selected_real_kind</item>
-    <!-- Transfer function -->
-      <item>transfer</item>
-    <!-- Vector and matrix multiplication functions -->
-      <item>dot_product</item>
-      <item>matmul</item>
-    <!-- Transformational functions that reduce arrays -->
-      <item>all</item>
-      <item>any</item>
-      <item>count</item>
-      <item>maxval</item>
-      <item>minval</item>
-      <item>product</item>
-      <item>sum</item>
-    <!-- Packing and unpacking arrays -->
-      <item>pack</item>
-      <item>unpack</item>
-    <!-- Transformational function for reshaping an array -->
-      <item>reshape</item>
-    <!-- Transformational function for replication -->
-      <item>spread</item>
-    <!-- Array shifting functions -->
-      <item>cshift</item>
-      <item>eoshift</item>
-    <!-- Matrix transpose -->
-      <item>transpose</item>
-    <!-- Transformational functions for geometric location -->
-      <item>maxloc</item>
-      <item>minloc</item>
-    </list>
-
-<!-- N O N    E L E M E N T A L    S U B R O U T I N E S -->
-    <list name="non_elem_subr">
-    <!-- Real time clock -->
-      <item>date_and_time</item>
-      <item>system_clock</item>
-    <!-- Random numbers -->
-      <item>random_number</item>
-      <item>random_seed</item>
-    </list>
-
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-<!-- *                           C O N T E X T S                         *  -->
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-    <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="default" >
-        <IncludeRules context="find_strings" />
-        <IncludeRules context="find_decls" />
-        <IncludeRules context="find_intrinsics" />
-        <IncludeRules context="find_io_stmnts" />
-        <IncludeRules context="find_op_and_log" />
-        <IncludeRules context="find_numbers" />
-        <IncludeRules context="find_preprocessor" />
-        <IncludeRules context="find_comments" />
-        <IncludeRules context="find_symbols" />
-        <IncludeRules context="find_begin_stmnts" />
-        <IncludeRules context="find_end_stmnts" />
-        <IncludeRules context="find_mid_stmnts" />
-      </context>
-<!--************************END OF THE MAIN CONTEXT*************************-->
-
-
-
-<!-- This context highlights preprocessor lines -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_preprocessor">
-        <RegExpr attribute="Preprocessor" context="#stay" String="(#|cDEC\$|CDEC\$).*$" column="0"/>
-      </context>
-
-<!-- This context highlights operators and the logical values .true. .false. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_op_and_log">
-        <RegExpr attribute="Logical" context="#stay" String="\.(true|false)\." insensitive="true"/>
-        <RegExpr attribute="Operator" context="#stay" String="\.[A-Za-z]+\."/>
-        <RegExpr attribute="Operator" context="#stay" String="(==|/=|&lt;|&lt;=|&gt;|&gt;=)"/>
-      </context>
-
-<!-- This context highlights comments -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_comments">
-        <AnyChar attribute="Comment" context="comment" String="cC*" column="0"/>
-        <DetectChar attribute="Comment" context="comment" char="!"/>
-      </context>
-
-      <context attribute="Comment" lineEndContext="#pop" name="comment">
-        <IncludeRules context="##Alerts"/>
-      </context>
-
-<!-- This context highlights symbols -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_symbols">
-        <Detect2Chars attribute="Keyword" context="#stay" char="*" char1="*"/>
-        <Detect2Chars attribute="Keyword" context="#stay" char="(" char1="/"/>
-        <Detect2Chars attribute="Keyword" context="#stay" char="/" char1=")"/>
-        <AnyChar attribute="Keyword" context="#stay" String="&amp;+-*/=?[]^{|}~"/>
-        <AnyChar attribute="Symbol" context="#stay" String="(),"/>
-      </context>
-
-<!-- This context highlights items inside the parentesis of a function -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="inside_func_paren">
-        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
-        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
-        <IncludeRules context="find_strings" />
-        <IncludeRules context="find_intrinsics" />
-        <IncludeRules context="find_numbers" />
-      </context>
-
-<!-- The following two contexts match input/output statements -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_stmnts">
-        <RegExpr attribute="IO Function" context="find_io_paren" String="\b(read|write|backspace|rewind|end\s*file|close)\s*[(]" insensitive="true"/>
-        <RegExpr attribute="IO Function" context="find_io_paren" String="\bopen\s*[(]" insensitive="true"/>
-        <RegExpr attribute="IO Function" context="find_io_paren" String="\binquire\s*[(]" insensitive="true"/>
-        <RegExpr attribute="IO Function" context="format_stmnt" String="\bformat\s*[(]" insensitive="true"/>
-        <RegExpr attribute="IO Function" context="#stay" String="\bend\s*file\b" insensitive="true"/>
-        <keyword attribute="IO Function" context="#stay" String="io_functions"/>
-      </context>
-<!-- This context matches parenthesis for the read, write, ... statements -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_io_paren">
-        <DetectChar attribute="IO Function" context="#stay" char="*"/>
-        <DetectChar attribute="Normal Text" context="inside_func_paren" char="("/>
-        <DetectChar attribute="IO Function" context="#pop" char=")"/>
-        <keyword attribute="IO Function"  context="#stay" String="io_keywords"/>
-        <keyword attribute="IO Function"  context="#stay" String="inquire_keywords"/>
-        <keyword attribute="IO Function"  context="#stay" String="open_keywords"/>
-        <IncludeRules context="find_strings" />
-        <IncludeRules context="find_intrinsics" />
-        <IncludeRules context="find_numbers" />
-        <IncludeRules context="find_symbols" />
-      </context>
-<!-- This context highlights the text inside the parenthesis of fortran statement -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="format_stmnt">
-        <DetectChar attribute="IO Function" context="format_stmnt" char="("/>
-        <DetectChar attribute="IO Function" context="#pop" char=")"/>
-        <RegExpr attribute="IO Function" context="#stay" String="[0-9]*/" insensitive="true"/>
-        <AnyChar attribute="IO Function" context="#stay" String=":"/>
-        <IncludeRules context="find_strings" />
-        <IncludeRules context="find_symbols" />
-      </context>
-
-<!-- The following context matches the begin of program units -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_begin_stmnts">
-        <RegExpr attribute="Keyword" context="#stay" String="\bmodule\s+procedure\b" insensitive="true"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b(subroutine|function|block\s*data)\b" insensitive="true" beginRegion="Routine"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b(program|module|block\s*data)\b" insensitive="true" beginRegion="Routine"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b(then|do)\b" insensitive="true" beginRegion="Block"/>
-      </context>
-<!-- The following context matches the end of program units -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_end_stmnts">
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(subroutine|function|block\s*data)\b" insensitive="true" endRegion="Routine"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(program|module)\b" insensitive="true" endRegion="Routine"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(do|if)\b" insensitive="true" endRegion="Block"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s*(select|where|forall|interface)\b" insensitive="true"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\belse\s*if\b" insensitive="true" endRegion="Block"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\b" insensitive="true" endRegion="Routine"/>
-      </context>
-<!-- The following context matches the mid of program units -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_mid_stmnts">
-        <RegExpr attribute="Keyword" context="#stay" String="\belse\b" insensitive="true" endRegion="Block" beginRegion="Block"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bcontains\b" insensitive="true" endRegion="Routine" beginRegion="Routine"/>
-      </context>
-
-<!-- The following two contexts match declarations -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_decls">
-        <RegExpr attribute="Data Type" context="#stay" String="\binteger[\*]\d{1,2}" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\breal[\*]\d{1,2}" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\bcomplex[\*]\d{1,2}" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\bend\s*type\b" insensitive="true"/>
-        <keyword attribute="Data Type" context="#stay" String="types"/>
-        <RegExpr attribute="Data Type" context="#stay" String="^\s*data\b" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="find_paren" String="^\s*real\s*[(]" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="^\s*real(?![\w\*])" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\bcharacter[*][0-9]+\b" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="find_paren" String="\b(type|integer|complex|character|logical|intent|dimension)\b\s*[(]" insensitive="true"/>
-        <RegExpr attribute="Data Type" context="#stay" String="\b(type|integer|complex|character|logical|intent|dimension)\b" insensitive="true"/>
-        <Detect2Chars attribute="Data Type" context="#stay" char=":" char1=":"/>
-      </context>
-<!-- This context matches parenthesis in data type declarations, such as in 'real(...)'-->
-      <context attribute="Data Type" lineEndContext="#pop" name="find_paren">
-        <DetectChar attribute="Data Type" context="find_paren" char="("/>
-        <DetectChar attribute="Data Type" context="#pop" char=")"/>
-      </context>
-
-<!-- The following context matches intrinsic procedures -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_intrinsics">
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-      <!-- INTRINSIC PROCEDURES -->
-        <keyword attribute="Elemental Procedure"       context="#stay" String="elemental_procs"/>
-        <keyword attribute="Inquiry Function"          context="#stay" String="inquiry_fn"/>
-        <keyword attribute="Transformational Function" context="#stay" String="transform_fn"/>
-        <keyword attribute="Non elemental subroutine"  context="#stay" String="non_elem_subr"/>
-      </context>
-
-<!-- The following context matches integer and real numbers -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_numbers">
-        <!-- Floating-point numbers with optional kind -->
-        <RegExpr attribute="Float" context="#stay" String="[0-9]*\.[0-9]+([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?" insensitive="true"/>
-        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+\.[0-9]*([de][+-]?[0-9]+)?([_]([0-9]+|[a-z][\w_]*))?(?![a-z])" insensitive="true"/>
-        <RegExpr attribute="Float" context="#stay" String="\b[0-9]+[de][+-]?[0-9]+([_]([0-9]+|[a-z][\w_]*))?" insensitive="true"/>
-        <!-- Integers with optional kind specifier -->
-        <RegExpr attribute="Decimal" context="#stay" String="\b[0-9]+([_]([0-9]+|[a-zA-Z][\w_]*))?"/>
-        <!-- Integers in binary, octal and hexadecimal notations -->
-        <RegExpr attribute="Decimal" context="#stay" String="\b[bozx]([&apos;][0-9a-f]+[&apos;]|[&quot;][0-9a-f]+[&quot;])" insensitive="true"/>
-      </context>
-
-<!-- The following four contexts implement the complex string multi-line declarations -->
-      <!-- Matches STRINGS (there are 2 types of strings: '...' and "...") -->
-      <context attribute="String" lineEndContext="#stay" name="find_strings">
-        <DetectChar attribute="String" context="string_1" char="&apos;"/>
-        <DetectChar attribute="String" context="string_2" char="&quot;"/>
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="string_1" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="String" context="#pop" String="[^&apos;]*&apos;"/>
-        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
-        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="string_2" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="String" context="#pop" String="[^&quot;]*&quot;"/>
-        <RegExpr attribute="Keyword" context="end_of_string" String="&amp;\s*$"/>
-        <RegExpr attribute="String" context="end_of_string" String=".*(?=&amp;\s*$)"/>
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="end_of_string" fallthrough="true" fallthroughContext="#pop#pop">
-        <DetectSpaces />
-        <RegExpr attribute="Keyword" context="#stay" String="&amp;\s*$"/>
-        <DetectChar attribute="Keyword" context="#pop" char="&amp;" firstNonSpace="true"/>
-        <RegExpr attribute="Comment" context="#stay" String="(!.*)?$" firstNonSpace="true"/>
-      </context>
-    </contexts>
-
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-<!-- *             S T Y L E   I T E M   D E F I N I T I O N S           *  -->
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  -->
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword" defStyleNum="dsKeyword"/>
-      <itemData name="Data Type" defStyleNum="dsDataType"/>
-      <itemData name="Decimal" defStyleNum="dsDecVal"/>
-      <itemData name="Float" defStyleNum="dsFloat"/>
-      <itemData name="String" defStyleNum="dsString"/>
-      <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="Symbol" defStyleNum="dsNormal"/>
-      <itemData name="Preprocessor" defStyleNum="dsOthers"/>
-      <itemData name="Operator" defStyleNum="dsOperator" bold="1" italic="0"/>
-      <itemData name="Logical" defStyleNum="dsConstant" bold="1" italic="0"/>
-      <itemData name="IO Function" defStyleNum="dsFunction" bold="0" italic="0"/>
-      <itemData name="Elemental Procedure" defStyleNum="dsBuiltIn" bold="1" italic="0"/>
-      <itemData name="Inquiry Function" defStyleNum="dsFunction" bold="1" italic="1"/>
-      <itemData name="Transformational Function" defStyleNum="dsFunction" bold="1" italic="0"/>
-      <itemData name="Non elemental subroutine" defStyleNum="dsFunction" bold="1" italic="0"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <comments>
-      <comment name="singleLine" start="c"/>
-      <comment name="singleLine" start="!"/>
-    </comments>
-    <keywords casesensitive="0"/>
-  </general>
-</language>
diff --git a/xml/fsharp.xml b/xml/fsharp.xml
--- a/xml/fsharp.xml
+++ b/xml/fsharp.xml
@@ -9,7 +9,7 @@
 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
 ]>
-<language name="FSharp" version="5" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
+<language name="FSharp" version="6" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
 
   <highlighting>
     <list name="keywords">
@@ -190,11 +190,18 @@
         <RegExpr attribute="Decimal" context="#stay" String="-?&DEC;" />
       </context>
 
-      <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
         <!-- Support for nested comments -->
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="String" lineEndContext="#stay" name="String Constant">
@@ -275,8 +282,7 @@
     <keywords casesensitive="1" />
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="singleLine" start="///" />
-      <comment name="multiLine" start="(*" end="*)" />
+      <comment name="multiLine" start="(*" end="*)" region="comment" />
     </comments>
   </general>
 </language>
diff --git a/xml/glsl.xml b/xml/glsl.xml
--- a/xml/glsl.xml
+++ b/xml/glsl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="5" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="6" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
 	<highlighting>
 		<list name="keywords">
 			<item>break</item>
@@ -176,11 +176,6 @@
 			<item>readonly</item>
 			<item>writeonly</item>
 		</list>
-		<list name="attention">
-			<item>FIXME</item>
-			<item>TODO</item>
-			<item>BUG</item>
-		</list>
 		<list name="stdlib">
 			<!-- see also: https://www.opengl.org/sdk/docs/man4/ -->
 			<item>abs</item>
@@ -1180,11 +1175,15 @@
 				<RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
 			</context>
 			<context name="Commentar 1" attribute="Comment" lineEndContext="#pop">
-				<keyword attribute="Alert" context="#stay" String="attention" />
+				<DetectSpaces />
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 			<context name="Commentar 2" attribute="Comment" lineEndContext="#stay">
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-				<keyword attribute="Alert" context="#stay" String="attention" />
+				<DetectSpaces />
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 			<context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop">
 			</context>
@@ -1204,14 +1203,14 @@
 			<itemData name="Symbol"         defStyleNum="dsNormal"/>
 			<itemData name="Preprocessor"   defStyleNum="dsPreprocessor"/>
 			<itemData name="Comment"        defStyleNum="dsComment"/>
-			<itemData name="Alert"          defStyleNum="dsAlert" />
 		</itemDatas>
 	</highlighting>
 	<general>
 		<comments>
 			<comment name="singleLine" start="//" />
-			<comment name="multiLine" start="/*" end="*/" />
+			<comment name="multiLine" start="/*" end="*/" region="Comment" />
 		</comments>
 		<keywords casesensitive="1" />
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/gnuassembler.xml b/xml/gnuassembler.xml
--- a/xml/gnuassembler.xml
+++ b/xml/gnuassembler.xml
@@ -43,7 +43,7 @@
 
 -->
 
-<language name="GNU Assembler" version="3" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
+<language name="GNU Assembler" version="4" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
   <highlighting>
     <list name="keywords">
       <item>.abort</item>
@@ -250,16 +250,20 @@
         <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
         <RegExpr      attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
         <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" firstNonSpace="true" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" beginRegion="BlockComment" />
         <AnyChar      attribute="Comment" context="Commentar 2" String="@;#" />
         <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{|}~" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 1">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 2" >
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="String" lineEndContext="#pop" name="String">
         <LineContinue  attribute="String" context="Some Context" />
@@ -293,11 +297,10 @@
 
   <general>
     <comments>
-      <!--<comment name="singleLine" start=";" />
-      <comment name="singleLine" start="@" />
-      <comment name="singleLine" start="#" />-->
-      <comment name="multiLine"  start="/*" end="*/" />
+      <comment name="singleLine" start="#" position="afterwhitespace" />
+      <comment name="multiLine"  start="/*" end="*/" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" weakDeliminator="_.$" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/go.xml b/xml/go.xml
--- a/xml/go.xml
+++ b/xml/go.xml
@@ -26,7 +26,7 @@
 -->
 
 
-<language name="Go" version="4" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
+<language name="Go" version="5" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
     <highlighting>
     <list name="keywords">
 <!-- Keywords have been taken from The Go Programming Language Specification -> Keywords section -->
@@ -111,7 +111,7 @@
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"   />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"   />
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*"   />
+        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment" />
         <Int attribute="Decimal" context="#stay" />
         <Float attribute="Float" context="#stay" />
         <HlCOct attribute="Octal" context="#stay"/>
@@ -126,6 +126,7 @@
         <LineContinue attribute="Comment" context="#stay"/>
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
@@ -133,6 +134,7 @@
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
@@ -173,3 +175,4 @@
     <keywords casesensitive="1" additionalDeliminator="'&quot;" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/graphql.xml b/xml/graphql.xml
--- a/xml/graphql.xml
+++ b/xml/graphql.xml
@@ -5,7 +5,7 @@
   Synatx: https://github.com/graphql/graphql-spec/blob/master/spec/Section%202%20- -%20Language.md
      and: https://github.com/graphql/graphql-spec/blob/master/spec/Appendix%20B%20- -%20Grammar%20Summary.md
 -->
-<language name="GraphQL" section="Other" version="1" kateversion="2.4" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
+<language name="GraphQL" section="Other" version="2" kateversion="2.4" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
   <highlighting>
     <list name="listKeywords">
       <item>enum</item>
@@ -62,7 +62,9 @@
       </context>
 
       <context name="ctxComment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
     </contexts>
 
@@ -80,4 +82,10 @@
       <itemData name="Comment" defStyleNum="dsComment"/>
     </itemDatas>
   </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+  </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/hamlet.xml b/xml/hamlet.xml
--- a/xml/hamlet.xml
+++ b/xml/hamlet.xml
@@ -5,7 +5,7 @@
   word character *or* a number, hence the lookahead -->
   <!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
 ]>
-<language name="Hamlet" version="3" kateversion="2.4" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">
+<language name="Hamlet" version="4" kateversion="2.4" section="Markup" extensions="*.hamlet" author="Bastian Holst (bastianholst@gmx.de)" license="LGPL" indenter="haskell">
 <highlighting>
 <contexts>
   <context attribute="Normal Text" lineEndContext="#pop" name="Normal Text" >
@@ -96,9 +96,7 @@
 </itemDatas>
 </highlighting> 
 <general>
-  <comments>
-    <comment name="singleLine" start="#"/>
-  </comments>
   <keywords casesensitive="1"/>
 </general> 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/haskell.xml b/xml/haskell.xml
--- a/xml/haskell.xml
+++ b/xml/haskell.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Haskell" version="13" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
+<language name="Haskell" version="14" kateversion="5.0" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
   <highlighting>
   <list name="keywords">
     <item>case</item>
@@ -459,8 +459,8 @@
     <context attribute="Normal" lineEndContext="#stay" name="code">
       <StringDetect attribute="Pragma"  context="pragma" String="{-#"/>
       <StringDetect attribute="Comment" context="#stay" String="{--}"/>
-      <RegExpr attribute="Comment" context="comments" String="\{-[^#]?" />
-      <RegExpr attribute="Comment" context="comment"  String="--[\-]*([^!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|\-~:]|$)" />
+      <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment"/>
+      <RegExpr attribute="Comment" context="comment"  String="--[\-]*(?=[^!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|\-~:]|$)" />
       <WordDetect attribute="Keyword" context="import"   String="import" />
       <Detect2Chars attribute="C2HS Directive" context="c2hs directive" char="{" char1="#"/>
       <DetectChar attribute="C Preprocessor" context="C Preprocessor" char="#" column="0"/>
@@ -484,7 +484,7 @@
       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>
       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
       <Int        attribute="Decimal" context="#stay" />
-      <RegExpr    attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" />
+      <DetectChar attribute="Char"    context="char" char="'" />
       <DetectChar attribute="String"  context="string" char="&quot;" />
 
       <DetectChar attribute="Function Infix" context="infix" char="`"/>
@@ -512,11 +512,15 @@
     </context>
     <context attribute="Comment" lineEndContext="#pop" name="comment">
       <IncludeRules context="Haddock" />
+      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Modelines" />
     </context>
     <context attribute="Comment" lineEndContext="#stay" name="comments">
-      <Detect2Chars attribute="Comment" context="comment" char="{" char1="-" />
-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+      <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="BlockComment" />
+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
       <IncludeRules context="Haddock" />
+      <IncludeRules context="##Alerts" />
+      <IncludeRules context="##Modelines" />
     </context>
     <context attribute="Char" lineEndContext="#pop" name="char">
       <RegExpr attribute="Char" context="#stay" String="\\." />
@@ -535,8 +539,8 @@
       <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
 
       <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}"/>
-      <RegExpr attribute="Comment" context="comments" String="\{-[^#]?" />
-      <RegExpr attribute="Comment" context="comment"  String="--([^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:].*)?$" />
+      <RegExpr attribute="Comment" context="comments" String="\{-(?=[^#]|$)" beginRegion="BlockComment" />
+      <RegExpr attribute="Comment" context="comment"  String="--(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
     </context>
 
     <!-- Haddock -->
@@ -642,8 +646,9 @@
     <folding indentationsensitive="1"/>
     <comments>
       <comment name="singleLine" start="--" />
-      <comment name="multiLine" start="{-" end="-}" />
+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" />
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/haskell.xml.patch b/xml/haskell.xml.patch
deleted file mode 100644
--- a/xml/haskell.xml.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/haskell.xml b/haskell.xml
-index a71d649..84f4f85 100644
---- a/haskell.xml
-+++ b/haskell.xml
-@@ -482,7 +482,7 @@
-       <RegExpr    attribute="Octal"   context="#stay" String="0[Oo][0-7]+"/>
-       <RegExpr    attribute="Hex"     context="#stay" String="0[Xx][0-9A-Fa-f]+"/>
-       <Int        attribute="Decimal" context="#stay" />
--      <DetectChar attribute="Char"    context="char" char="'" />
-+      <RegExpr    attribute="Char"    context="#stay" String="'(\\'|\\[^']+|[^\\\n])'" />
-       <DetectChar attribute="String"  context="string" char="&quot;" />
- 
-       <DetectChar attribute="Function Infix" context="infix" char="`"/>
-@@ -605,9 +605,9 @@
- 
-     <itemData name="Keyword"          defStyleNum="dsKeyword"  spellChecking="false" />
-     <itemData name="Type Prelude"     defStyleNum="dsDataType" spellChecking="false" />
--    <itemData name="Function Prelude" defStyleNum="dsFunction" spellChecking="false" />
--    <itemData name="Data Prelude"     defStyleNum="dsKeyword"  spellChecking="false" />
--    <itemData name="Class Prelude"    defStyleNum="dsKeyword"  spellChecking="false" />
-+    <itemData name="Function Prelude" defStyleNum="dsNormal"   spellChecking="false" />
-+    <itemData name="Data Prelude"     defStyleNum="dsDataType" spellChecking="false" />
-+    <itemData name="Class Prelude"    defStyleNum="dsDataType" spellChecking="false" />
- 
-     <itemData name="Signature"        defStyleNum="dsOthers"  spellChecking="false" />
-     <itemData name="Function"         defStyleNum="dsNormal"   spellChecking="false" />
diff --git a/xml/haxe.xml b/xml/haxe.xml
--- a/xml/haxe.xml
+++ b/xml/haxe.xml
@@ -12,7 +12,7 @@
   ========================================================================
 -->
 
-<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="2" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">
+<language name="Haxe" section="Sources" extensions="*.hx;*.Hx;*.hX;*.HX;" mimetype="text/x-hxsrc" version="3" kateversion="2.4" casesensitive="true" author="Chad Joan" license="MIT">
   <highlighting>
     <list name="keywords">
     
@@ -146,9 +146,16 @@
       </context>
 
       <!-- Comments -->
-      <context attribute="Comment" lineEndContext="#pop" name="CommentLine"/>
+      <context attribute="Comment" lineEndContext="#pop" name="CommentLine">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="CommentBlock">
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="CommentBlock"/>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
     </contexts>
     <itemDatas>
@@ -174,8 +181,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//"/>
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="CommentBlock"/>
     </comments>
     <keywords casesensitive="true"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
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="11" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="12" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
@@ -91,9 +91,10 @@
 
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces/>
+    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Modelines" />
     <DetectIdentifier/>
-    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(?:-(?!-&gt;))+" />
   </context>
 
@@ -193,6 +194,7 @@
 
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
     <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <DetectSpaces />
     <IncludeRules context="##Alerts" />
   </context>
 
@@ -314,3 +316,4 @@
   </comments>
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/idris.xml b/xml/idris.xml
--- a/xml/idris.xml
+++ b/xml/idris.xml
@@ -1,105 +1,105 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->
-<language name="Idris" version="1.0" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
+<language name="Idris" version="3" kateversion="3.4" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
   <highlighting>
   <list name="keywords">
-    <item> abstract </item>
-    <item> auto </item>
-    <item> case </item>
-    <item> class </item>
-    <item> codata </item>
-    <item> constructor </item>
-    <item> covering </item>
-    <item> data </item>
-    <item> default </item>
-    <item> do </item>
-    <item> dsl </item>
-    <item> else </item>
-    <item> export </item>
-    <item> if </item>
-    <item> implementation </item>
-    <item> implicit </item>
-    <item> import </item>
-    <item> impossible </item>
-    <item> in </item>
-    <item> index_first </item>
-    <item> index_next </item>
-    <item> infix </item>
-    <item> infixl </item>
-    <item> infixr </item>
-    <item> instance </item>
-    <item> interface </item>
-    <item> lambda </item>
-    <item> let </item>
-    <item> module </item>
-    <item> mutual </item>
-    <item> namespace </item>
-    <item> of </item>
-    <item> parameters </item>
-    <item> partial </item>
-    <item> pattern </item>
-    <item> postulate </item>
-    <item> prefix </item>
-    <item> private </item>
-    <item> proof </item>
-    <item> public </item>
-    <item> record </item>
-    <item> rewrite </item>
-    <item> static </item>
-    <item> syntax </item>
-    <item> tactics </item>
-    <item> term </item>
-    <item> then </item>
-    <item> total </item>
-    <item> using </item>
-    <item> variable </item>
-    <item> where </item>
-    <item> with </item>
+    <item>abstract</item>
+    <item>auto</item>
+    <item>case</item>
+    <item>class</item>
+    <item>codata</item>
+    <item>constructor</item>
+    <item>covering</item>
+    <item>data</item>
+    <item>default</item>
+    <item>do</item>
+    <item>dsl</item>
+    <item>else</item>
+    <item>export</item>
+    <item>if</item>
+    <item>implementation</item>
+    <item>implicit</item>
+    <item>import</item>
+    <item>impossible</item>
+    <item>in</item>
+    <item>index_first</item>
+    <item>index_next</item>
+    <item>infix</item>
+    <item>infixl</item>
+    <item>infixr</item>
+    <item>instance</item>
+    <item>interface</item>
+    <item>lambda</item>
+    <item>let</item>
+    <item>module</item>
+    <item>mutual</item>
+    <item>namespace</item>
+    <item>of</item>
+    <item>parameters</item>
+    <item>partial</item>
+    <item>pattern</item>
+    <item>postulate</item>
+    <item>prefix</item>
+    <item>private</item>
+    <item>proof</item>
+    <item>public</item>
+    <item>record</item>
+    <item>rewrite</item>
+    <item>static</item>
+    <item>syntax</item>
+    <item>tactics</item>
+    <item>term</item>
+    <item>then</item>
+    <item>total</item>
+    <item>using</item>
+    <item>variable</item>
+    <item>where</item>
+    <item>with</item>
   </list>
   <list name="directives">
-     <item> access </item>
-     <item> assert_total </item>
-     <item> default </item>
-     <item> dynamic </item>
-     <item> elim </item>
-     <item> error_handlers </item>
-     <item> error_reverse </item>
-     <item> flag </item>
-     <item> hide </item>
-     <item> include </item>
-     <item> language </item>
-     <item> lib </item>
-     <item> link </item>
-     <item> name </item>
-     <item> provide </item>
-     <item> reflection </item>
+     <item>access</item>
+     <item>assert_total</item>
+     <item>default</item>
+     <item>dynamic</item>
+     <item>elim</item>
+     <item>error_handlers</item>
+     <item>error_reverse</item>
+     <item>flag</item>
+     <item>hide</item>
+     <item>include</item>
+     <item>language</item>
+     <item>lib</item>
+     <item>link</item>
+     <item>name</item>
+     <item>provide</item>
+     <item>reflection</item>
   </list>
   <list name="tactics">
-    <item> applyTactic </item>
-    <item> attack </item>
-    <item> compute </item>
-    <item> exact </item>
-    <item> fill </item>
-    <item> focus </item>
-    <item> induction </item>
-    <item> intro </item>
-    <item> intros </item>
-    <item> let </item>
-    <item> refine </item>
-    <item> reflect </item>
-    <item> rewrite </item>
-    <item> solve </item>
-    <item> trivial </item>
-    <item> try </item>
+    <item>applyTactic</item>
+    <item>attack</item>
+    <item>compute</item>
+    <item>exact</item>
+    <item>fill</item>
+    <item>focus</item>
+    <item>induction</item>
+    <item>intro</item>
+    <item>intros</item>
+    <item>let</item>
+    <item>refine</item>
+    <item>reflect</item>
+    <item>rewrite</item>
+    <item>solve</item>
+    <item>trivial</item>
+    <item>try</item>
   </list>
   <contexts>
      <context attribute="Normal" lineEndContext="#stay" name="code">
         <RegExpr attribute="Comment" context="line comment"
-           String="---*[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]?" />
+           String="---*(?=[^!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
         <RegExpr attribute="Comment" context="line comment"
-           String="\|\|\|[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]?" />
-        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />
+           String="\|\|\|(?=[^\-!#\$%&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:]|$)" />
+        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />
         <RegExpr attribute="Normal" context="declaration" lookAhead="true"
            String="^\s*([a-z]+\s+)*([A-Za-z][A-Za-z0-9_]*'*|\([\-!#\$%&amp;\*\+\./&lt;=&gt;\?@&#92;\^\|~:]+\))\s*:" />
         <keyword attribute="Keyword" context="#stay" String="keywords" />
@@ -139,10 +139,17 @@
         <RegExpr attribute="String" context="#stay" String="\\." />
         <RegExpr attribute="String" context="#pop" String="&quot;" />
      </context>
-     <context attribute="Comment" lineEndContext="#pop" name="line comment" />
+     <context attribute="Comment" lineEndContext="#pop" name="line comment">
+         <DetectSpaces />
+         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+     </context>
      <context attribute="Comment" lineEndContext="#stay" name="block comment">
-        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
-        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" />
+        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="BlockComment" />
+        <Detect2Chars attribute="Comment" context="block comment" char="{" char1="-" beginRegion="BlockComment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
      </context>
   </contexts>
   <itemDatas>
@@ -167,7 +174,7 @@
     <folding indentationsensitive="1"/>
     <comments>
       <comment name="singleLine" start="--" />
-      <comment name="multiLine" start="{-" end="-}" />
+      <comment name="multiLine" start="{-" end="-}" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" />
 </general>
diff --git a/xml/ini.xml b/xml/ini.xml
--- a/xml/ini.xml
+++ b/xml/ini.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="5" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="6" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <list name="keywords">
@@ -49,6 +49,7 @@
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
   <IncludeRules context="##Alerts" />
+  <IncludeRules context="##Modelines" />
   <DetectIdentifier />
  </context>
 </contexts>
@@ -69,10 +70,10 @@
 
 <general>
  <comments>
-  <comment name="singleLine" start="#" />
   <comment name="singleLine" start=";" />
  </comments>
  <keywords casesensitive="0" />
 </general>
 
 </language>
+<!-- kate: replace-tabs on; indent-width 1; -->
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -24,7 +24,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="19"
+    version="20"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -687,8 +687,7 @@
 
         <IncludeRules context="InPreprocessor" />
         <Detect2Chars attribute="Error" context="#pop!LineError" char="/" char1="/" />
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Comment 2" char="/" char1="*" beginRegion="Comment" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
         <IncludeRules context="GNUMacros##GCCExtensions" />
         <DetectIdentifier attribute="Preprocessor" context="#pop!In Define"/>
       </context>
diff --git a/xml/j.xml b/xml/j.xml
--- a/xml/j.xml
+++ b/xml/j.xml
@@ -62,7 +62,7 @@
 -->
 <language name="J"
           section="Scripts"
-          version="2"
+          version="3"
           kateversion="3.4"
           extensions="*.ijs;*.ijt;*.IJS;*.IJT"
           mimetype="text/x-j;text/x-jsrc"
@@ -90,7 +90,11 @@
         <RegExpr      attribute="ExpArg"         context="#stay"        String="\b[nmuvxy](?![\w:.])"/>
         <RegExpr      attribute="Noun"           context="#stay"        String="\ba[.:](?![.:])"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="comment line"/>
+      <context attribute="Comment" lineEndContext="#pop" name="comment line">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Sentence"       defStyleNum="dsNormal"/>
@@ -117,3 +121,4 @@
     <folding indentationsensitive="true"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; indent-width 2; -->
diff --git a/xml/java.xml b/xml/java.xml
--- a/xml/java.xml
+++ b/xml/java.xml
@@ -4,7 +4,7 @@
 	<!ENTITY int "[0-9]([0-9_]*[0-9])?">
 	<!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
 ]>
-<language name="Java" version="6" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Java" version="7" kateversion="5.0" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
@@ -3826,11 +3826,15 @@
 				<RegExpr attribute="Imports" context="#pop" String="\s*.*;" />
 			</context>
 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+				<DetectSpaces />
 				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+				<DetectSpaces />
 				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 		</contexts>
 		<itemDatas>
@@ -3858,8 +3862,9 @@
 	<general>
 		<comments>
 			<comment name="singleLine" start="//"/>
-			<comment name="multiLine" start="/*" end="*/"/>
+			<comment name="multiLine" start="/*" end="*/" region="Comment"/>
 		</comments>
 		<keywords casesensitive="1"/>
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -17,7 +17,7 @@
    * QML
    * CoffeeScript (embedded)
 -->
-<language name="JavaScript" version="15" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+<language name="JavaScript" version="16" kateversion="5.0" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
           mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
           author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
 
@@ -1852,12 +1852,16 @@
 
       <!-- Comments -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
-        <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1" />
-        <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <StringDetect attribute="Region Marker" context="#pop!region_marker" String="//BEGIN" beginRegion="Region1" />
+        <StringDetect attribute="Region Marker" context="#pop!region_marker" String="//END" endRegion="Region1" />
 
         <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" />
-        <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
+        <Detect2Chars attribute="Comment" context="#pop!Comment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!Multi/inline Comment" char="/" char1="*" beginRegion="Comment" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <DetectSpaces />
diff --git a/xml/json.xml b/xml/json.xml
--- a/xml/json.xml
+++ b/xml/json.xml
@@ -12,7 +12,7 @@
  ** http://tools.ietf.org/html/rfc4627
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="4" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="5" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
diff --git a/xml/jsp.xml b/xml/jsp.xml
--- a/xml/jsp.xml
+++ b/xml/jsp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language version="5" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
+<language version="6" kateversion="5.0" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
   <highlighting>
 
     <list name="jsp-reserved-words">
@@ -27,9 +27,9 @@
         <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
         <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
-        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
+        <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment" beginRegion="HtmlComment"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
         <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
@@ -63,6 +63,7 @@
       </context>
       <context name="JS comment close" attribute="Jsp Comment" lineEndContext="#stay">
         <DetectSpaces/>
+        <IncludeRules context="##Alerts" />
         <DetectIdentifier/>
         <StringDetect attribute="Normal Text" context="#pop#pop#pop" String="&lt;/script" endRegion="script" />
       </context>
@@ -70,8 +71,8 @@
       <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
       </context>
@@ -79,26 +80,29 @@
       <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
-        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop"/>
+        <StringDetect String="--%&gt;" attribute="Jsp Comment" context="#pop" endRegion="JspComment"/>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
@@ -106,8 +110,8 @@
       </context>
 
       <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
@@ -115,8 +119,8 @@
       </context>
 
       <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
         <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
@@ -125,34 +129,34 @@
 
       <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="'" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop"/>
+        <Detect2Chars char="%" char1="&gt;" attribute="Jsp Scriptlet" context="#pop" endRegion="JspScriptlet"/>
         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
         <keyword String="jsp-reserved-words" attribute="Keyword" context="#stay"/>
         <IncludeRules context="##Java" includeAttrib="true"/>
@@ -167,14 +171,14 @@
       <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
       </context>
 
       <context name="Html Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
@@ -184,24 +188,24 @@
       </context>
 
       <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
         <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
         <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
@@ -209,10 +213,12 @@
       </context>
 
       <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
         <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop"/>
+        <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop" endRegion="HtmlComment"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
     </contexts>
@@ -238,8 +244,9 @@
 
   <general>
     <comments>
-      <comment name="multiLine" start="&lt;%-- " end=" --%&gt;" />
+      <comment name="multiLine" start="&lt;%--" end="--%&gt;" region="JspComment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -33,7 +33,7 @@
   <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
 ]>
 
-<language name="Julia" section="Sources" version="7" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" section="Sources" version="8" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="block_begin">
@@ -697,7 +697,7 @@
   <general>
     <comments>
       <comment name="singleLine" start="#" />
-      <comment name="multiLine" start="#=" end="=#" />
+      <comment name="multiLine" start="#=" end="=#" region="block-comment" />
     </comments>
     <keywords casesensitive="1" weakDeliminator=""/>
   </general>
diff --git a/xml/kotlin.xml b/xml/kotlin.xml
--- a/xml/kotlin.xml
+++ b/xml/kotlin.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- kotlin language syntax http://kotlinlang.org -->
-<language name="Kotlin" version="5" kateversion="5.0" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
+<language name="Kotlin" version="6" kateversion="5.0" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
     <highlighting>
         <list name="keywords">
             <item>package</item>
@@ -260,11 +260,15 @@
             </context>
 
             <context attribute="Comment" lineEndContext="#pop" name="CommentSingleLine">
-                <StringDetect attribute="TODO" context="#stay" String="TODO" />
+                <DetectSpaces />
+                <IncludeRules context="##Alerts"/>
+                <IncludeRules context="##Modelines"/>
             </context>
             <context attribute="Comment" lineEndContext="#stay" name="CommentMultiline">
-                <StringDetect attribute="TODO" context="#stay" String="TODO" />
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+                <DetectSpaces />
+                <IncludeRules context="##Alerts"/>
+                <IncludeRules context="##Modelines"/>
             </context>
 
         </contexts>
@@ -291,8 +295,9 @@
     <general>
         <comments>
             <comment name="singleLine" start="//"/>
-            <comment name="multiLine" start="/*" end="*/"/>
+            <comment name="multiLine" start="/*" end="*/" region="Comment"/>
         </comments>
         <keywords casesensitive="1"/>
     </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
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="14" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+<language name="LaTeX" version="15" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
   <highlighting>
     <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
          Using a DetectChar rule with lookAhead to detect "\" at the beginning
@@ -970,6 +970,7 @@
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier/>
         <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
       </context>
@@ -1130,3 +1131,4 @@
     </encodings>
   </spellchecking>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/lex.xml b/xml/lex.xml
--- a/xml/lex.xml
+++ b/xml/lex.xml
@@ -20,7 +20,7 @@
   
   ========================================================================
 -->
-<language name="Lex/Flex" version="2" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Lex/Flex" version="3" kateversion="2.4" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -31,7 +31,7 @@
     <IncludeRules context="Detect C" />
     <Detect2Chars attribute="Content-Type Delimiter" context="Rules" char="%" char1="%" beginRegion="rules" endRegion="definitions" />
     <DetectChar attribute="Directive" context="Percent Command" char="%" />
-    <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0"/>
+    <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0" beginRegion="BlockComment"/>
     <RegExpr attribute="Definition" context="Definition RegExpr" String="[A-Za-z_]\w*\s+" column="0"/>
   </context>
   <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
@@ -45,7 +45,10 @@
   <context name="Percent Command" attribute="Directive" lineEndContext="#pop">
   </context>
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
-    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+    <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment"/>
+    <DetectSpaces />
+    <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Modelines" />
   </context>
 
   <context name="Definition RegExpr" attribute="RegExpr" lineEndContext="#pop">
@@ -142,3 +145,4 @@
   </comments>
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/lilypond.xml b/xml/lilypond.xml
--- a/xml/lilypond.xml
+++ b/xml/lilypond.xml
@@ -56,7 +56,7 @@
 ]>
 <language name="LilyPond" section="Other"
           style="lilypond" indenter="lilypond"
-          version="6" kateversion="3.3"
+          version="7" kateversion="3.3"
           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"
           mimetype="text/x-lilypond"
           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">
@@ -820,12 +820,16 @@
       </context>
 
       <context name="commentline" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <context name="commentblock" attribute="Comment" lineEndContext="#stay">
         <Detect2Chars char="%" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <context name="string" attribute="Quoted Text" lineEndContext="#stay">
@@ -891,11 +895,13 @@
       </context>
 
       <context name="schemecommentline" attribute="Scheme Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
       </context>
 
       <context name="schemecommentblock" attribute="Scheme Comment" lineEndContext="#stay">
         <Detect2Chars char="!" char1="#" attribute="Scheme Comment" context="#pop" endRegion="schemecomment"/>
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
       </context>
 
diff --git a/xml/literate-curry.xml b/xml/literate-curry.xml
--- a/xml/literate-curry.xml
+++ b/xml/literate-curry.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Curry" version="2" kateversion="3.4"
+<language name="Literate Curry" version="3" kateversion="3.4"
           section="Sources" extensions="*.lcurry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
           indenter="haskell">
@@ -17,7 +17,7 @@
     </context>
 
     <context attribute="Text" lineEndContext="#pop" name="Code">
-      <RegExpr attribute="Comment" context="multiline" String="\{-[^#]" />
+      <RegExpr attribute="Comment" context="multiline" String="\{-[^#]" beginRegion="Comment" />
       <IncludeRules context="##Curry" />
     </context>
 
@@ -29,7 +29,9 @@
 
     <!-- Handle comments in presence of bird tracks -->
     <context attribute="Comment" lineEndContext="lineend" name="multiline" >
-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />
+      <DetectSpaces />
+      <IncludeRules context="##Alerts" />
     </context>
 
     <context attribute="Text" lineEndContext="#stay" name="lineend">
@@ -47,4 +49,9 @@
     <itemData name="Comment"   defStyleNum="dsComment" />
   </itemDatas>
   </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="{-" end="-}" region="Comment"/>
+    </comments>
+  </general>
 </language>
diff --git a/xml/literate-haskell.xml b/xml/literate-haskell.xml
--- a/xml/literate-haskell.xml
+++ b/xml/literate-haskell.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Literate Haskell" version="5" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
+<language name="Literate Haskell" version="6" kateversion="3.4" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
   <highlighting>
   <contexts>
     <context attribute="Text" lineEndContext="#stay" name="text">
@@ -10,7 +10,7 @@
       <StringDetect attribute="Text" context="normals" String="&#92;begin&#123;spec&#125;"/>
     </context>
     <context attribute="Text" lineEndContext="#pop" name="normal">
-      <RegExpr attribute="Comment" context="comments'" String="\{-[^#]" />
+      <RegExpr attribute="Comment" context="comments'" String="\{-[^#]" beginRegion="Comment" />
       <IncludeRules context="##Haskell" />
     </context>
     <context attribute="Text" lineEndContext="#stay" name="normals">
@@ -19,7 +19,9 @@
       <IncludeRules context="##Haskell" />
     </context>
     <context attribute="Comment" lineEndContext="uncomments" name="comments'" >
-      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" />
+      <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="Comment" />
+      <DetectSpaces />
+      <IncludeRules context="##Alerts" />
     </context>
     <context attribute="Text" lineEndContext="#stay" name="uncomments">
       <DetectChar attribute="BirdTrack" context="recomments" char="&gt;" column="0"/>
@@ -35,4 +37,9 @@
     <itemData name="Comment"          defStyleNum="dsComment" />
   </itemDatas>
   </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="{-" end="-}" region="Comment"/>
+    </comments>
+  </general>
 </language>
diff --git a/xml/llvm.xml b/xml/llvm.xml
--- a/xml/llvm.xml
+++ b/xml/llvm.xml
@@ -1,189 +1,189 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="LLVM" section="Sources"
-          version="1.00" kateversion="3.4.4"
+          version="3" kateversion="5.0"
           extensions="*.ll"
           mimetype=""
           author="LLVM Team"
           license="LLVM Release License">
   <highlighting>
     <list name="keywords">
-      <item> begin </item>
-      <item> end </item>
-      <item> true </item>
-      <item> false </item>
-      <item> declare </item>
-      <item> define </item>
-      <item> global </item>
-      <item> constant </item>
-      <item> gc </item>
-      <item> module </item>
-      <item> asm </item>
-      <item> target </item>
-      <item> datalayout </item>
-      <item> null </item>
-      <item> undef </item>
-      <item> blockaddress </item>
-      <item> sideeffect </item>
-      <item> alignstack </item>
-      <item> to </item>
-      <item> unwind </item>
-      <item> nuw </item>
-      <item> nsw </item>
-      <item> inbounds </item>
-      <item> tail </item>
-      <item> triple </item>
-      <item> type </item>
-      <item> align </item>
-      <item> alias </item>
+      <item>begin</item>
+      <item>end</item>
+      <item>true</item>
+      <item>false</item>
+      <item>declare</item>
+      <item>define</item>
+      <item>global</item>
+      <item>constant</item>
+      <item>gc</item>
+      <item>module</item>
+      <item>asm</item>
+      <item>target</item>
+      <item>datalayout</item>
+      <item>null</item>
+      <item>undef</item>
+      <item>blockaddress</item>
+      <item>sideeffect</item>
+      <item>alignstack</item>
+      <item>to</item>
+      <item>unwind</item>
+      <item>nuw</item>
+      <item>nsw</item>
+      <item>inbounds</item>
+      <item>tail</item>
+      <item>triple</item>
+      <item>type</item>
+      <item>align</item>
+      <item>alias</item>
     </list>
     <list name="linkage-types">
-      <item> private </item>
-      <item> internal </item>
-      <item> available_externally </item>
-      <item> linkonce </item>
-      <item> weak </item>
-      <item> common </item>
-      <item> appending </item>
-      <item> extern_weak </item>
-      <item> linkonce_odr </item>
-      <item> weak_odr </item>
-      <item> dllimport </item>
-      <item> dllexport </item>
+      <item>private</item>
+      <item>internal</item>
+      <item>available_externally</item>
+      <item>linkonce</item>
+      <item>weak</item>
+      <item>common</item>
+      <item>appending</item>
+      <item>extern_weak</item>
+      <item>linkonce_odr</item>
+      <item>weak_odr</item>
+      <item>dllimport</item>
+      <item>dllexport</item>
     </list>
     <list name="calling-conventions">
-      <item> ccc </item>
-      <item> fastcc </item>
-      <item> coldcc </item>
-      <item> cc </item>
+      <item>ccc</item>
+      <item>fastcc</item>
+      <item>coldcc</item>
+      <item>cc</item>
     </list>
     <list name="visibility-styles">
-      <item> default </item>
-      <item> hidden </item>
-      <item> protected </item>
+      <item>default</item>
+      <item>hidden</item>
+      <item>protected</item>
     </list>
     <list name="parameter-attributes">
-      <item> zeroext </item>
-      <item> signext </item>
-      <item> inreg </item>
-      <item> byval </item>
-      <item> sret </item>
-      <item> noalias </item>
-      <item> nocapture </item>
-      <item> nest </item>
+      <item>zeroext</item>
+      <item>signext</item>
+      <item>inreg</item>
+      <item>byval</item>
+      <item>sret</item>
+      <item>noalias</item>
+      <item>nocapture</item>
+      <item>nest</item>
     </list>
     <list name="function-attributes">
-      <item> alignstack </item>
-      <item> alwaysinline </item>
-      <item> inlinehint </item>
-      <item> naked </item>
-      <item> noimplicitfloat </item>
-      <item> noinline </item>
-      <item> noredzone </item>
-      <item> noreturn </item>
-      <item> nounwind </item>
-      <item> optnone </item>
-      <item> optsize </item>
-      <item> readnone </item>
-      <item> readonly </item>
-      <item> ssp </item>
-      <item> sspreq </item>
-      <item> sspstrong </item>
+      <item>alignstack</item>
+      <item>alwaysinline</item>
+      <item>inlinehint</item>
+      <item>naked</item>
+      <item>noimplicitfloat</item>
+      <item>noinline</item>
+      <item>noredzone</item>
+      <item>noreturn</item>
+      <item>nounwind</item>
+      <item>optnone</item>
+      <item>optsize</item>
+      <item>readnone</item>
+      <item>readonly</item>
+      <item>ssp</item>
+      <item>sspreq</item>
+      <item>sspstrong</item>
     </list>
     <list name="types">
-      <item> float </item>
-      <item> double </item>
-      <item> fp128 </item>
-      <item> x86_fp80 </item>
-      <item> ppc_fp128 </item>
-      <item> x86mmx </item>
-      <item> void </item>
-      <item> label </item>
-      <item> metadata </item>
-      <item> opaque </item>
+      <item>float</item>
+      <item>double</item>
+      <item>fp128</item>
+      <item>x86_fp80</item>
+      <item>ppc_fp128</item>
+      <item>x86mmx</item>
+      <item>void</item>
+      <item>label</item>
+      <item>metadata</item>
+      <item>opaque</item>
     </list>
     <list name="intrinsic-global-variables">
-      <item> llvm.used </item>
-      <item> llvm.compiler.used </item>
-      <item> llvm.global_ctors </item>
-      <item> llvm.global_dtors </item>
+      <item>llvm.used</item>
+      <item>llvm.compiler.used</item>
+      <item>llvm.global_ctors</item>
+      <item>llvm.global_dtors</item>
     </list>
     <list name="instructions">
-      <item> ret </item>
-      <item> br </item>
-      <item> switch </item>
-      <item> indirectbr </item>
-      <item> invoke </item>
-      <item> unwind </item>
-      <item> unreachable </item>
-      <item> add </item>
-      <item> fadd </item>
-      <item> sub </item>
-      <item> fsub </item>
-      <item> mul </item>
-      <item> fmul </item>
-      <item> udiv </item>
-      <item> sdiv </item>
-      <item> fdiv </item>
-      <item> urem </item>
-      <item> srem </item>
-      <item> frem </item>
-      <item> shl </item>
-      <item> lshr </item>
-      <item> ashr </item>
-      <item> and </item>
-      <item> or </item>
-      <item> xor </item>
-      <item> extractelement </item>
-      <item> insertelement </item>
-      <item> shufflevector </item>
-      <item> extractvalue </item>
-      <item> insertvalue </item>
-      <item> alloca </item>
-      <item> load </item>
-      <item> store </item>
-      <item> getelementptr </item>
-      <item> trunc </item>
-      <item> zext </item>
-      <item> sext </item>
-      <item> fptrunc </item>
-      <item> fpext </item>
-      <item> fptoui </item>
-      <item> fptosi </item>
-      <item> uitofp </item>
-      <item> sitofp </item>
-      <item> ptrtoint </item>
-      <item> inttoptr </item>
-      <item> bitcast </item>
-      <item> addrspacecast </item>
-      <item> icmp </item>
-      <item> fcmp </item>
-      <item> phi </item>
-      <item> select </item>
-      <item> call </item>
-      <item> va_arg </item>
+      <item>ret</item>
+      <item>br</item>
+      <item>switch</item>
+      <item>indirectbr</item>
+      <item>invoke</item>
+      <item>unwind</item>
+      <item>unreachable</item>
+      <item>add</item>
+      <item>fadd</item>
+      <item>sub</item>
+      <item>fsub</item>
+      <item>mul</item>
+      <item>fmul</item>
+      <item>udiv</item>
+      <item>sdiv</item>
+      <item>fdiv</item>
+      <item>urem</item>
+      <item>srem</item>
+      <item>frem</item>
+      <item>shl</item>
+      <item>lshr</item>
+      <item>ashr</item>
+      <item>and</item>
+      <item>or</item>
+      <item>xor</item>
+      <item>extractelement</item>
+      <item>insertelement</item>
+      <item>shufflevector</item>
+      <item>extractvalue</item>
+      <item>insertvalue</item>
+      <item>alloca</item>
+      <item>load</item>
+      <item>store</item>
+      <item>getelementptr</item>
+      <item>trunc</item>
+      <item>zext</item>
+      <item>sext</item>
+      <item>fptrunc</item>
+      <item>fpext</item>
+      <item>fptoui</item>
+      <item>fptosi</item>
+      <item>uitofp</item>
+      <item>sitofp</item>
+      <item>ptrtoint</item>
+      <item>inttoptr</item>
+      <item>bitcast</item>
+      <item>addrspacecast</item>
+      <item>icmp</item>
+      <item>fcmp</item>
+      <item>phi</item>
+      <item>select</item>
+      <item>call</item>
+      <item>va_arg</item>
     </list>
     <list name="conditions">
-      <item> eq </item>
-      <item> ne </item>
-      <item> ugt </item>
-      <item> uge </item>
-      <item> ult </item>
-      <item> ule </item>
-      <item> sgt </item>
-      <item> sge </item>
-      <item> slt </item>
-      <item> sle </item>
-      <item> oeq </item>
-      <item> ogt </item>
-      <item> oge </item>
-      <item> olt </item>
-      <item> ole </item>
-      <item> one </item>
-      <item> ord </item>
-      <item> ueq </item>
-      <item> une </item>
-      <item> uno </item>
+      <item>eq</item>
+      <item>ne</item>
+      <item>ugt</item>
+      <item>uge</item>
+      <item>ult</item>
+      <item>ule</item>
+      <item>sgt</item>
+      <item>sge</item>
+      <item>slt</item>
+      <item>sle</item>
+      <item>oeq</item>
+      <item>ogt</item>
+      <item>oge</item>
+      <item>olt</item>
+      <item>ole</item>
+      <item>one</item>
+      <item>ord</item>
+      <item>ueq</item>
+      <item>une</item>
+      <item>uno</item>
     </list>
     <contexts>
       <context name="llvm" attribute="Normal Text" lineEndContext="#stay">
@@ -227,6 +227,7 @@
         <DetectSpaces />
         <!-- TODO: Add FileCheck syntax highlighting -->
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
     </contexts>
@@ -235,11 +236,8 @@
       <itemData name="Keyword" defStyleNum="dsKeyword" />
       <itemData name="Data Type" defStyleNum="dsDataType" />
       <itemData name="Int" defStyleNum="dsDecVal" />
-      <itemData name="Hex" defStyleNum="dsBaseN" />
-      <itemData name="Float" defStyleNum="dsFloat" />
       <itemData name="String" defStyleNum="dsString" />
       <itemData name="Comment" defStyleNum="dsComment" />
-      <itemData name="Function" defStyleNum="dsFunction" />
       <itemData name="Symbol" defStyleNum="dsFunction" />
     </itemDatas>
   </highlighting>
diff --git a/xml/lua.xml b/xml/lua.xml
--- a/xml/lua.xml
+++ b/xml/lua.xml
@@ -48,7 +48,7 @@
     - NOTE, FIXME, TODO alerts added on comments
     - improved highlighting
 -->
-<language name="Lua" version="10" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+<language name="Lua" version="12" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
   <highlighting>
     <list name="keywords">
       <item>and</item>
@@ -460,16 +460,15 @@
 
     <contexts>
       <context name="Shebang"       attribute="Comment" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
-        <Detect2Chars attribute="Comment" context="Comment" char="#" char1="!" column="0"/>
+        <Detect2Chars attribute="Comment" context="ShebangLine" char="#" char1="!" column="0"/>
       </context>
 
-      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">
-      </context>
+      <context name="ShebangLine"   attribute="Comment"     lineEndContext="#pop!Normal" />
 
       <context name="Normal"        attribute="Normal Text" lineEndContext="#stay">
         <DetectSpaces />
         <keyword      attribute="Deprecated" context="#stay"       String="deprecated" />
-        <IncludeRules context="##DoxygenLua" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
 
         <RegExpr      attribute="RawStrings" context="String_block"  String="\[(=*)\[" />
         <DetectChar   attribute="Strings"  context="String_single" char="'"/>
@@ -501,6 +500,25 @@
         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />
       </context>
 
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <IncludeRules context="##DoxygenLua" />
+        <RegExpr attribute="Comment" context="#pop!BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" />
+        <Detect2Chars attribute="Comment" context="#pop!Comment" char="-" char1="-" />
+      </context>
+
+      <context name="BlockComment" attribute="Comment" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Comment" context="#stay" String="[^\]]*" />
+        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+
+      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+
       <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">
         <keyword      attribute="Control"  context="#stay" endRegion="chunk"   beginRegion="chunk" String="elsecontrol" />
         <keyword      attribute="Control"  context="#pop"  endRegion="chunk"   String="endcontrol" />
@@ -514,14 +532,14 @@
 
       <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">
         <DetectSpaces />
-        <IncludeRules context="##DoxygenLua" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
         <RegExpr          attribute="Constant" context="LocalVariable" String="\b[A-Z_][A-Z0-9_]*\b" />
         <DetectIdentifier attribute="Variable" context="LocalVariable" />
       </context>
 
       <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
         <DetectSpaces />
-        <IncludeRules context="##DoxygenLua" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
         <DetectChar   attribute="Symbols"   context="#pop" char="," />
         <DetectChar   attribute="Attribute" context="Attribute" char="&lt;" lookAhead="true" />
       </context>
@@ -589,7 +607,7 @@
   <general>
     <comments>
       <comment name="singleLine" start="--" />
-      <comment name="multiLine" start="--[[" end="]]" />
+      <comment name="multiLine" start="--[[" end="]]" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="'&quot;#"/>
   </general>
diff --git a/xml/lua.xml.patch b/xml/lua.xml.patch
--- a/xml/lua.xml.patch
+++ b/xml/lua.xml.patch
@@ -1,6 +1,8 @@
---- lua.xml.orig	2020-07-29 11:31:42.000000000 -0700
-+++ lua.xml	2020-07-29 11:31:57.000000000 -0700
-@@ -582,7 +582,7 @@
+diff --git a/skylighting-core/xml/lua.xml b/skylighting-core/xml/lua.xml
+index 3021ba8..89e5a31 100644
+--- a/skylighting-core/xml/lua.xml
++++ b/skylighting-core/xml/lua.xml
+@@ -600,7 +600,7 @@
        <itemData name="Strings"         defStyleNum="dsString"/>
        <itemData name="RawStrings"      defStyleNum="dsVerbatimString"/>
        <itemData name="Symbols"         defStyleNum="dsOperator" spellChecking="false"/>
diff --git a/xml/m4.xml b/xml/m4.xml
--- a/xml/m4.xml
+++ b/xml/m4.xml
@@ -38,7 +38,7 @@
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 -->
-<language name="GNU M4" version="3" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">
+<language name="GNU M4" version="4" section="Sources" kateversion="3.0" extensions="*.m4;" author="Jaak Ristioja" license="New BSD License">
   <highlighting>
     <list name="optbuiltins">
       <item>__gnu__</item>
@@ -161,7 +161,7 @@
         <RegExpr attribute="Normal Text" String="[a-zA-Z_]\w+" context="#stay"/>
         <RegExpr attribute="Special arguments to macros" String="\$([1-9]\d*|0|\#|\*|\@|\{([1-9]\d*|0)\})" context="#stay"/>
         <RegExpr attribute="Int" String="([1-9]\d*|0|0x[0-9abcdefABCDEF]+)" context="#stay"/>
-        <RegExpr attribute="Comment" String="#.*$" context="#stay"/>
+        <DetectChar attribute="Comment" char="#" context="Comment"/>
         <DetectChar attribute="Commas" char="," context="#stay"/>
         <DetectChar attribute="Operators" char="(" context="inparenthesis" beginRegion="parenthesis"/>
         <DetectChar attribute="Operators" char=")" context="#pop" endRegion="parenthesis"/>
@@ -170,6 +170,11 @@
       <context name="inparenthesis" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
         <IncludeRules context="Normal Text" />
       </context>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Builtins" defStyleNum="dsKeyword"/>
@@ -191,3 +196,4 @@
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -512,4 +512,4 @@
     <keywords casesensitive="1" weakDeliminator = ".-"/>
   </general>
 </language>
-<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+<!-- kate: syntax XML; space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -90,7 +90,7 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="11" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="13" kateversion="5.53" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
       <!-- Start of the Markdown document: find metadata or code block -->
@@ -320,7 +320,7 @@
         <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>
         <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>
         <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->
-        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl|perl6|p[lm]?6|nqp)&end;" insensitive="true"/>
+        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true"/>
         <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>
         <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
         <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
diff --git a/xml/markdown.xml.patch b/xml/markdown.xml.patch
--- a/xml/markdown.xml.patch
+++ b/xml/markdown.xml.patch
@@ -1,16 +1,23 @@
 diff --git a/skylighting-core/xml/markdown.xml b/skylighting-core/xml/markdown.xml
-index f888487..1cf6b14 100644
+index d836d1c..63da066 100644
 --- a/skylighting-core/xml/markdown.xml
 +++ b/skylighting-core/xml/markdown.xml
-@@ -51,8 +51,9 @@
-         <RegExpr attribute="emphasis" String="&emphasisregex;"/>
-         <RegExpr attribute="strongemphasis" String="&strongemphasisregex;"/>
-         <RegExpr attribute="code" String="^([\s]{4,}|\t+).*$"/>
--        <RegExpr context="bullet" String="^[\*\+\-]\s"/>
--        <RegExpr context="numlist" String="^[\d]+\.\s"/>
-+        <!-- Next 2 lines modified: see https://github.com/jgm/skylighting/issues/84 -->
-+        <RegExpr context="bullet" String="^[\*\+\-]\s" lookAhead="true"/>
-+        <RegExpr context="numlist" String="^[\d]+\.\s" lookAhead="true"/>
-         <RegExpr attribute="meta" String="^(Title|Author|Date|Copyright|Revision|CSS|LaTeX\ XSLT|Categories|Tags|BaseName|Excerpt):(.*)+$"/>
-         <IncludeRules context="inc"/>
+@@ -325,7 +325,6 @@
+         <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
+         <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
+         <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
+-        <RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true"/>
+         <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
+         <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
+         <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
+@@ -433,10 +432,6 @@
+         <IncludeRules context="code"/>
+         <IncludeRules context="##R Script" includeAttrib="true"/>
        </context>
+-      <context attribute="Normal Text" lineEndContext="#stay" name="raku-code">
+-        <IncludeRules context="code"/>
+-        <IncludeRules context="base##Raku" includeAttrib="true"/>
+-      </context>
+       <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
+         <IncludeRules context="code"/>
+         <IncludeRules context="##reStructuredText" includeAttrib="true"/>
diff --git a/xml/mathematica.xml b/xml/mathematica.xml
--- a/xml/mathematica.xml
+++ b/xml/mathematica.xml
@@ -1,12 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Mathematica" version="9" kateversion="3.4" section="Scientific" extensions="*.nb" indenter="cstyle"
+<language name="Mathematica" version="10" kateversion="5.0" section="Scientific"
+          extensions="*.nb" mimetype="application/mathematica;application/vnd.wolfram.mathematica" indenter="cstyle"
           author="Sven Brauch (svenbrauch@gmail.com)" license="LGPL" priority="3">
   <highlighting>
+
     <list name="functions">
       <item>A</item>
       <item>AbelianGroup</item>
-      <item>All</item>
       <item>ArcSinh</item>
       <item>Abort</item>
       <item>AllowGroupClose</item>
@@ -94,7 +95,6 @@
       <item>AutoItalicWords</item>
       <item>AiryBiPrime</item>
       <item>AppendTo</item>
-      <item>Automatic</item>
       <item>AiryBiZero</item>
       <item>Apply</item>
       <item>AutoMultiplicationSymbol</item>
@@ -116,7 +116,6 @@
       <item>AlgebraicNumberTrace</item>
       <item>ArcCsch</item>
       <item>AxesLabel</item>
-      <item>Algebraics</item>
       <item>ArcSec</item>
       <item>AxesOrigin</item>
       <item>AlgebraicUnitQ</item>
@@ -142,7 +141,6 @@
       <item>BooleanMinterms</item>
       <item>Backward</item>
       <item>BilateralFilter</item>
-      <item>Booleans</item>
       <item>Band</item>
       <item>Binarize</item>
       <item>BooleanTable</item>
@@ -366,6 +364,7 @@
       <item>CellFrame</item>
       <item>ColorSeparate</item>
       <item>CoordinatesToolOptions</item>
+      <item>CellFrameColor</item>
       <item>CellFrameMargins</item>
       <item>ColorSetter</item>
       <item>CoprimeQ</item>
@@ -430,7 +429,6 @@
       <item>Complex</item>
       <item>CountryData</item>
       <item>Character</item>
-      <item>Complexes</item>
       <item>Covariance</item>
       <item>CharacterEncoding</item>
       <item>ComplexExpand</item>
@@ -910,7 +908,6 @@
       <item>FactorTermsList</item>
       <item>FindMaxValue</item>
       <item>FourierSinCoefficient</item>
-      <item>False</item>
       <item>FindMinimum</item>
       <item>FourierSinSeries</item>
       <item>FeedbackType</item>
@@ -1008,7 +1005,6 @@
       <item>FrontEndTokenExecute</item>
       <item>Find</item>
       <item>FontFamily</item>
-      <item>Full</item>
       <item>FindArgMax</item>
       <item>FontSize</item>
       <item>FullDefinition</item>
@@ -1260,7 +1256,6 @@
       <item>Information</item>
       <item>InverseErfc</item>
       <item>ImageClip</item>
-      <item>Inherited</item>
       <item>InverseFourier</item>
       <item>ImageColorSpace</item>
       <item>Initialization</item>
@@ -1350,7 +1345,6 @@
       <item>IntegerQ</item>
       <item>InverseWaveletTransform</item>
       <item>ImageRotate</item>
-      <item>Integers</item>
       <item>InverseWeierstrassP</item>
       <item>ImageScaled</item>
       <item>IntegerString</item>
@@ -1683,7 +1677,6 @@
       <item>MantissaExponent</item>
       <item>MaxStepSize</item>
       <item>Modal</item>
-      <item>Manual</item>
       <item>MaxValue</item>
       <item>ModularLambda</item>
       <item>Map</item>
@@ -1875,7 +1868,6 @@
       <item>NSum</item>
       <item>NextPrime</item>
       <item>NotebookSelection</item>
-      <item>Null</item>
       <item>NHoldAll</item>
       <item>NotebookWrite</item>
       <item>NullRecords</item>
@@ -1927,7 +1919,6 @@
       <item>NonConstants</item>
       <item>NotLess</item>
       <item>NumberPadding</item>
-      <item>None</item>
       <item>NotLessEqual</item>
       <item>NumberPoint</item>
       <item>NonlinearModelFit</item>
@@ -1952,6 +1943,7 @@
       <item>NotNestedLessLess</item>
       <item>NumericQ</item>
       <item>NormalDistribution</item>
+      <item>Nothing</item>
       <item>NotPrecedes</item>
       <item>NyquistGridLines</item>
       <item>Normalize</item>
@@ -2122,7 +2114,6 @@
       <item>PrimeQ</item>
       <item>ParallelTable</item>
       <item>PlotRange</item>
-      <item>Primes</item>
       <item>ParallelTry</item>
       <item>PlotRangeClipping</item>
       <item>PrimeZetaP</item>
@@ -2324,7 +2315,6 @@
       <item>Rationalize</item>
       <item>RescalingTransform</item>
       <item>RootSum</item>
-      <item>Rationals</item>
       <item>ResetDirectory</item>
       <item>Rotate</item>
       <item>Ratios</item>
@@ -2363,7 +2353,6 @@
       <item>RealExponent</item>
       <item>ReverseBiorthogonalSplineWavelet</item>
       <item>RowLines</item>
-      <item>Reals</item>
       <item>ReverseElement</item>
       <item>RowMinHeight</item>
       <item>Reap</item>
@@ -2856,7 +2845,6 @@
       <item>TrimmedMean</item>
       <item>Thin</item>
       <item>TotalVariationFilter</item>
-      <item>True</item>
       <item>Thinning</item>
       <item>TotalWidth</item>
       <item>TrueQ</item>
@@ -3080,6 +3068,8 @@
       <item>ZipfDistribution</item>
       <item>Zeta</item>
       <item>ZTest</item>
+    </list>
+    <list name="variables">
       <item>$</item>
       <item>$Aborted</item>
       <item>$Inspector</item>
@@ -3198,32 +3188,133 @@
       <item>$InputFileName</item>
       <item>$Output</item>
     </list>
+
+    <list name="option_values">
+      <item>True</item>
+      <item>False</item>
+      <item>Automatic</item>
+      <item>All</item>
+      <item>None</item>
+      <item>Full</item>
+      <item>Inherited</item>
+      <item>Manual</item>
+      <item>Null</item>
+      <item>Anonymous</item>
+    </list>
+
+    <list name="domains">
+      <item>Reals</item>
+      <item>Integers</item>
+      <item>Complexes</item>
+      <item>Algebraics</item>
+      <item>Primes</item>
+      <item>Rationals</item>
+      <item>Booleans</item>
+      <item>PositiveReals</item>
+      <item>NegativeReals</item>
+      <item>NonNegativeReals</item>
+      <item>NonPositiveReals</item>
+      <item>PositiveRationals</item>
+      <item>NegativeRationals</item>
+      <item>NonNegativeRationals</item>
+      <item>NonPositiveRationals</item>
+      <item>PositiveIntegers</item>
+      <item>NegativeIntegers</item>
+      <item>NonNegativeIntegers</item>
+      <item>NonPositiveIntegers</item>
+    </list>
+
     <contexts>
+
       <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-	<keyword attribute="function" String="functions" context="#stay"/>
-	<Int attribute="Int" context="#stay" />
-	<Float attribute="Float" context="#stay" />
-	<RegExpr attribute="Parameter" String="[a-zA-Z_0-9]+\_" context="#stay"/>
-	<RegExpr attribute="Replace" String="(\-\>|\/\.)" context="#stay"/>
-	<AnyChar attribute="Operator" String="+*/%\|-^" context="#stay"/>
-	<RegExpr attribute="Assign" String="(:=|=)" context="#stay"/>
+        <keyword attribute="Option Value" String="option_values" context="#stay"/>
+        <keyword attribute="Domain" String="domains" context="#stay"/>
+        <keyword attribute="Function" String="functions" context="#stay"/>
+        <keyword attribute="Variable" String="variables" context="#stay"/>
+
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Int" context="#stay"/>
+
+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*Beginning of Notebook Content\s*\*+\)" context="#stay" insensitive="true" beginRegion="NotebookContent"/>
+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*End of Notebook Content\s*\*+\)" context="#stay" insensitive="true" endRegion="NotebookContent"/>
+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*Internal cache information\s*\*+\)" context="#stay" insensitive="true" beginRegion="CacheInformation"/>
+        <RegExpr attribute="Comment: Region Marker" String="\(\*+\s*End of internal cache information\s*\*+\)" context="#stay" insensitive="true" endRegion="CacheInformation"/>
+        <Detect2Chars attribute="Comment" char="(" char1="*" context="Comment" beginRegion="Comment"/>
+
+        <DetectChar attribute="String" char="&quot;" context="String"/>
+        <Detect2Chars attribute="Replace" char="-" char1="&gt;" context="#stay"/>
+        <Detect2Chars attribute="Replace" char="/" char1="." context="#stay"/>
+        <Detect2Chars attribute="Assign" char=":" char1="=" context="#stay"/>
+        <DetectChar attribute="Assign" char="=" context="#stay"/>
+        <AnyChar attribute="Math Operator" String="+*/%\|-^" context="#stay"/>
+        <DetectChar attribute="Bracket" char="[" context="#stay" beginRegion="List"/>
+        <DetectChar attribute="Bracket" char="]" context="#stay" endRegion="List"/>
+        <DetectChar attribute="Bracket" char="{" context="#stay" beginRegion="Brace"/>
+        <DetectChar attribute="Bracket" char="}" context="#stay" endRegion="Brace"/>
+        <DetectChar attribute="Bracket" char="," context="#stay"/>
+
+        <RegExpr attribute="Parameter" String="[a-zA-Z_0-9]+\_" context="#stay"/>
       </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" char="*" char1=")" context="#pop" endRegion="Comment"/>
+        <WordDetect attribute="Comment: Annotation" String="Content-type:" context="#stay"/>
+        <WordDetect attribute="Comment: Annotation" String="CacheID:" context="CommentCacheId"/>
+        <WordDetect attribute="Comment: Annotation" String="Internal cache information:" context="#stay"/>
+        <RegExpr attribute="Comment: Annotation" String="\bCreatedBy\s*\=\s*" context="CommentCreatedBy"/>
+        <WordDetect attribute="Comment: File Title" String="Wolfram Notebook File" context="#stay" insensitive="true"/>
+        <WordDetect attribute="Comment: File Title" String="http://www.wolfram.com/nb" context="#stay" insensitive="true"/>
+
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
+      <context name="CommentCreatedBy" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <RegExpr attribute="String" context="#pop" String="'(?:[^'\*]|\*+[^'\*\)])*\*?'"/>
+        <RegExpr attribute="String" context="#pop" String="&quot;(?:[^&quot;\*]|\*+[^&quot;\*\)])*\*?&quot;"/>
+      </context>
+      <context name="CommentCacheId" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <Int attribute="Int" context="#pop"/>
+      </context>
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar attribute="String" char="&quot;" context="#pop"/>
+        <DetectChar attribute="Escape" context="Escape" char="\"/>
+      </context>
+      <context name="Escape" attribute="Escape" lineEndContext="#pop">
+        <RegExpr attribute="Escape" context="#pop" String="." />
+      </context>
+
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="function" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Comment: Annotation" defStyleNum="dsAnnotation" spellChecking="false"/>
+      <itemData name="Comment: File Title" defStyleNum="dsComment" underline="1" spellChecking="false"/>
+      <itemData name="Comment: Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+
+      <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Option Value" defStyleNum="dsConstant" bold="1" spellChecking="false"/>
+      <itemData name="Domain" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Parameter" defStyleNum="dsAttribute" italic="1" spellChecking="false"/>
+
       <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
       <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
-      <itemData name="Parameter" italic="1" defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="Operator" defStyleNum="dsNormal" color="#FF7B00" spellChecking="false"/>
-      <itemData name="Assign" defStyleNum="dsNormal" color="#00A0E4" spellChecking="false"/>
-      <itemData name="Replace" defStyleNum="dsNormal" color="#85C200" spellChecking="false"/>
+      <itemData name="Math Operator" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Assign" defStyleNum="dsExtension" bold="1" spellChecking="false"/>
+      <itemData name="Replace" defStyleNum="dsOthers" bold="1" spellChecking="false"/>
+      <itemData name="Bracket" defStyleNum="dsOperator" spellChecking="false"/>
+
+      <itemData name="String" defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
-    <keywords casesensitive="0" weakDeliminator="-%"/>
+    <keywords casesensitive="0" weakDeliminator="$" additionalDeliminator="`"/>
     <comments>
-      <comment name="multiLine" start="(*" end="*)" />
+      <comment name="multiLine" start="(*" end="*)" region="Comment"/>
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/matlab.xml b/xml/matlab.xml
--- a/xml/matlab.xml
+++ b/xml/matlab.xml
@@ -56,8 +56,8 @@
 -->
 
 <!DOCTYPE language SYSTEM "language.dtd">
-
-<language name="Matlab" version="3" kateversion="5.0" section="Scientific" extensions="*.m;*.M" mimetype="text/mfile" casesensitive="1">
+<!-- low priority to let Objective-C win for .m files per default -->
+<language name="Matlab" version="6" kateversion="5.0" section="Scientific" extensions="*.m;*.M" priority="-9" mimetype="text/mfile" casesensitive="1">
   <highlighting>
 
     <!-- Reserved keywords in MATLAB -->
@@ -105,8 +105,8 @@
 
         <!-- Handling of keywords, comments, system commands, identifiers, numbers and braces -->
         <keyword context="#stay" attribute="Keyword" String="KeywordsList" />
-        <RegExpr context="#stay" attribute="Comment" String="%.*$" />
-        <RegExpr context="#stay" attribute="System" String="!.*$" />
+        <DetectChar context="Comment" attribute="Comment" char="%" />
+        <DetectChar context="System" attribute="System" char="!" />
         <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
         <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
@@ -134,6 +134,14 @@
         <RegExpr context="#pop" attribute="Operator" String="'+" />
       </context>
 
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
+
+      <context name="System" attribute="System" lineEndContext="#pop"/>
+
     </contexts>
 
     <itemDatas>
@@ -155,9 +163,10 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="% " />
+      <comment name="singleLine" start="%" />
     </comments>
     <keywords casesensitive="1" weakDeliminator=""/>
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/maxima.xml b/xml/maxima.xml
--- a/xml/maxima.xml
+++ b/xml/maxima.xml
@@ -21,7 +21,7 @@
 
 <!DOCTYPE language SYSTEM "language.dtd">
 
-<language name="Maxima" version="4" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">
+<language name="Maxima" version="5" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">
     <highlighting>
 
         <list name="MaximaKeyword">
@@ -42,11 +42,6 @@
             <item>while</item>
         </list>
 
-        <list name="SpecialComment">
-            <item>FIXME</item>
-            <item>TODO</item>
-        </list>
-
         <list name="MaximaFunction">
             <item>abasep</item>
             <item>abs</item>
@@ -1871,9 +1866,10 @@
             </context>
 
             <context attribute="Comment" lineEndContext="#stay" name="Comment">
-                <keyword attribute="Special" String="SpecialComment"/>
                 <DetectSpaces/>
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment"/>
+                <IncludeRules context="##Alerts"/>
+                <IncludeRules context="##Modelines"/>
             </context>
         </contexts>
 
@@ -1888,16 +1884,16 @@
             <itemData name="Float" defStyleNum="dsFloat"/>
             <itemData name="Comment" defStyleNum="dsComment"/>
             <itemData name="Quote" defStyleNum="dsDocumentation" bold="true"/>
-            <itemData name="Special" defStyleNum="dsSpecialString" bold="true" />
         </itemDatas>
 
     </highlighting>
 
     <general>
         <comments>
-            <comment name="multiLine" start="/*" end="*/"/>
+            <comment name="multiLine" start="/*" end="*/" region="comment"/>
         </comments>
         <keywords casesensitive="true" weakDeliminator="%" additionalDeliminator="@#"/>
     </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml
--- a/xml/mediawiki.xml
+++ b/xml/mediawiki.xml
@@ -6,7 +6,7 @@
   <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">
   <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]">
 ]>
-<language name="MediaWiki" section="Markup" version="7" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="8" kateversion="5.0" extensions="*.mediawiki" mimetype="" license="FDL" >
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
@@ -37,7 +37,7 @@
         <IncludeRules context="FindHtmlStartTagAttributes" />
       </context>
       <context name="TableContent" attribute="Normal" lineEndContext="#stay">
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" />
+        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
         <RegExpr String="[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
         <RegExpr String="[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
         <RegExpr String="[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
@@ -143,6 +143,9 @@
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="comment" >
         <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Link" lineEndContext="#stay" name="DelimitedURL" >
         <DetectChar char="]" context="#pop" attribute="WikiTag" />
@@ -623,8 +626,9 @@
   </highlighting>
   <general>
     <comments>
-      <comment end="//-->" start="&lt;!--" name="multiLine" />
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
     </comments>
     <keywords casesensitive="0" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/metafont.xml b/xml/metafont.xml
--- a/xml/metafont.xml
+++ b/xml/metafont.xml
@@ -6,7 +6,7 @@
 -->
 
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Metapost/Metafont" section="Markup" version="6" kateversion="5.0"
+<language name="Metapost/Metafont" section="Markup" version="7" kateversion="5.0"
 extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost" 
 author="Yedvilun (yedvilun@gmail.com)" license="LGPL">
   <highlighting>
@@ -940,8 +940,10 @@
 
       <!-- comment -->
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
+        <IncludeRules context="##Modelines" />
       </context>
 
 </contexts>
@@ -977,10 +979,10 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="%"/>
+      <comment name="singleLine" start="%" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="0" />
 
   </general>
 </language>
-
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/mips.xml b/xml/mips.xml
--- a/xml/mips.xml
+++ b/xml/mips.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="MIPS Assembler" version="3" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">
+<language name="MIPS Assembler" version="5" kateversion="2.4" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">
   <highlighting>
     <list name="type">
       <item>.align</item>
@@ -317,7 +317,7 @@
         <keyword attribute="Section" context="#stay" String="type"/>
         <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>
         <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="region" firstNonSpace="true"/>
-        <RegExpr attribute="Comment" context="#stay" String="#.*$" />
+        <DetectChar attribute="Comment" context="Comment" char="#" />
         <RegExpr attribute="Label" context="#stay" String="[\w_\.]+:" firstNonSpace="true"/>
         <DetectChar attribute="String" context="string" char="&quot;" />
         <Float attribute="Float" context="#stay"/>
@@ -329,6 +329,11 @@
         <RegExpr attribute="Char" context="#stay" String="\\." />
         <DetectChar attribute="String" context="#pop" char="&quot;" />
       </context>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
@@ -352,8 +357,9 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="#" />
+      <comment name="singleLine" start="#" position="afterwhitespace" />
     </comments>
     <keywords casesensitive="0" weakDeliminator="."/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/modelines.xml b/xml/modelines.xml
--- a/xml/modelines.xml
+++ b/xml/modelines.xml
@@ -8,7 +8,7 @@
   Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)
   -->
 <language name="Modelines"
-          version="5"
+          version="6"
           kateversion="5.0"
           section="Other"
           extensions=""
@@ -127,10 +127,9 @@
   </list>
 
   <contexts>
-    <context name="Normal" attribute="Comment" lineEndContext="#pop">
-      <DetectSpaces />
+    <context name="Normal" attribute="Comment" lineEndContext="#stay">
       <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />
-      <RegExpr String="kate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
+      <RegExpr String="\bkate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
     </context>
 
     <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
@@ -139,7 +138,6 @@
       <keyword String="Integrals" context="Integrals" attribute="Variable" />
       <keyword String="Strings" context="Strings" attribute="Variable" />
       <keyword String="RemoveSpaces" context="RemoveSpaces" attribute="Variable" />
-      <LineContinue context="#pop" />
     </context>
 
     <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
@@ -147,28 +145,24 @@
       <keyword String="True" attribute="Option ON" context="#stay" />
       <keyword String="False" attribute="Option OFF" context="#stay" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
-      <LineContinue context="#pop" />
     </context>
 
     <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <Int attribute="Number" context="#stay" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
-      <LineContinue context="#pop" />
     </context>
 
     <context name="Strings" attribute="String" lineEndContext="#pop">
       <DetectSpaces />
       <RegExpr String="[^&end;&space;]" context="#stay" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
-      <LineContinue context="#pop" />
     </context>
 
     <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectSpaces />
       <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
-      <LineContinue context="#pop" />
     </context>
     <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
       <DetectChar char="&end;" context="#pop" attribute="Variable" />
diff --git a/xml/modula-2.xml b/xml/modula-2.xml
--- a/xml/modula-2.xml
+++ b/xml/modula-2.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Modula-2" mimetype="text/x-modula2" version="5"
+<language name="Modula-2" mimetype="text/x-modula2" version="6"
   kateversion="2.2" section="Sources" priority="5" extensions="*.mod;*.def"
   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT">
 <!--
@@ -1111,6 +1111,9 @@
 
       <!-- Line Comment Body -->
       <context name="LineComment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <!-- Block Comment Body -->
@@ -1121,6 +1124,10 @@
         <!-- Closing Delimiter -->
         <Detect2Chars attribute="Comment" context="#pop"
           char="*" char1=")" endRegion="FoldableComment"/>
+
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
     </contexts>
 
@@ -1182,10 +1189,9 @@
   <general>
     <keywords casesensitive="1" />
     <comments>
-      <comment name="singleLine" start="!"/>
-      <comment name="multiLine" start="(*" end="*)"/>
+      <comment name="multiLine" start="(*" end="*)" region="FoldableComment"/>
     </comments>
   </general>
 </language>
-
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
 <!--EOF-->
diff --git a/xml/modula-3.xml b/xml/modula-3.xml
--- a/xml/modula-3.xml
+++ b/xml/modula-3.xml
@@ -6,259 +6,259 @@
 <!-- 04.03.2005 ik mailed version 1.01 with fixed/implemented nested comments to Dominik -->
 <!-- known bug: notation Regexp( [0-9]*\. ) should be not interpreted as neither Integer neither Real -->
 <!-- known bug: notation Regexp ( "  \" " ) is not properly interpreted -->
-<language name="Modula-3" version="1.01" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
+<language name="Modula-3" version="3" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
   <highlighting>
     <list name="keywords">
-<!--      <item> AND </item> -->
-      <item> ANY </item>
-      <item> ARRAY </item>
-      <item> AS </item>
-      <item> BEGIN </item>
-      <item> BITS </item>
-      <item> BRANDED </item>
-      <item> BY </item>
-      <item> CASE </item>
-      <item> CONST </item>
-<!--      <item> DIV </item> -->
-      <item> DO </item>
-      <item> ELSE </item>
-      <item> ELSIF </item>
-      <item> END </item>
-      <item> EVAL </item>
-      <item> EXCEPT </item>
-      <item> EXCEPTION </item>
-      <item> EXIT </item>
-      <item> EXPORTS </item>
-      <item> FINALLY </item>
-      <item> FOR </item>
-      <item> FROM </item>
-      <item> GENERIC </item>
-      <item> IF </item>
-      <item> IMPORT </item>
-<!--      <item> IN </item> -->
-      <item> INTERFACE </item>
-      <item> LOCK </item>
-      <item> LOOP </item>
-      <item> METHODS </item>
-<!--      <item> MOD </item> -->
-      <item> MODULE </item>
-<!--      <item> NOT </item> -->
-      <item> OBJECT </item>
-      <item> OF </item>
-<!--      <item> OR </item> -->
-      <item> OVERRIDES </item>
-      <item> PROCEDURE </item>
-      <item> RAISE </item>
-      <item> RAISES </item>
-      <item> READONLY </item>
-      <item> RECORD </item>
-      <item> REF </item>
-      <item> REPEAT </item>
-      <item> RETURN </item>
-      <item> REVEAL </item>
-      <item> ROOT </item>
-      <item> SET </item>
-      <item> THEN </item>
-      <item> TO </item>
-      <item> TRY </item>
-      <item> TYPE </item>
-      <item> TYPECASE </item>
-      <item> UNSAFE </item>
-      <item> UNTIL </item>
-      <item> UNTRACED </item>
-      <item> VALUE </item>
-      <item> VAR </item>
-      <item> WHILE </item>
-      <item> WITH </item>
+<!--      <item>AND</item> -->
+      <item>ANY</item>
+      <item>ARRAY</item>
+      <item>AS</item>
+      <item>BEGIN</item>
+      <item>BITS</item>
+      <item>BRANDED</item>
+      <item>BY</item>
+      <item>CASE</item>
+      <item>CONST</item>
+<!--      <item>DIV</item> -->
+      <item>DO</item>
+      <item>ELSE</item>
+      <item>ELSIF</item>
+      <item>END</item>
+      <item>EVAL</item>
+      <item>EXCEPT</item>
+      <item>EXCEPTION</item>
+      <item>EXIT</item>
+      <item>EXPORTS</item>
+      <item>FINALLY</item>
+      <item>FOR</item>
+      <item>FROM</item>
+      <item>GENERIC</item>
+      <item>IF</item>
+      <item>IMPORT</item>
+<!--      <item>IN</item> -->
+      <item>INTERFACE</item>
+      <item>LOCK</item>
+      <item>LOOP</item>
+      <item>METHODS</item>
+<!--      <item>MOD</item> -->
+      <item>MODULE</item>
+<!--      <item>NOT</item> -->
+      <item>OBJECT</item>
+      <item>OF</item>
+<!--      <item>OR</item> -->
+      <item>OVERRIDES</item>
+      <item>PROCEDURE</item>
+      <item>RAISE</item>
+      <item>RAISES</item>
+      <item>READONLY</item>
+      <item>RECORD</item>
+      <item>REF</item>
+      <item>REPEAT</item>
+      <item>RETURN</item>
+      <item>REVEAL</item>
+      <item>ROOT</item>
+      <item>SET</item>
+      <item>THEN</item>
+      <item>TO</item>
+      <item>TRY</item>
+      <item>TYPE</item>
+      <item>TYPECASE</item>
+      <item>UNSAFE</item>
+      <item>UNTIL</item>
+      <item>UNTRACED</item>
+      <item>VALUE</item>
+      <item>VAR</item>
+      <item>WHILE</item>
+      <item>WITH</item>
     </list>
     <list name="operators">
-      <item> AND </item> 
-      <item> DIV </item> 
-      <item> IN </item> 
-      <item> MOD </item>
-      <item> NOT </item>
-      <item> OR </item>
-      <item> + </item>
-      <item> &lt; </item>
-      <item> # </item>
-      <item> = </item>
-      <item> ; </item>
-      <item> .. </item>
-      <item> : </item>
-      <item> - </item>
-      <item> &gt; </item>
-      <item> { </item>
-      <item> } </item>
-      <item> | </item>
-      <item> := </item>
-      <item> &lt;: </item>
-      <item> * </item>
-      <item> &lt;= </item>
-      <item> ( </item>
-      <item> ) </item>
-      <item> ^ </item>
-      <item> , </item>
-      <item> =&gt; </item>
-      <item> / </item>
-      <item> &gt;= </item>
-      <item> [ </item>
-      <item> ] </item>
-      <item> . </item>
-      <item> &amp; </item>
+      <item>AND</item>
+      <item>DIV</item>
+      <item>IN</item>
+      <item>MOD</item>
+      <item>NOT</item>
+      <item>OR</item>
+      <item>+</item>
+      <item>&lt;</item>
+      <item>#</item>
+      <item>=</item>
+      <item>;</item>
+      <item>..</item>
+      <item>:</item>
+      <item>-</item>
+      <item>&gt;</item>
+      <item>{</item>
+      <item>}</item>
+      <item>|</item>
+      <item>:=</item>
+      <item>&lt;:</item>
+      <item>*</item>
+      <item>&lt;=</item>
+      <item>(</item>
+      <item>)</item>
+      <item>^</item>
+      <item>,</item>
+      <item>=&gt;</item>
+      <item>/</item>
+      <item>&gt;=</item>
+      <item>[</item>
+      <item>]</item>
+      <item>.</item>
+      <item>&amp;</item>
     </list>
     <list name="types">
-      <item> ADDRESS </item>
-      <item> BOOLEAN </item>
-      <item> CARDINAL </item>
-      <item> CHAR </item>
-      <item> EXTENDED </item>
-      <item> INTEGER </item>
-      <item> LONGREAL </item>
-      <item> MUTEX </item>
-      <item> NULL </item>
-      <item> REAL </item>
-      <item> REFANY </item>
-      <item> T </item>
-      <item> TEXT </item>
+      <item>ADDRESS</item>
+      <item>BOOLEAN</item>
+      <item>CARDINAL</item>
+      <item>CHAR</item>
+      <item>EXTENDED</item>
+      <item>INTEGER</item>
+      <item>LONGREAL</item>
+      <item>MUTEX</item>
+      <item>NULL</item>
+      <item>REAL</item>
+      <item>REFANY</item>
+      <item>T</item>
+      <item>TEXT</item>
     </list>
     <list name="constants">
-      <item> FALSE </item>
-      <item> NIL </item>
-      <item> TRUE </item>
+      <item>FALSE</item>
+      <item>NIL</item>
+      <item>TRUE</item>
     </list>
     <list name="pervasives">
-      <item> ABS </item>
-      <item> ADR </item>
-      <item> ADRSIZE </item>
-      <item> BITSIZE </item>
-      <item> BYTESIZE </item>
-      <item> CEILING </item>
-      <item> DEC </item>
-      <item> DISPOSE </item>
-      <item> FIRST </item>
-      <item> FLOAT </item>
-      <item> FLOOR </item>
-      <item> INC </item>
-      <item> ISTYPE </item>
-      <item> LAST </item>
-      <item> LOOPHOLE </item>
-      <item> MAX </item>
-      <item> MIN </item>
-      <item> NARROW </item>
-      <item> NEW </item>
-      <item> NUMBER </item>
-      <item> ORD </item>
-      <item> ROUND </item>
-      <item> SUBARRAY </item>
-      <item> TRUNC </item>
-      <item> TYPECODE </item>
-      <item> VAL </item>
+      <item>ABS</item>
+      <item>ADR</item>
+      <item>ADRSIZE</item>
+      <item>BITSIZE</item>
+      <item>BYTESIZE</item>
+      <item>CEILING</item>
+      <item>DEC</item>
+      <item>DISPOSE</item>
+      <item>FIRST</item>
+      <item>FLOAT</item>
+      <item>FLOOR</item>
+      <item>INC</item>
+      <item>ISTYPE</item>
+      <item>LAST</item>
+      <item>LOOPHOLE</item>
+      <item>MAX</item>
+      <item>MIN</item>
+      <item>NARROW</item>
+      <item>NEW</item>
+      <item>NUMBER</item>
+      <item>ORD</item>
+      <item>ROUND</item>
+      <item>SUBARRAY</item>
+      <item>TRUNC</item>
+      <item>TYPECODE</item>
+      <item>VAL</item>
     </list>
     <list name="stdlibs">
-      <item> Text </item>
-      <item> Text.Length </item>
-      <item> Text.Empty </item>
-      <item> Text.Equal </item>
-      <item> Text.Compare </item>
-      <item> Text.Cat </item>
-      <item> Text.Sub </item>
-      <item> Text.Hash </item>
-      <item> Text.HasWideChar </item>
-      <item> Text.GetChar </item>
-      <item> Text.GetWideChar </item>
-      <item> Text.SetChars </item>
-      <item> Text.SetWideChars </item>
-      <item> Text.FromChars </item>
-      <item> Text.FromWideChars </item>
-      <item> Text.FindChar </item>
-      <item> Text.FindWideChar </item>
-      <item> Text.FindCharR </item>
-      <item> Text.FindWideCharR </item>
-      <item> Fmt </item>
-      <item> Fmt.Bool </item>
-      <item> Fmt.Char </item>
-      <item> Fmt.Int </item>
-      <item> Fmt.Unsigned </item>
-      <item> Fmt.Real </item>
-      <item> Fmt.LongReal </item>
-      <item> Fmt.Extended </item>
-      <item> Fmt.Pad </item>
-      <item> Fmt.F </item>
-      <item> Fmt.FN </item>
-      <item> Scan </item>
-      <item> Scan.Bool </item>
-      <item> Scan.Int </item>
-      <item> Scan.Unsigned </item>
-      <item> Scan.Real </item>
-      <item> Scan.LongReal </item>
-      <item> Scan.Extended </item>
-      <item> IO </item>
-      <item> IO.Put </item>
-      <item> IO.PutChar </item>
-      <item> IO.PutWideChar </item>
-      <item> IO.PutInt </item>
-      <item> IO.PutReal </item>
-      <item> IO.EOF </item>
-      <item> IO.GetLine </item>
-      <item> IO.GetChar </item>
-      <item> IO.GetWideChar </item>
-      <item> IO.GetInt </item>
-      <item> IO.GetReal </item>
-      <item> IO.OpenRead </item>
-      <item> IO.OpenWrite </item>
-      <item> Rd </item>
-      <item> Rd.GetChar </item>
-      <item> Rd.GetWideChar </item>
-      <item> Rd.EOF </item>
-      <item> Rd.UnGetChar </item>
-      <item> Rd.CharsReady </item>
-      <item> Rd.GetSub </item>
-      <item> Rd.GetWideSub </item>
-      <item> Rd.GetSubLine </item>
-      <item> Rd.GetWideSubLine </item>
-      <item> Rd.GetText </item>
-      <item> Rd.GetWideText </item>
-      <item> Rd.GetLine </item>
-      <item> Rd.GetWideLine </item>
-      <item> Rd.Seek </item>
-      <item> Rd.Close </item>
-      <item> Rd.Index </item>
-      <item> Rd.Length </item>
-      <item> Rd.Intermittend </item>
-      <item> Rd.Seekable </item>
-      <item> Rd.Closed </item>
-      <item> Wr </item>
-      <item> Wr.PutChar </item>
-      <item> Wr.PutWideChar </item>
-      <item> Wr.PutText </item>
-      <item> Wr.PutWideText </item>
-      <item> Wr.PutString </item>
-      <item> Wr.PutWideString </item>
-      <item> Wr.Seek </item>
-      <item> Wr.Flush </item>
-      <item> Wr.Close </item>
-      <item> Wr.Length </item>
-      <item> Wr.Index </item>
-      <item> Wr.Seekable </item>
-      <item> Wr.Closed </item>
-      <item> Wr.Buffered </item>
-      <item> Lex </item>
-      <item> Lex.Scan </item>
-      <item> Lex.Skip </item>
-      <item> Lex.Match </item>
-      <item> Lex.Bool </item>
-      <item> Lex.Int </item>
-      <item> Lex.Unsigned </item>
-      <item> Lex.Real </item>
-      <item> Lex.LongReal </item>
-      <item> Lex.Extended </item>
-      <item> Params </item>
-      <item> Params.Count </item>
-      <item> Params.Get </item>
-      <item> Env </item>
-      <item> Env.Count </item>
-      <item> Env.Get </item>
-      <item> Env.GetNth </item>
+      <item>Text</item>
+      <item>Text.Length</item>
+      <item>Text.Empty</item>
+      <item>Text.Equal</item>
+      <item>Text.Compare</item>
+      <item>Text.Cat</item>
+      <item>Text.Sub</item>
+      <item>Text.Hash</item>
+      <item>Text.HasWideChar</item>
+      <item>Text.GetChar</item>
+      <item>Text.GetWideChar</item>
+      <item>Text.SetChars</item>
+      <item>Text.SetWideChars</item>
+      <item>Text.FromChars</item>
+      <item>Text.FromWideChars</item>
+      <item>Text.FindChar</item>
+      <item>Text.FindWideChar</item>
+      <item>Text.FindCharR</item>
+      <item>Text.FindWideCharR</item>
+      <item>Fmt</item>
+      <item>Fmt.Bool</item>
+      <item>Fmt.Char</item>
+      <item>Fmt.Int</item>
+      <item>Fmt.Unsigned</item>
+      <item>Fmt.Real</item>
+      <item>Fmt.LongReal</item>
+      <item>Fmt.Extended</item>
+      <item>Fmt.Pad</item>
+      <item>Fmt.F</item>
+      <item>Fmt.FN</item>
+      <item>Scan</item>
+      <item>Scan.Bool</item>
+      <item>Scan.Int</item>
+      <item>Scan.Unsigned</item>
+      <item>Scan.Real</item>
+      <item>Scan.LongReal</item>
+      <item>Scan.Extended</item>
+      <item>IO</item>
+      <item>IO.Put</item>
+      <item>IO.PutChar</item>
+      <item>IO.PutWideChar</item>
+      <item>IO.PutInt</item>
+      <item>IO.PutReal</item>
+      <item>IO.EOF</item>
+      <item>IO.GetLine</item>
+      <item>IO.GetChar</item>
+      <item>IO.GetWideChar</item>
+      <item>IO.GetInt</item>
+      <item>IO.GetReal</item>
+      <item>IO.OpenRead</item>
+      <item>IO.OpenWrite</item>
+      <item>Rd</item>
+      <item>Rd.GetChar</item>
+      <item>Rd.GetWideChar</item>
+      <item>Rd.EOF</item>
+      <item>Rd.UnGetChar</item>
+      <item>Rd.CharsReady</item>
+      <item>Rd.GetSub</item>
+      <item>Rd.GetWideSub</item>
+      <item>Rd.GetSubLine</item>
+      <item>Rd.GetWideSubLine</item>
+      <item>Rd.GetText</item>
+      <item>Rd.GetWideText</item>
+      <item>Rd.GetLine</item>
+      <item>Rd.GetWideLine</item>
+      <item>Rd.Seek</item>
+      <item>Rd.Close</item>
+      <item>Rd.Index</item>
+      <item>Rd.Length</item>
+      <item>Rd.Intermittend</item>
+      <item>Rd.Seekable</item>
+      <item>Rd.Closed</item>
+      <item>Wr</item>
+      <item>Wr.PutChar</item>
+      <item>Wr.PutWideChar</item>
+      <item>Wr.PutText</item>
+      <item>Wr.PutWideText</item>
+      <item>Wr.PutString</item>
+      <item>Wr.PutWideString</item>
+      <item>Wr.Seek</item>
+      <item>Wr.Flush</item>
+      <item>Wr.Close</item>
+      <item>Wr.Length</item>
+      <item>Wr.Index</item>
+      <item>Wr.Seekable</item>
+      <item>Wr.Closed</item>
+      <item>Wr.Buffered</item>
+      <item>Lex</item>
+      <item>Lex.Scan</item>
+      <item>Lex.Skip</item>
+      <item>Lex.Match</item>
+      <item>Lex.Bool</item>
+      <item>Lex.Int</item>
+      <item>Lex.Unsigned</item>
+      <item>Lex.Real</item>
+      <item>Lex.LongReal</item>
+      <item>Lex.Extended</item>
+      <item>Params</item>
+      <item>Params.Count</item>
+      <item>Params.Get</item>
+      <item>Env</item>
+      <item>Env.Count</item>
+      <item>Env.Get</item>
+      <item>Env.GetNth</item>
     </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
@@ -285,6 +285,9 @@
       <context attribute="Comment" lineEndContext="#stay" name="Comment2">
         <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Pragma" lineEndContext="#stay" name="Prep1">
         <Detect2Chars attribute="Pragma" context="#pop" char="*" char1="&gt;"/>
@@ -309,7 +312,8 @@
   <general>
     <keywords casesensitive="1" weakDeliminator="."/>
     <comments>
-      <comment name="multiLine" start="(*" end="*)"/>
+      <comment name="multiLine" start="(*" end="*)" region="Comment"/>
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/monobasic.xml b/xml/monobasic.xml
--- a/xml/monobasic.xml
+++ b/xml/monobasic.xml
@@ -10,7 +10,7 @@
     License: GNU General Public License
 -->
 
-<language name="MonoBasic" section="Sources" version="3" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">
+<language name="MonoBasic" section="Sources" version="4" kateversion="2.3" extensions="*.vb" mimetype="" author="Davide Bettio (davide.bettio@kdemail.net)" license="GPL">
   <highlighting>
      <list name="keywords">
         <item>Option</item>
@@ -192,7 +192,11 @@
          <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
 
-      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+         <DetectSpaces />
+         <IncludeRules context="##Alerts"/>
+         <IncludeRules context="##Modelines"/>
+      </context>
     </contexts>
 
     <itemDatas>
diff --git a/xml/mustache.xml b/xml/mustache.xml
--- a/xml/mustache.xml
+++ b/xml/mustache.xml
@@ -36,13 +36,14 @@
     (via IncludeRules) in the HTML highlighter.
 
     Change log:
+     * v5 [2020-08-15]: Use Handlebars comment en the <comments> group.
      * v3 [2019-10-03]: Minor fixes.
      * v2 [2019-02-24]: Also highlight template files (HTML).
                         Improve support for Handlebars.
      * v1 [2019-02-10]: Initial version
 -->
 
-<language name="Mustache/Handlebars (HTML)" version="4" kateversion="5.44"
+<language name="Mustache/Handlebars (HTML)" version="5" kateversion="5.44"
           section="Markup" priority="1" mimetype=""
           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"
           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"
@@ -92,7 +93,7 @@
 			<RegExpr context="#pop!MustacheVariableBlockEndFolding" attribute="Mustache Block" String="\{\{~?/\s*&identifier;\b" />
 			<RegExpr context="#pop!MustacheVariableBlock" attribute="Mustache Block" String="\{\{~?[#\^/]" />
 			<!-- Comments -->
-			<StringDetect context="#pop!MustacheBlockComment" attribute="Comment" String="{{!--" beginRegion="MustacheBlockComment" /> <!-- Handlebars -->
+			<StringDetect context="#pop!HandlebarsInlineComment" attribute="Comment" String="{{!--" beginRegion="HandlebarsInlineComment" /> <!-- Handlebars -->
 			<StringDetect context="#pop!MustacheInlineComment" attribute="Comment" String="{{!" beginRegion="MustacheInlineComment" />
 			<!-- Variables -->
 			<StringDetect context="#pop!MustachePartial" attribute="Mustache Variable" String="{{&lt;" />
@@ -161,13 +162,17 @@
 			<RegExpr context="#pop" attribute="Number" String="\d+(?=[\s\}\)\]]|$)" />
 		</context>
 
-		<context name="MustacheBlockComment" attribute="Comment" lineEndContext="#stay">
-			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="MustacheBlockComment" />
+		<context name="HandlebarsInlineComment" attribute="Comment" lineEndContext="#stay">
+			<StringDetect context="#pop" attribute="Comment" String="--}}" endRegion="HandlebarsInlineComment" />
+			<DetectSpaces />
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 		</context>
 		<context name="MustacheInlineComment" attribute="Comment" lineEndContext="#stay">
 			<Detect2Chars context="#pop" attribute="Comment" char="}" char1="}" endRegion="MustacheInlineComment" />
+			<DetectSpaces />
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 		</context>
 
 		<!-- Tags -->
@@ -274,7 +279,9 @@
 			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" />
 			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
 			<IncludeRules context="MustacheVariables" />
+			<DetectSpaces />
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 		</context>
 
 		<context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
@@ -380,6 +387,8 @@
 		</context>
 		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop">
 			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<DetectSpaces />
+			<IncludeRules context="##Alerts" />
 		</context>
 
 		<!-- Overwrite some rules of 'javascript.xml' to add Mustache variables -->
@@ -463,7 +472,7 @@
 
 <general>
 	<comments>
-		<comment name="multiLine" start="{{!" end="}}" region="MustacheInlineComment" />
+		<comment name="multiLine" start="{{!--" end="--}}" region="HandlebarsInlineComment" />
 	</comments>
 </general>
 
diff --git a/xml/nasm.xml b/xml/nasm.xml
--- a/xml/nasm.xml
+++ b/xml/nasm.xml
@@ -1,5 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+    <!ENTITY float1 "0x[0-9a-f_]*+(?:(?:\.[0-9a-f_]*+)?p[-+]?[0-9_]++|\.[0-9a-f_]*+)">
+    <!ENTITY float2 "0++p([0-9][0-9_]*+)?">
+    <!ENTITY float3 "[0-9][0-9_]*+(?:\.(?!nolist)[0-9_]*+(?:e[-+]?[0-9_]*+)?|(?=p))">
+    <!ENTITY float "&float1;|&float2;|&float3;">
+
+    <!ENTITY prefixed16 "0[hx][0-9a-f_]++">
+    <!ENTITY prefixed8 "0[oq][0-7_]++">
+    <!ENTITY prefixed2 "0b[01_]++\b|0y[01_]++">
+    <!ENTITY prefixed10 "0d[0-9_]++\b|0t[0-9_]++">
+    <!ENTITY prefixedBaseN "&prefixed16;|&prefixed8;|&prefixed2;|&prefixed10;">
+
+    <!ENTITY hex_cont "[0-9a-f_]*+(?=[hx])">
+    <!ENTITY oct_hex_cont "[0-7_]*+(?:&hex_cont;|(?=[oqhx]))">
+    <!ENTITY hex "[0-9]&hex_cont;">
+    <!ENTITY oct_hex "[0-7]&oct_hex_cont;">
+    <!ENTITY bin_oct_hex "[01][01_]*+(?:&oct_hex_cont;|(?=[byoqhx]))">
+    <!ENTITY baseN "&bin_oct_hex;|&oct_hex;|&hex;">
+
+    <!ENTITY number "[0-9][0-9_]*+(to[0-9]+|(?=[dt]))?">
+]>
 <!--
   NASM Intel x86 assembly syntax
 
@@ -40,7 +61,7 @@
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 -->
-<language name="Intel x86 (NASM)" section="Assembler" version="4" kateversion="2.3" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
+<language name="Intel x86 (NASM)" section="Assembler" version="6" kateversion="5.62" extensions="*.asm" mimetype="" author="Nicola Gigante (nicola.gigante@gmail.com)" license="GPLv2+">
   <highlighting>
     <list name="registers">
       <!-- General purpose registers -->
@@ -248,6 +269,7 @@
       <item>zmm30</item>
       <item>zmm31</item>
     </list>
+
     <list name="instructions">
       <item>aaa</item>
       <item>aad</item>
@@ -309,7 +331,6 @@
       <item>btr</item>
       <item>bts</item>
       <item>bzhi</item>
-      <item>call</item>
       <item>cbw</item>
       <item>cdq</item>
       <item>cdqe</item>
@@ -321,10 +342,41 @@
       <item>clflushopt</item>
       <item>clgi</item>
       <item>cli</item>
+      <item>clrssbsy</item>
       <item>clts</item>
       <item>clwb</item>
       <item>clzero</item>
       <item>cmc</item>
+      <item>cmova</item>
+      <item>cmovae</item>
+      <item>cmovb</item>
+      <item>cmovbe</item>
+      <item>cmovc</item>
+      <item>cmove</item>
+      <item>cmovg</item>
+      <item>cmovge</item>
+      <item>cmovl</item>
+      <item>cmovle</item>
+      <item>cmovna</item>
+      <item>cmovnae</item>
+      <item>cmovnb</item>
+      <item>cmovnbe</item>
+      <item>cmovnc</item>
+      <item>cmovne</item>
+      <item>cmovng</item>
+      <item>cmovnge</item>
+      <item>cmovnl</item>
+      <item>cmovnle</item>
+      <item>cmovno</item>
+      <item>cmovnp</item>
+      <item>cmovns</item>
+      <item>cmovnz</item>
+      <item>cmovo</item>
+      <item>cmovp</item>
+      <item>cmovpe</item>
+      <item>cmovpo</item>
+      <item>cmovs</item>
+      <item>cmovz</item>
       <item>cmp</item>
       <item>cmpeqpd</item>
       <item>cmpeqps</item>
@@ -376,8 +428,6 @@
       <item>cpu_write</item>
       <item>cqo</item>
       <item>crc32</item>
-      <item>cwd</item>
-      <item>cwde</item>
       <item>cvtdq2pd</item>
       <item>cvtdq2ps</item>
       <item>cvtpd2dq</item>
@@ -400,6 +450,8 @@
       <item>cvttps2pi</item>
       <item>cvttsd2si</item>
       <item>cvttss2si</item>
+      <item>cwd</item>
+      <item>cwde</item>
       <item>daa</item>
       <item>das</item>
       <item>dec</item>
@@ -415,8 +467,11 @@
       <item>encls</item>
       <item>enclu</item>
       <item>enclv</item>
+      <item>endbr32</item>
+      <item>endbr64</item>
+      <item>enqcmd</item>
+      <item>enqcmds</item>
       <item>enter</item>
-      <item>equ</item>
       <item>extractps</item>
       <item>extrq</item>
       <item>f2xm1</item>
@@ -602,6 +657,8 @@
       <item>imul</item>
       <item>in</item>
       <item>inc</item>
+      <item>incsspd</item>
+      <item>incsspq</item>
       <item>insb</item>
       <item>insd</item>
       <item>insertps</item>
@@ -619,62 +676,66 @@
       <item>invlpga</item>
       <item>invpcid</item>
       <item>invvpid</item>
-      <item>iret</item>
-      <item>iretd</item>
-      <item>iretq</item>
-      <item>iretw</item>
-      <item>jcxz</item>
-      <item>jecxz</item>
-      <item>jmp</item>
-      <item>jmpe</item>
-      <item>jrcxz</item>
+      <item>kadd</item>
       <item>kaddb</item>
       <item>kaddd</item>
       <item>kaddq</item>
       <item>kaddw</item>
+      <item>kand</item>
       <item>kandb</item>
       <item>kandd</item>
+      <item>kandn</item>
       <item>kandnb</item>
       <item>kandnd</item>
       <item>kandnq</item>
       <item>kandnw</item>
       <item>kandq</item>
       <item>kandw</item>
+      <item>kmov</item>
       <item>kmovb</item>
       <item>kmovd</item>
       <item>kmovq</item>
       <item>kmovw</item>
+      <item>knot</item>
       <item>knotb</item>
       <item>knotd</item>
       <item>knotq</item>
       <item>knotw</item>
+      <item>kor</item>
       <item>korb</item>
       <item>kord</item>
       <item>korq</item>
+      <item>kortest</item>
       <item>kortestb</item>
       <item>kortestd</item>
       <item>kortestq</item>
       <item>kortestw</item>
       <item>korw</item>
+      <item>kshiftl</item>
       <item>kshiftlb</item>
       <item>kshiftld</item>
       <item>kshiftlq</item>
       <item>kshiftlw</item>
+      <item>kshiftr</item>
       <item>kshiftrb</item>
       <item>kshiftrd</item>
       <item>kshiftrq</item>
       <item>kshiftrw</item>
+      <item>ktest</item>
       <item>ktestb</item>
       <item>ktestd</item>
       <item>ktestq</item>
       <item>ktestw</item>
+      <item>kunpck</item>
       <item>kunpckbw</item>
       <item>kunpckdq</item>
       <item>kunpckwd</item>
+      <item>kxnor</item>
       <item>kxnorb</item>
       <item>kxnord</item>
       <item>kxnorq</item>
       <item>kxnorw</item>
+      <item>kxor</item>
       <item>kxorb</item>
       <item>kxord</item>
       <item>kxorq</item>
@@ -684,6 +745,7 @@
       <item>lddqu</item>
       <item>ldmxcsr</item>
       <item>lds</item>
+      <item>ldtilecfg</item>
       <item>lea</item>
       <item>leave</item>
       <item>les</item>
@@ -779,7 +841,6 @@
       <item>neg</item>
       <item>nop</item>
       <item>not</item>
-      <item>october</item>
       <item>or</item>
       <item>orpd</item>
       <item>orps</item>
@@ -811,8 +872,8 @@
       <item>pavgb</item>
       <item>pavgusb</item>
       <item>pavgw</item>
-      <item>pblendw</item>
       <item>pblendvb</item>
+      <item>pblendw</item>
       <item>pclmulhqhqdq</item>
       <item>pclmulhqlqdq</item>
       <item>pclmullqhqdq</item>
@@ -995,20 +1056,10 @@
       <item>rdrand</item>
       <item>rdseed</item>
       <item>rdshr</item>
+      <item>rdsspd</item>
+      <item>rdsspq</item>
       <item>rdtsc</item>
       <item>rdtscp</item>
-      <item>ret</item>
-      <item>retd</item>
-      <item>retf</item>
-      <item>retfd</item>
-      <item>retfq</item>
-      <item>retfw</item>
-      <item>retn</item>
-      <item>retnd</item>
-      <item>retnq</item>
-      <item>retnw</item>
-      <item>retq</item>
-      <item>retw</item>
       <item>rol</item>
       <item>ror</item>
       <item>rorx</item>
@@ -1021,17 +1072,51 @@
       <item>rsm</item>
       <item>rsqrtps</item>
       <item>rsqrtss</item>
+      <item>rstorssp</item>
       <item>rsts</item>
       <item>sahf</item>
       <item>sal</item>
       <item>salc</item>
       <item>sar</item>
       <item>sarx</item>
+      <item>saveprevssp</item>
       <item>sbb</item>
       <item>scasb</item>
       <item>scasd</item>
       <item>scasq</item>
       <item>scasw</item>
+      <item>serialize</item>
+      <item>seta</item>
+      <item>setae</item>
+      <item>setb</item>
+      <item>setbe</item>
+      <item>setc</item>
+      <item>sete</item>
+      <item>setg</item>
+      <item>setge</item>
+      <item>setl</item>
+      <item>setle</item>
+      <item>setna</item>
+      <item>setnae</item>
+      <item>setnb</item>
+      <item>setnbe</item>
+      <item>setnc</item>
+      <item>setne</item>
+      <item>setng</item>
+      <item>setnge</item>
+      <item>setnl</item>
+      <item>setnle</item>
+      <item>setno</item>
+      <item>setnp</item>
+      <item>setns</item>
+      <item>setnz</item>
+      <item>seto</item>
+      <item>setp</item>
+      <item>setpe</item>
+      <item>setpo</item>
+      <item>sets</item>
+      <item>setssbsy</item>
+      <item>setz</item>
       <item>sfence</item>
       <item>sgdt</item>
       <item>sha1msg1</item>
@@ -1072,21 +1157,32 @@
       <item>stosq</item>
       <item>stosw</item>
       <item>str</item>
+      <item>sttilecfg</item>
       <item>sub</item>
       <item>subpd</item>
       <item>subps</item>
       <item>subsd</item>
       <item>subss</item>
-      <item>swapgs</item>
       <item>svdc</item>
       <item>svldt</item>
       <item>svts</item>
+      <item>swapgs</item>
       <item>syscall</item>
       <item>sysenter</item>
       <item>sysexit</item>
       <item>sysret</item>
       <item>t1mskc</item>
+      <item>tdpbf16ps</item>
+      <item>tdpbssd</item>
+      <item>tdpbsud</item>
+      <item>tdpbusd</item>
+      <item>tdpbuud</item>
       <item>test</item>
+      <item>tileloadd</item>
+      <item>tileloaddt1</item>
+      <item>tilerelease</item>
+      <item>tilestored</item>
+      <item>tilezero</item>
       <item>tpause</item>
       <item>tzcnt</item>
       <item>tzmsk</item>
@@ -1128,14 +1224,12 @@
       <item>vandnps</item>
       <item>vandpd</item>
       <item>vandps</item>
-      <item>wbinvd</item>
       <item>vblendmpd</item>
       <item>vblendmps</item>
       <item>vblendpd</item>
       <item>vblendps</item>
       <item>vblendvpd</item>
       <item>vblendvps</item>
-      <item>wbnoinvd</item>
       <item>vbroadcastf128</item>
       <item>vbroadcastf32x2</item>
       <item>vbroadcastf32x4</item>
@@ -1150,14 +1244,18 @@
       <item>vbroadcasti64x4</item>
       <item>vbroadcastsd</item>
       <item>vbroadcastss</item>
-      <item>vcmpeq_ospd</item>
-      <item>vcmpeq_osps</item>
-      <item>vcmpeq_ossd</item>
-      <item>vcmpeq_osss</item>
       <item>vcmpeqpd</item>
       <item>vcmpeqps</item>
       <item>vcmpeqsd</item>
       <item>vcmpeqss</item>
+      <item>vcmpeq_oqpd</item>
+      <item>vcmpeq_oqps</item>
+      <item>vcmpeq_oqsd</item>
+      <item>vcmpeq_oqss</item>
+      <item>vcmpeq_ospd</item>
+      <item>vcmpeq_osps</item>
+      <item>vcmpeq_ossd</item>
+      <item>vcmpeq_osss</item>
       <item>vcmpeq_uqpd</item>
       <item>vcmpeq_uqps</item>
       <item>vcmpeq_uqsd</item>
@@ -1166,6 +1264,10 @@
       <item>vcmpeq_usps</item>
       <item>vcmpeq_ussd</item>
       <item>vcmpeq_usss</item>
+      <item>vcmpfalsepd</item>
+      <item>vcmpfalseps</item>
+      <item>vcmpfalsesd</item>
+      <item>vcmpfalsess</item>
       <item>vcmpfalse_oqpd</item>
       <item>vcmpfalse_oqps</item>
       <item>vcmpfalse_oqsd</item>
@@ -1174,10 +1276,10 @@
       <item>vcmpfalse_osps</item>
       <item>vcmpfalse_ossd</item>
       <item>vcmpfalse_osss</item>
-      <item>vcmpfalsepd</item>
-      <item>vcmpfalseps</item>
-      <item>vcmpfalsesd</item>
-      <item>vcmpfalsess</item>
+      <item>vcmpgepd</item>
+      <item>vcmpgeps</item>
+      <item>vcmpgesd</item>
+      <item>vcmpgess</item>
       <item>vcmpge_oqpd</item>
       <item>vcmpge_oqps</item>
       <item>vcmpge_oqsd</item>
@@ -1186,10 +1288,10 @@
       <item>vcmpge_osps</item>
       <item>vcmpge_ossd</item>
       <item>vcmpge_osss</item>
-      <item>vcmpgepd</item>
-      <item>vcmpgeps</item>
-      <item>vcmpgesd</item>
-      <item>vcmpgess</item>
+      <item>vcmpgtpd</item>
+      <item>vcmpgtps</item>
+      <item>vcmpgtsd</item>
+      <item>vcmpgtss</item>
       <item>vcmpgt_oqpd</item>
       <item>vcmpgt_oqps</item>
       <item>vcmpgt_oqsd</item>
@@ -1198,10 +1300,10 @@
       <item>vcmpgt_osps</item>
       <item>vcmpgt_ossd</item>
       <item>vcmpgt_osss</item>
-      <item>vcmpgtpd</item>
-      <item>vcmpgtps</item>
-      <item>vcmpgtsd</item>
-      <item>vcmpgtss</item>
+      <item>vcmplepd</item>
+      <item>vcmpleps</item>
+      <item>vcmplesd</item>
+      <item>vcmpless</item>
       <item>vcmple_oqpd</item>
       <item>vcmple_oqps</item>
       <item>vcmple_oqsd</item>
@@ -1210,10 +1312,10 @@
       <item>vcmple_osps</item>
       <item>vcmple_ossd</item>
       <item>vcmple_osss</item>
-      <item>vcmplepd</item>
-      <item>vcmpleps</item>
-      <item>vcmplesd</item>
-      <item>vcmpless</item>
+      <item>vcmpltpd</item>
+      <item>vcmpltps</item>
+      <item>vcmpltsd</item>
+      <item>vcmpltss</item>
       <item>vcmplt_oqpd</item>
       <item>vcmplt_oqps</item>
       <item>vcmplt_oqsd</item>
@@ -1222,10 +1324,10 @@
       <item>vcmplt_osps</item>
       <item>vcmplt_ossd</item>
       <item>vcmplt_osss</item>
-      <item>vcmpltpd</item>
-      <item>vcmpltps</item>
-      <item>vcmpltsd</item>
-      <item>vcmpltss</item>
+      <item>vcmpneqpd</item>
+      <item>vcmpneqps</item>
+      <item>vcmpneqsd</item>
+      <item>vcmpneqss</item>
       <item>vcmpneq_oqpd</item>
       <item>vcmpneq_oqps</item>
       <item>vcmpneq_oqsd</item>
@@ -1234,10 +1336,6 @@
       <item>vcmpneq_osps</item>
       <item>vcmpneq_ossd</item>
       <item>vcmpneq_osss</item>
-      <item>vcmpneqpd</item>
-      <item>vcmpneqps</item>
-      <item>vcmpneqsd</item>
-      <item>vcmpneqss</item>
       <item>vcmpneq_uqpd</item>
       <item>vcmpneq_uqps</item>
       <item>vcmpneq_uqsd</item>
@@ -1296,14 +1394,14 @@
       <item>vcmpnlt_usss</item>
       <item>vcmpordpd</item>
       <item>vcmpordps</item>
+      <item>vcmpordsd</item>
+      <item>vcmpordss</item>
       <item>vcmpord_qpd</item>
       <item>vcmpord_qps</item>
       <item>vcmpord_qsd</item>
       <item>vcmpord_qss</item>
-      <item>vcmpordsd</item>
       <item>vcmpord_spd</item>
       <item>vcmpord_sps</item>
-      <item>vcmpordss</item>
       <item>vcmpord_ssd</item>
       <item>vcmpord_sss</item>
       <item>vcmppd</item>
@@ -1324,14 +1422,14 @@
       <item>vcmptrue_usss</item>
       <item>vcmpunordpd</item>
       <item>vcmpunordps</item>
+      <item>vcmpunordsd</item>
+      <item>vcmpunordss</item>
       <item>vcmpunord_qpd</item>
       <item>vcmpunord_qps</item>
       <item>vcmpunord_qsd</item>
       <item>vcmpunord_qss</item>
-      <item>vcmpunordsd</item>
       <item>vcmpunord_spd</item>
       <item>vcmpunord_sps</item>
-      <item>vcmpunordss</item>
       <item>vcmpunord_ssd</item>
       <item>vcmpunord_sss</item>
       <item>vcomisd</item>
@@ -1340,6 +1438,7 @@
       <item>vcompressps</item>
       <item>vcvtdq2pd</item>
       <item>vcvtdq2ps</item>
+      <item>vcvtne2ps2bf16</item>
       <item>vcvtpd2dq</item>
       <item>vcvtpd2ps</item>
       <item>vcvtpd2qq</item>
@@ -1385,6 +1484,7 @@
       <item>vdivps</item>
       <item>vdivsd</item>
       <item>vdivss</item>
+      <item>vdpbf16ps</item>
       <item>vdppd</item>
       <item>vdpps</item>
       <item>verr</item>
@@ -1664,6 +1764,7 @@
       <item>vmxon</item>
       <item>vorpd</item>
       <item>vorps</item>
+      <item>vp2intersectd</item>
       <item>vpabsb</item>
       <item>vpabsd</item>
       <item>vpabsq</item>
@@ -1694,8 +1795,8 @@
       <item>vpblendmd</item>
       <item>vpblendmq</item>
       <item>vpblendmw</item>
-      <item>vpblendw</item>
       <item>vpblendvb</item>
+      <item>vpblendw</item>
       <item>vpbroadcastb</item>
       <item>vpbroadcastd</item>
       <item>vpbroadcastmb2q</item>
@@ -1713,15 +1814,79 @@
       <item>vpcmpeqb</item>
       <item>vpcmpeqd</item>
       <item>vpcmpeqq</item>
+      <item>vpcmpequb</item>
+      <item>vpcmpequd</item>
+      <item>vpcmpequq</item>
+      <item>vpcmpequw</item>
       <item>vpcmpeqw</item>
       <item>vpcmpestri</item>
       <item>vpcmpestrm</item>
+      <item>vpcmpgeb</item>
+      <item>vpcmpged</item>
+      <item>vpcmpgeq</item>
+      <item>vpcmpgeub</item>
+      <item>vpcmpgeud</item>
+      <item>vpcmpgeuq</item>
+      <item>vpcmpgeuw</item>
+      <item>vpcmpgew</item>
       <item>vpcmpgtb</item>
       <item>vpcmpgtd</item>
       <item>vpcmpgtq</item>
+      <item>vpcmpgtub</item>
+      <item>vpcmpgtud</item>
+      <item>vpcmpgtuq</item>
+      <item>vpcmpgtuw</item>
       <item>vpcmpgtw</item>
       <item>vpcmpistri</item>
       <item>vpcmpistrm</item>
+      <item>vpcmpleb</item>
+      <item>vpcmpled</item>
+      <item>vpcmpleq</item>
+      <item>vpcmpleub</item>
+      <item>vpcmpleud</item>
+      <item>vpcmpleuq</item>
+      <item>vpcmpleuw</item>
+      <item>vpcmplew</item>
+      <item>vpcmpltb</item>
+      <item>vpcmpltd</item>
+      <item>vpcmpltq</item>
+      <item>vpcmpltub</item>
+      <item>vpcmpltud</item>
+      <item>vpcmpltuq</item>
+      <item>vpcmpltuw</item>
+      <item>vpcmpltw</item>
+      <item>vpcmpneqb</item>
+      <item>vpcmpneqd</item>
+      <item>vpcmpneqq</item>
+      <item>vpcmpnequb</item>
+      <item>vpcmpnequd</item>
+      <item>vpcmpnequq</item>
+      <item>vpcmpnequw</item>
+      <item>vpcmpneqw</item>
+      <item>vpcmpngtb</item>
+      <item>vpcmpngtd</item>
+      <item>vpcmpngtq</item>
+      <item>vpcmpngtub</item>
+      <item>vpcmpngtud</item>
+      <item>vpcmpngtuq</item>
+      <item>vpcmpngtuw</item>
+      <item>vpcmpngtw</item>
+      <item>vpcmpnleb</item>
+      <item>vpcmpnled</item>
+      <item>vpcmpnleq</item>
+      <item>vpcmpnleub</item>
+      <item>vpcmpnleud</item>
+      <item>vpcmpnleuq</item>
+      <item>vpcmpnleuw</item>
+      <item>vpcmpnlew</item>
+      <item>vpcmpnltb</item>
+      <item>vpcmpnltd</item>
+      <item>vpcmpnltq</item>
+      <item>vpcmpnltub</item>
+      <item>vpcmpnltud</item>
+      <item>vpcmpnltuq</item>
+      <item>vpcmpnltuw</item>
+      <item>vpcmpnltw</item>
       <item>vpcmpq</item>
       <item>vpcmpub</item>
       <item>vpcmpud</item>
@@ -1923,18 +2088,18 @@
       <item>vpshld</item>
       <item>vpshldd</item>
       <item>vpshldq</item>
-      <item>vpshldw</item>
       <item>vpshldvd</item>
       <item>vpshldvq</item>
       <item>vpshldvw</item>
+      <item>vpshldw</item>
       <item>vpshlq</item>
       <item>vpshlw</item>
       <item>vpshrdd</item>
       <item>vpshrdq</item>
-      <item>vpshrdw</item>
       <item>vpshrdvd</item>
       <item>vpshrdvq</item>
       <item>vpshrdvw</item>
+      <item>vpshrdw</item>
       <item>vpshufb</item>
       <item>vpshufbitqmb</item>
       <item>vpshufd</item>
@@ -1946,23 +2111,23 @@
       <item>vpslld</item>
       <item>vpslldq</item>
       <item>vpsllq</item>
-      <item>vpsllw</item>
       <item>vpsllvd</item>
       <item>vpsllvq</item>
       <item>vpsllvw</item>
+      <item>vpsllw</item>
       <item>vpsrad</item>
       <item>vpsraq</item>
-      <item>vpsraw</item>
       <item>vpsravd</item>
       <item>vpsravq</item>
       <item>vpsravw</item>
+      <item>vpsraw</item>
       <item>vpsrld</item>
       <item>vpsrldq</item>
       <item>vpsrlq</item>
-      <item>vpsrlw</item>
       <item>vpsrlvd</item>
       <item>vpsrlvq</item>
       <item>vpsrlvw</item>
+      <item>vpsrlw</item>
       <item>vpsubb</item>
       <item>vpsubd</item>
       <item>vpsubq</item>
@@ -2011,9 +2176,6 @@
       <item>vreduceps</item>
       <item>vreducesd</item>
       <item>vreducess</item>
-      <item>wrfsbase</item>
-      <item>wrgsbase</item>
-      <item>wrmsr</item>
       <item>vrndscalepd</item>
       <item>vrndscaleps</item>
       <item>vrndscalesd</item>
@@ -2022,8 +2184,6 @@
       <item>vroundps</item>
       <item>vroundsd</item>
       <item>vroundss</item>
-      <item>wrpkru</item>
-      <item>wrshr</item>
       <item>vrsqrt14pd</item>
       <item>vrsqrt14ps</item>
       <item>vrsqrt14sd</item>
@@ -2077,6 +2237,17 @@
       <item>vxorps</item>
       <item>vzeroall</item>
       <item>vzeroupper</item>
+      <item>wbinvd</item>
+      <item>wbnoinvd</item>
+      <item>wrfsbase</item>
+      <item>wrgsbase</item>
+      <item>wrmsr</item>
+      <item>wrpkru</item>
+      <item>wrshr</item>
+      <item>wrssd</item>
+      <item>wrssq</item>
+      <item>wrussd</item>
+      <item>wrussq</item>
       <item>xabort</item>
       <item>xadd</item>
       <item>xbegin</item>
@@ -2094,6 +2265,7 @@
       <item>xor</item>
       <item>xorpd</item>
       <item>xorps</item>
+      <item>xresldtrk</item>
       <item>xrstor</item>
       <item>xrstor64</item>
       <item>xrstors</item>
@@ -2110,8 +2282,141 @@
       <item>xsha1</item>
       <item>xsha256</item>
       <item>xstore</item>
+      <item>xsusldtrk</item>
       <item>xtest</item>
     </list>
+
+    <list name="branch instructions">
+      <item>call</item>
+      <item>iret</item>
+      <item>iretd</item>
+      <item>iretq</item>
+      <item>iretw</item>
+      <item>ja</item>
+      <item>jae</item>
+      <item>jb</item>
+      <item>jbe</item>
+      <item>jc</item>
+      <item>jcxz</item>
+      <item>je</item>
+      <item>jecxz</item>
+      <item>jg</item>
+      <item>jge</item>
+      <item>jl</item>
+      <item>jle</item>
+      <item>jmp</item>
+      <item>jmpe</item>
+      <item>jna</item>
+      <item>jnae</item>
+      <item>jnb</item>
+      <item>jnbe</item>
+      <item>jnc</item>
+      <item>jne</item>
+      <item>jng</item>
+      <item>jnge</item>
+      <item>jnl</item>
+      <item>jnle</item>
+      <item>jno</item>
+      <item>jnp</item>
+      <item>jns</item>
+      <item>jnz</item>
+      <item>jo</item>
+      <item>jp</item>
+      <item>jpe</item>
+      <item>jpo</item>
+      <item>jrcxz</item>
+      <item>js</item>
+      <item>jz</item>
+      <item>ret</item>
+      <item>retd</item>
+      <item>retf</item>
+      <item>retfd</item>
+      <item>retfq</item>
+      <item>retfw</item>
+      <item>retn</item>
+      <item>retnd</item>
+      <item>retnq</item>
+      <item>retnw</item>
+      <item>retq</item>
+      <item>retw</item>
+    </list>
+
+    <list name="macros">
+      <item>arg</item>
+      <item>assign</item>
+      <item>clear</item>
+      <item>defalias</item>
+      <item>define</item>
+      <item>defstr</item>
+      <item>deftok</item>
+      <item>depend</item>
+      <item>elif</item>
+      <item>elifctx</item>
+      <item>elifdef</item>
+      <item>elifempty</item>
+      <item>elifenv</item>
+      <item>elifidn</item>
+      <item>elifidni</item>
+      <item>elifn</item>
+      <item>elifnctx</item>
+      <item>elifndef</item>
+      <item>elifnempty</item>
+      <item>elifnenv</item>
+      <item>elifnidn</item>
+      <item>elifnidni</item>
+      <item>elifntoken</item>
+      <item>eliftoken</item>
+      <item>else</item>
+      <item>exitrep</item>
+      <item>endif</item>
+      <item>endmacro</item>
+      <item>endrep</item>
+      <item>error</item>
+      <item>fatal</item>
+      <item>idefine</item>
+      <item>if</item>
+      <item>ifctx</item>
+      <item>ifdef</item>
+      <item>ifempty</item>
+      <item>ifid</item>
+      <item>ifidn</item>
+      <item>ifidni</item>
+      <item>ifmacro</item>
+      <item>ifn</item>
+      <item>ifnctx</item>
+      <item>ifndef</item>
+      <item>ifnempty</item>
+      <item>ifnenv</item>
+      <item>ifnidn</item>
+      <item>ifnidni</item>
+      <item>ifnmacro</item>
+      <item>ifntoken</item>
+      <item>ifnum</item>
+      <item>ifstr</item>
+      <item>iftoken</item>
+      <item>imacro</item>
+      <item>include</item>
+      <item>line</item>
+      <item>local</item>
+      <item>macro</item>
+      <item>pathsearch</item>
+      <item>pop</item>
+      <item>pragma</item>
+      <item>push</item>
+      <item>rep</item>
+      <item>repl</item>
+      <item>rotate</item>
+      <item>stacksize</item>
+      <item>strcat</item>
+      <item>strlen</item>
+      <item>substr</item>
+      <item>undef</item>
+      <item>unmacro</item>
+      <item>use</item>
+      <item>warning</item>
+      <item>xdefine</item>
+    </list>
+
     <list name="Data">
       <!-- repeat some data declaration -->
       <item>times</item>
@@ -2123,12 +2428,18 @@
       <item>dd</item>
       <item>dq</item>
       <item>dt</item>
+      <item>do</item>
+      <item>dy</item>
+      <item>dz</item>
       <!-- Uninitialized data -->
       <item>resb</item>
       <item>resw</item>
       <item>resd</item>
       <item>resq</item>
       <item>rest</item>
+      <item>reso</item>
+      <item>resy</item>
+      <item>resz</item>
       <!-- binary file include -->
       <item>incbin</item>
       <!-- operand size -->
@@ -2136,24 +2447,50 @@
       <item>word</item>
       <item>dword</item>
       <item>qword</item>
+      <item>tword</item>
+      <item>oword</item>
+      <item>yword</item>
+      <item>zword</item>
       <item>short</item>
       <item>ptr</item>
     </list>
+
     <list name="NASM Keywords">
+      <!-- prefix -->
+      <item>abs</item>
+      <item>a32</item>
+      <item>as</item>
+      <item>bnd</item>
+      <item>cs</item>
+      <item>lock</item>
+      <item>nobnd</item>
+      <item>rel</item>
+      <item>rep</item>
+      <item>repe</item>
+      <item>repne</item>
+      <item>repnz</item>
+      <item>repz</item>
+      <item>xacquire</item>
+      <item>xrelease</item>
+
       <!-- NASM directives -->
       <item>absolute</item>
       <item>bits</item>
       <item>common</item>
+      <item>default</item>
+      <item>cpu</item>
       <item>extern</item>
       <item>global</item>
       <item>org</item>
       <item>section</item>
       <item>seg</item>
       <item>segment</item>
+      <item>static</item>
       <item>strict</item>
       <item>use16</item>
       <item>use32</item>
       <item>wrt</item>
+
       <!-- NASM standard macros -->
       <item>struc</item>
       <item>endstruc</item>
@@ -2163,52 +2500,262 @@
       <item>align</item>
       <item>alignb</item>
 
-      <item>__SECT__</item>
-      <item>__NASM_MAJOR__</item>
-      <item>__NASM_MINOR__</item>
-      <item>__NASM_SUBMINOR__</item>
-      <item>___NASM_PATCHLEVEL__</item>
-      <item>__NASM_VERSION_ID__</item>
-      <item>__NASM_VER__</item>
-      <item>__FILE__</item>
-      <item>__LINE__</item>
+      <item>__?BITS?__</item>
+      <item>__?SECT?__</item>
+      <item>__?NASM_MAJOR?__</item>
+      <item>__?NASM_MINOR?__</item>
+      <item>__?NASM_SUBMINOR?__</item>
+      <item>__?NASM_PATCHLEVEL?__</item>
+      <item>__?NASM_SNAPSHOT?__</item>
+      <item>__?NASM_VERSION_ID?__</item>
+      <item>__?NASM_VER?__</item>
+      <item>__?FILE?__</item>
+      <item>__?LINE?__</item>
+      <item>__?OUTPUT_FORMAT?__</item>
+      <item>__?DEBUG_FORMAT?__</item>
+      <item>__?DATE?__</item>
+      <item>__?TIME?__</item>
+      <item>__?DATE_NUM?__</item>
+      <item>__?TIME_NUM?__</item>
+      <item>__?UTC_DATE?__</item>
+      <item>__?UTC_TIME?__</item>
+      <item>__?UTC_DATE_NUM?__</item>
+      <item>__?UTC_TIME_NUM?__</item>
+      <item>__?POSIX_TIME?__</item>
+      <item>__?PASS?__</item>
+      <item>__?USE_ALTREG?__</item>
+      <item>__?ALIGNMODE?__</item>
+
+      <item>__?utf16?__</item>
+      <item>__?utf16le?__</item>
+      <item>__?utf16be?__</item>
+      <item>__?utf32?__</item>
+      <item>__?utf32le?__</item>
+      <item>__?utf32be?__</item>
+      <item>__?float8?__</item>
+      <item>__?float16?__</item>
+      <item>__?bfloat16?__</item>
+      <item>__?float32?__</item>
+      <item>__?float64?__</item>
+      <item>__?float80m?__</item>
+      <item>__?float80e?__</item>
+      <item>__?float128l?__</item>
+      <item>__?float128h?__</item>
+      <item>__?Infinity?__</item>
+      <item>__?QNaN?__</item>
+      <item>__?NaN?__</item>
+      <item>__?SNaN?__</item>
+      <item>__?FLOAT_DAZ?__</item>
+      <item>__?FLOAT_ROUND?__</item>
+      <item>__?FLOAT?__</item>
+      <item>__?FLOAT?__</item>
     </list>
+
+    <list name="special symbols">
+      <item>got</item>
+      <item>gotoff</item>
+      <item>gotpc</item>
+      <item>gotpcrel</item>
+      <item>gottpoff</item>
+      <item>imagebase</item>
+      <item>plt</item>
+      <item>start</item>
+      <item>sym</item>
+      <item>tlsie</item>
+      <item>tlvp</item>
+    </list>
+
     <contexts>
-      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Instruction">
+        <DetectSpaces attribute="Normal Text"/>
+        <RegExpr attribute="Label" context="Instruction" String="(?:(?:\.|@@|&#37;&#37;)(?:\.@)?)?[A-Za-z_][A-Za-z0-9_.]*+:" firstNonSpace="1"/>
+      </context>
+
+      <context name="Instruction" attribute="Normal Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="IncInstruction"/>
+      </context>
+
+      <context name="IncInstruction" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar attribute="Preprocessor" context="#pop!Preprocessor" char="%" firstNonSpace="1"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
+        <keyword attribute="Data" context="#pop!Operand" String="Data"/>
+        <keyword attribute="Instructions" context="#pop!Operand" String="instructions"/>
+        <keyword attribute="Branch Instructions" context="#pop!Operand" String="branch instructions"/>
+        <keyword attribute="NASM Keywords" context="#pop!Operand" String="NASM Keywords"/>
+        <DetectIdentifier attribute="Unknown Instructions" context="UnknownInstruction"/>
+        <LineContinue attribute="Symbol" context="#pop!Operand"/>
+      </context>
+      <context name="UnknownInstruction" attribute="Unknown Instructions" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Operand">
+        <DetectChar attribute="Symbol" context="#stay" char="."/>
+        <Int attribute="Unknown Instructions" context="#stay"/>
+        <DetectIdentifier attribute="Unknown Instructions" context="#stay"/>
+      </context>
+
+      <context name="Operand" attribute="Normal Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <Detect2Chars attribute="Label" context="LabelIdent" char="%" char1="%"/>
+        <Detect2Chars attribute="Label" context="LabelIdent" char="@" char1="@"/>
+        <AnyChar attribute="Symbol" context="#stay" String=",-+/*%~^=!(){}[]:|&amp;?&lt;>"/>
+        <DetectChar attribute="Symbol" context="Dollar" char="$"/>
+        <DetectChar attribute="Symbol" context="SymbolOrLabel" char="." lookAhead="1"/>
+        <DetectChar attribute="String" context="SQString" char="'"/>
+        <DetectChar attribute="String" context="DQString" char="&quot;"/>
+        <DetectChar attribute="String" context="String" char="`"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
+        <AnyChar attribute="Number" context="Number" String="0123456789" lookAhead="1"/>
         <keyword attribute="Registers" context="#stay" String="registers"/>
         <keyword attribute="Data" context="#stay" String="Data"/>
-        <keyword attribute="Instructions" context="#stay" String="instructions"/>
         <keyword attribute="NASM Keywords" context="#stay" String="NASM Keywords"/>
-        <DetectChar attribute="Comment" context="Comment" char=";"/>
-        <DetectChar attribute="Preprocessor" context="Preprocessor" char="%"/>
-        <AnyChar attribute="String" context="String" String="&quot;'"/>
-        <RegExpr attribute="Label" context="#stay" String="^\s*[A-Za-z0-9_.$]+:"/>
-        <!-- Conditional instructions -->
-        <RegExpr attribute="Instructions" context="#stay" String="(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)"/>
-        <!-- The NASM's CPU directive -->
-        <RegExpr attribute="NASM Keywords" context="#stay" String="cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*"/>
-        <!-- hexadecimal numbers -->
-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)((\$|0x){1}[0-9]+[a-f0-9]*|[0-9]+[a-f0-9]*h)([ \t,]+|$)"/>
-        <!-- octal and binary numbers -->
-        <RegExpr attribute="BaseN" context="#stay" insensitive="true" String="(^|[ \t,]+)([0-7]+(q|o)|[01]+b)([ \t,]+|$)"/>
-        <DetectChar attribute="Number" context="#stay" char="$"/>
-        <HlCOct attribute="BaseN" context="#stay"/>
-        <HlCHex attribute="BaseN" context="#stay"/>
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Number" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay"/>
+        <DetectIdentifier attribute="Normal Text" context="Ident"/>
+        <LineContinue attribute="Symbol"/>
       </context>
-      <context name="Comment" attribute="Comment" lineEndContext="#pop"/>
-      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
+
+      <context name="LabelIdent" attribute="Label" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Label" context="#stay"/>
+        <DetectChar attribute="Symbol" context="#stay" char="."/>
+        <Int attribute="Label" context="#stay"/>
+      </context>
+
+      <context name="Ident" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Symbol" context="#stay" char="."/>
+        <AnyChar attribute="Normal Text" context="#stay" String="_$#@~?0123456789"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+      </context>
+
+      <context name="Dollar" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop!Ident">
+        <Detect2Chars attribute="Symbol" context="#pop" char="$" char1="-"/>
+        <AnyChar attribute="Symbol" context="#pop!Ident" String="$+-"/>
+        <AnyChar attribute="BaseN" context="#pop!$Hex" String="0123456789"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!Ident"/>
+      </context>
+      <context name="$Hex" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" String="[0-9a-fA-F_]*"/>
+      </context>
+
+      <context name="Number" attribute="Number" lineEndContext="#pop">
+        <RegExpr attribute="Float" context="#pop!FloatSuffix" insensitive="1" String="&float;"/>
+        <RegExpr attribute="Radix" context="#pop!PrefixedNumber" insensitive="1" String="&prefixedBaseN;" lookAhead="1"/>
+        <RegExpr attribute="BaseN" context="#pop!BaseSuffix" insensitive="1" String="&baseN;"/>
+        <RegExpr attribute="Number" context="#pop!NumberSuffix" insensitive="1" String="&number;"/>
+      </context>
+      <context name="FloatSuffix" attribute="Float" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="pP"/>
+      </context>
+      <context name="BaseSuffix" attribute="BaseN" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="byoqhxBYOQHX"/>
+      </context>
+      <context name="NumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop!CheckNumberSuffix">
+        <AnyChar attribute="Radix" context="#pop!CheckNumberSuffix" String="dtDT"/>
+      </context>
+      <context name="PrefixedNumber" attribute="Radix" lineEndContext="#pop">
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="h"/>
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="x"/>
+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="q"/>
+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="o"/>
+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="b"/>
+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="y"/>
+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="d"/>
+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="t"/>
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="H"/>
+        <Detect2Chars attribute="Radix" context="#pop!$Hex" char="0" char1="X"/>
+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="Q"/>
+        <Detect2Chars attribute="Radix" context="#pop!Octal" char="0" char1="O"/>
+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="B"/>
+        <Detect2Chars attribute="Radix" context="#pop!Binary" char="0" char1="Y"/>
+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="D"/>
+        <Detect2Chars attribute="Radix" context="#pop!Decimal" char="0" char1="T"/>
+      </context>
+      <context name="Octal" attribute="BaseN" lineEndContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" insensitive="1" String="[0-7_]+"/>
+      </context>
+      <context name="Binary" attribute="BaseN" lineEndContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop!CheckNumberSuffix" insensitive="1" String="[01_]+"/>
+      </context>
+      <context name="Decimal" attribute="Number" lineEndContext="#pop">
+        <RegExpr attribute="Number" context="#pop!CheckNumberSuffix" insensitive="1" String="[0-9_]+"/>
+      </context>
+      <context name="CheckNumberSuffix" attribute="Number" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#pop"/>
+        <AnyChar attribute="Symbol" context="#pop" String=",-+/*%~^=!(){}[]:|&amp;?&lt;>"/>
+        <WordDetect attribute="NASM Keywords" context="#pop" String=".nolist"/>
+        <RegExpr attribute="Error" context="#pop" String="[\d\w]+"/>
+      </context>
+
+      <context name="SymbolOrLabel" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Label" context="#pop" String="\.(?:\.@)?[A-Za-z0-9_.]*+"/>
+        <Detect2Chars attribute="Symbol" context="#pop!SpecialSymbol" char="." char1="."/>
+        <DetectChar attribute="Symbol" context="#pop" char="."/>
+      </context>
+      <context name="SpecialSymbol" attribute="Symbol" lineEndContext="#pop" fallthroughContext="#pop">
+        <keyword attribute="Symbol" context="#pop" String="special symbols"/>
+        <DetectIdentifier attribute="Unknown Symbol" context="#pop"/>
+      </context>
+
+      <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">
+        <WordDetect attribute="Preprocessor" context="#pop!Macro" String="macro"/>
+        <WordDetect attribute="Preprocessor" context="#pop!Macro" String="imacro"/>
+        <keyword attribute="Preprocessor" context="#pop!Instruction" String="macros"/>
+        <Int attribute="Number" context="#pop"/>
+      </context>
+      <context name="Macro" attribute="Preprocessor" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Preprocessor" context="MacroPreprocessor" char="%" firstNonSpace="1"/>
+        <WordDetect attribute="NASM Keywords" context="#stay" String=".nolist"/>
+        <IncludeRules context="IncInstruction"/>
+      </context>
+      <context name="MacroPreprocessor" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!Preprocessor">
+        <WordDetect attribute="Preprocessor" context="#pop#pop" String="endmacro"/>
+        <Detect2Chars attribute="Preprocessor" context="#pop" char="?" char1="?"/>
+        <AnyChar attribute="Preprocessor" context="#pop" String="?,"/>
+        <Detect2Chars attribute="Preprocessor" context="#pop!MacroLabel" char="$" char1="$"/>
+        <AnyChar attribute="Preprocessor" context="#pop!MacroLabel" String="%$"/>
+        <AnyChar attribute="Preprocessor" context="#pop!MacroNumber" String="-+"/>
+        <DetectChar attribute="Preprocessor" context="#pop!MacroIdent" char="!"/>
+        <Int attribute="Preprocessor" context="#pop"/>
+      </context>
+      <context name="MacroNumber" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">
+        <Int attribute="Preprocessor" context="#pop"/>
+      </context>
+      <context name="MacroIdent" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Normal Text" context="#pop"/>
+      </context>
+      <context name="MacroLabel" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Label" context="#pop"/>
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces attribute="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+        <DetectIdentifier attribute="Comment"/>
+      </context>
+
+      <context name="SQString" attribute="String" lineEndContext="#pop">
+        <LineContinue attribute="Symbol"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="DQString" attribute="String" lineEndContext="#pop">
+        <LineContinue attribute="Symbol"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
       <context name="String" attribute="String" lineEndContext="#pop">
-        <AnyChar attribute="String" context="#pop" String="&quot;'"/>
+        <LineContinue attribute="Symbol"/>
+        <DetectChar attribute="Symbol" context="Escape" char="\" lookAhead="1"/>
+        <DetectChar attribute="String" context="#pop" char="`"/>
       </context>
+      <context name="Escape" attribute="Char" lineEndContext="#pop">
+        <RegExpr attribute="Char" context="#pop" String="\\(?:['&quot;`\\?abtnvfre]|[0-7]{3}|[xX][0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|0)"/>
+        <RegExpr attribute="Bad Char" context="#pop" String="\\(?:[0-7]++|[xXuU][0-9a-fA-F]*|)"/>
+      </context>
     </contexts>
 
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
       <itemData name="Registers" defStyleNum="dsKeyword"/>
       <itemData name="Instructions" defStyleNum="dsKeyword"/>
+      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"/>
+      <itemData name="Unknown Instructions" defStyleNum="dsNormal"/>
       <itemData name="NASM Keywords" defStyleNum="dsKeyword"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
       <itemData name="Label" defStyleNum="dsFunction"/>
@@ -2216,15 +2763,20 @@
       <itemData name="BaseN" defStyleNum="dsBaseN"/>
       <itemData name="Float" defStyleNum="dsFloat"/>
       <itemData name="Number" defStyleNum="dsDecVal"/>
+      <itemData name="Radix" defStyleNum="dsBaseN"/>
       <itemData name="Char" defStyleNum="dsChar"/>
       <itemData name="String" defStyleNum="dsString"/>
       <itemData name="Preprocessor" defStyleNum="dsOthers"/>
+      <itemData name="Symbol" defStyleNum="dsOperator"/>
+      <itemData name="Unknown Symbol" defStyleNum="dsError"/>
+      <itemData name="Bad Char" defStyleNum="dsError"/>
+      <itemData name="Error" defStyleNum="dsError"/>
     </itemDatas>
   </highlighting>
   <general>
-    <keywords casesensitive="0"/>
+    <keywords casesensitive="0" weakDeliminator="?"/>
     <comments>
-      <comment name="singleLine" start=";"/>
+      <comment name="singleLine" start=";" position="afterwhitespace"/>
     </comments>
   </general>
 </language>
diff --git a/xml/nim.xml b/xml/nim.xml
--- a/xml/nim.xml
+++ b/xml/nim.xml
@@ -10,6 +10,7 @@
 - added multiline comments (with stacking!)
 - added support for hex, binary, and octal numbers
 - added support for numerical literal suffixes (e.g. 'f64)
+- added triple-quote strings, raw strings and regex strings
 - made escape sequences in strings work slightly better (still needs work)
 - changed pragma syntax highlighting to dsAttribute instead of dsDataType
 - doc comments
@@ -19,174 +20,199 @@
 
 <language
 	name="Nim"
-	version="1.0"
-	kateversion="2.4"
+	version="2"
+	kateversion="5.0"
 	section="Sources"
 	extensions="*.nim"
 	mimetype="text/x-nim"
+	indenter="python"
 	author="github.com/juancarlospaco"
 	license="WTFPL">
 
 	<highlighting>
 		<list name="keywords">
-			<item> const </item>
-			<item> export </item>
-			<item> import </item>
-			<item> include </item>
-			<item> lambda </item>
-			<item> let </item>
-			<item> var </item>
+			<item>const</item>
+			<item>export</item>
+			<item>import</item>
+			<item>include</item>
+			<item>lambda</item>
+			<item>let</item>
+			<item>var</item>
 		</list>
 
 		<list name="controls">
-			<item> assert </item> <!-- system -->
-			<item> asm </item>
-			<item> atomic </item>
-			<item> block </item>
-			<item> break </item>
-			<item> case </item>
-			<item> cast </item>
-			<item> compiles </item> <!-- system -->
-			<item> continue </item>
-			<item> declared </item> <!-- system -->
-			<item> declaredinscope </item> <!-- system -->
-			<item> defined </item> <!-- system -->
-			<item> discard </item>
-			<item> do </item>
-			<item> echo </item> <!-- system -->
-			<item> elif </item>
-			<item> else </item>
-			<item> end </item>
-			<item> except </item>
-			<item> finally </item>
-			<item> for </item>
-			<item> from </item>
-			<item> if </item>
-			<item> mixin </item>
-			<item> bind </item>
-			<item> new </item> <!-- system -->
-			<item> raise </item>
-			<item> return </item>
-			<item> sizeof </item> <!-- system -->
-			<item> try </item>
-			<item> when </item>
-			<item> while </item>
-			<item> quit </item> <!-- system -->
-			<item> using </item>
-			<item> yield </item>
+			<item>assert</item> <!-- system -->
+			<item>asm</item>
+			<item>atomic</item>
+			<item>block</item>
+			<item>break</item>
+			<item>case</item>
+			<item>cast</item>
+			<item>compiles</item> <!-- system -->
+			<item>continue</item>
+			<item>declared</item> <!-- system -->
+			<item>declaredinscope</item> <!-- system -->
+			<item>defined</item> <!-- system -->
+			<item>discard</item>
+			<item>do</item>
+			<item>echo</item> <!-- system -->
+			<item>elif</item>
+			<item>else</item>
+			<item>end</item>
+			<item>except</item>
+			<item>finally</item>
+			<item>for</item>
+			<item>from</item>
+			<item>if</item>
+			<item>mixin</item>
+			<item>bind</item>
+			<item>new</item> <!-- system -->
+			<item>raise</item>
+			<item>return</item>
+			<item>sizeof</item> <!-- system -->
+			<item>try</item>
+			<item>when</item>
+			<item>while</item>
+			<item>quit</item> <!-- system -->
+			<item>using</item>
+			<item>yield</item>
 		</list>
 
 		<list name="operators">
-			<item> addr </item>
-			<item> and </item>
-			<item> as </item>
-			<item> div </item>
-			<item> in </item>
-			<item> is </item>
-			<item> isnot </item>
-			<item> mod </item>
-			<item> not </item>
-			<item> notin </item>
-			<item> of </item>
-			<item> or </item>
-			<item> shl </item>
-			<item> shr </item>
-			<item> xor </item>
+			<item>addr</item>
+			<item>and</item>
+			<item>as</item>
+			<item>div</item>
+			<item>in</item>
+			<item>is</item>
+			<item>isnot</item>
+			<item>mod</item>
+			<item>not</item>
+			<item>notin</item>
+			<item>of</item>
+			<item>or</item>
+			<item>shl</item>
+			<item>shr</item>
+			<item>xor</item>
 		</list>
 
 		<list name="types">
-			<item> array </item>
-			<item> bool </item>
-			<item> byte </item>
-			<item> cchar </item>
-			<item> cdouble </item>
-			<item> char </item>
-			<item> cfloat </item>
-			<item> cint </item>
-			<item> clong </item>
-			<item> cshort </item>
-			<item> cstring </item>
-			<item> cuint </item>
-			<item> distinct </item>
-			<item> expr </item>
-			<item> float </item>
-			<item> float32 </item>
-			<item> float64 </item>
-			<item> generic </item>
-			<item> int </item>
-			<item> int8 </item>
-			<item> int16 </item>
-			<item> int32 </item>
-			<item> int64 </item>
-			<item> interface </item>
-			<item> openarray </item>
-			<item> pointer </item>
-			<item> set </item>
-			<item> seq </item>
-			<item> stmt </item>
-			<item> string </item>
-			<item> tuple </item>
-			<item> typedesc </item>
-			<item> uint </item>
-			<item> uint8 </item>
-			<item> uint16 </item>
-			<item> uint32 </item>
-			<item> uint64 </item>
-			<item> varargs </item>
-			<item> void </item>
-			<item> untyped </item>
-			<item> typed </item>
+			<item>array</item>
+			<item>bool</item>
+			<item>byte</item>
+			<item>cchar</item>
+			<item>cdouble</item>
+			<item>char</item>
+			<item>cfloat</item>
+			<item>cint</item>
+			<item>clong</item>
+			<item>cshort</item>
+			<item>cstring</item>
+			<item>cuint</item>
+			<item>distinct</item>
+			<item>expr</item>
+			<item>float</item>
+			<item>float32</item>
+			<item>float64</item>
+			<item>generic</item>
+			<item>int</item>
+			<item>int8</item>
+			<item>int16</item>
+			<item>int32</item>
+			<item>int64</item>
+			<item>interface</item>
+			<item>openarray</item>
+			<item>pointer</item>
+			<item>set</item>
+			<item>seq</item>
+			<item>stmt</item>
+			<item>string</item>
+			<item>tuple</item>
+			<item>typedesc</item>
+			<item>uint</item>
+			<item>uint8</item>
+			<item>uint16</item>
+			<item>uint32</item>
+			<item>uint64</item>
+			<item>varargs</item>
+			<item>void</item>
+			<item>untyped</item>
+			<item>typed</item>
 		</list>
 
 		<list name="attrs">
-			<item> out </item>
-			<item> ptr </item>
-			<item> ref </item>
-			<item> shared </item>
-			<item> static </item>
+			<item>out</item>
+			<item>ptr</item>
+			<item>ref</item>
+			<item>shared</item>
+			<item>static</item>
 		</list>
 
 		<list name="consts">
-			<item> false </item>
-			<item> inf </item>
-			<item> nil </item>
-			<item> true </item>
-			<item> on </item>
-			<item> off </item>
+			<item>false</item>
+			<item>inf</item>
+			<item>nil</item>
+			<item>true</item>
+			<item>on</item>
+			<item>off</item>
 		</list>
 
 		<list name="others">
-			<item> result </item>
+			<item>result</item>
 		</list>
 
+		<list name="proctar">
+			<item>converter</item>
+			<item>iterator</item>
+			<item>macro</item>
+			<item>method</item>
+			<item>proc</item>
+			<item>func</item>
+			<item>template</item>
+		</list>
+
+		<list name="typetar">
+			<item>type</item>
+			<item>concept</item>
+			<item>object</item>
+			<item>enum</item>
+		</list>
+
 		<contexts>
 			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces/>
 				<keyword context="#stay" attribute="Keywords" String="keywords"/>
 				<keyword context="#stay" attribute="Controls" String="controls"/>
-				<keyword context="#stay" attribute="Symbols"  String="operators"/>
+				<keyword context="#stay" attribute="Operators" String="operators"/>
 				<keyword context="#stay" attribute="Types"    String="types"/>
 				<keyword context="#stay" attribute="Attrs"    String="attrs"/>
 				<keyword context="#stay" attribute="Others"   String="others"/>
-				<keyword context="#stay" attribute="Float"    String="consts"/>
+				<keyword context="#stay" attribute="Constants" String="consts"/>
 
-				<RegExpr context="Proctar" attribute="Keywords" String="\bconverter\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\biterator\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\bmacro\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\bmethod\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\bproc\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\bfunc\b\s*"/>
-				<RegExpr context="Proctar" attribute="Keywords" String="\btemplate\b\s*"/>
-				<RegExpr context="Typetar" attribute="Keywords" String="\btype\b\s*"/>
-				<RegExpr context="Typetar" attribute="Keywords" String="\bconcept\b\s*"/>
-				<RegExpr context="Typetar" attribute="Keywords" String="\bobject\b\s*"/>
-				<RegExpr context="Typetar" attribute="Keywords" String="\benum\b\s*"/>
+				<keyword context="Start-Proctar" attribute="Keywords" String="proctar"/>
+				<keyword context="Start-Typetar" attribute="Keywords" String="typetar"/>
 
-                <RegExpr context="#stay" attribute="Hex"      String="0[xX][0-9A-Fa-f][0-9A-Fa-f_]*('(([ui](8|16|32|64))|(f(32|64|128))|[ufd]))?"/>
-                <RegExpr context="#stay" attribute="Octal"    String="0o[0-7][0-7_]*('(([ui](8|16|32|64))|(f(32|64|128))|[ufd]))?"/>
-                <RegExpr context="#stay" attribute="Binary"   String="0[bB][01][01_]*('(([ui](8|16|32|64))|(f(32|64|128))|[ufd]))?"/>
-				<RegExpr context="#stay" attribute="Types"    String="\b_*[A-Z](?:\w|\._*[A-Z])*\b"/>
-				<RegExpr context="#stay" attribute="Funcs"    String="\b\w+\b\s*(?=(\[.*\]\w*)?([\(]|([ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))"/>
+				<StringDetect context="DocComment2" attribute="DocComment" String="##[" beginRegion="DocComment"/>
+				<Detect2Chars context="DocComment1" attribute="DocComment" char="#" char1="#"/>
+				<Detect2Chars context="Comment2" attribute="Comment" char="#" char1="[" beginRegion="Comment"/>
+				<DetectChar context="Comment1" attribute="Comment" char="#"/>
 
+				<StringDetect context="tripleq-string" attribute="String" String="&quot;&quot;&quot;" beginRegion="String"/>
+				<DetectChar   context="string"         attribute="String" char="&quot;" beginRegion="String"/>
+				<StringDetect context="re-string"      attribute="String" String="re&quot;" beginRegion="String"/>
+				<Detect2Chars context="raw-string"     attribute="String" char="r" char1="&quot;" beginRegion="String"/>
+
+				<RegExpr context="#stay" attribute="Hex"    String="0[xX][0-9A-Fa-f][0-9A-Fa-f_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
+				<RegExpr context="#stay" attribute="Octal"  String="0o[0-7][0-7_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
+				<RegExpr context="#stay" attribute="Binary" String="0[bB][01][01_]*(?:'(?:(?:[ui](?:8|16|32|64))|(?:f(?:32|64|128))|[ufd]))?"/>
+				<RegExpr context="#stay" attribute="Decimal" String="\b\d+(?=\.\.)"/>
+				<Float   context="#stay" attribute="Float"/>
+				<Int     context="#stay" attribute="Decimal"/>
+
+				<RegExpr context="#stay" attribute="Types"  String="\b_*[A-Z](?:\w|\._*[A-Z])*\b"/>
+				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+\b\s*(?=(?:\[.*\]\w*)?(?:\(|(?:[ ](?![,+\-*/=!^&amp;&lt;&gt;|?]|and|as|div|in|is|isnot|mod|notin|of|or|shl|shr|xor))))"/>
+				<RegExpr context="#stay" attribute="Funcs"  String="\b\w+(?=&quot;)"/>
+
 				<DetectIdentifier/>
 
 				<Detect2Chars context="Pragmatar" attribute="Pragmas" char="{" char1="."/>
@@ -195,70 +221,83 @@
 
 				<AnyChar context="#stay" attribute="Brackets" String="()[]{},:;"/>
 				<AnyChar context="#stay" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;|?"/>
-
-				<Int        context="#stay"   attribute="Decimal"/>
-				<HlCChar    context="#stay"   attribute="Char"/>
-                <DetectChar context="string" attribute="String" char="&quot;" beginRegion="String"/>
-
-				<RegExpr context="DocComment2" attribute="DocComment" String="##[[]"/>
-				<Detect2Chars context="DocComment1" attribute="DocComment" char="#" char1="#"/>
-				<Detect2Chars context="Comment2" attribute="Comment" char="#" char1="[" beginRegion="Comment"/>
-				<DetectChar context="Comment1" attribute="Comment" char="#"/>
+				<HlCChar context="#stay" attribute="Char"/>
 			</context>
 
-            <context name="stringescape" attribute="String Char" lineEndContext="#stay">
-              <RegExpr attribute="String Char" String="\\[&quot;abfnrtv]" context="#stay"/>
-            </context>
+			<context name="stringescape" attribute="String" lineEndContext="#stay">
+				<RegExpr attribute="String Char" String="\\[&quot;abfnrtv]" context="#stay"/>
+			</context>
 
-			<context name="string" attribute="String" lineEndContext="#stay">
-                <IncludeRules context="stringescape"/>
+			<context name="string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="stringescape"/>
 				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
 			</context>
+			<context name="tripleq-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect context="#pop" attribute="String" String="&quot;&quot;&quot;" endRegion="String"/>
+			</context>
+			<context name="raw-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<Detect2Chars context="#stay" attribute="String Char" char="&quot;" char1="&quot;"/>
+				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
+			</context>
+			<context name="re-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectChar context="#pop" attribute="String" char="&quot;" endRegion="String"/>
+				<DetectChar context="#stay" attribute="String" char="/"/> <!-- Avoid closing string by JavaScript -->
+				<IncludeRules context="Regular Expression##JavaScript"/>
+			</context>
 
 			<context name="Comment1" attribute="Comment" lineEndContext="#pop">
 				<LineContinue attribute="Comment" context="#stay"/>
-				<RegExpr      attribute="Alert"   context="#stay" String="(BUG|XXXX|HACK)"/>
-				<RegExpr      attribute="Warning" context="#stay" String="(TODO|FIXME)"/>
-				<RegExpr      attribute="Info"    context="#stay" String="(NOTE)"/>
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 
 			<context name="DocComment1" attribute="DocComment" lineEndContext="#pop">
 				<LineContinue attribute="DocComment" context="#stay"/>
 			</context>
 
-			<context name="DocComment2" attribute="DocComment" lineEndContext="#stay">
+			<context name="DocComment2" attribute="DocComment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<LineContinue attribute="DocComment" context="#stay"/>
-                <RegExpr attribute="DocComment" context="DocComment2" String="##[[]" beginRegion="DocComment"/>
-				<RegExpr attribute="DocComment" context="#pop" String="[]]##" endRegion="DocComment"/>
+				<StringDetect attribute="DocComment" context="DocComment2" String="##[" beginRegion="DocComment"/>
+				<StringDetect attribute="DocComment" context="#pop" String="]##" endRegion="DocComment"/>
 			</context>
 
-			<context name="Comment2" attribute="Comment" lineEndContext="#stay">
+			<context name="Comment2" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<LineContinue attribute="Comment" context="#stay"/>
-				<RegExpr      attribute="Alert"   context="#stay" String="(BUG|XXXX|HACK)"/>
-				<RegExpr      attribute="Warning" context="#stay" String="(TODO|FIXME)"/>
-				<RegExpr      attribute="Info"    context="#stay" String="(NOTE)"/>
-                <Detect2Chars attribute="Comment" context="Comment2" char="#" char1="[" beginRegion="Comment"/>
+				<Detect2Chars attribute="Comment" context="Comment2" char="#" char1="[" beginRegion="Comment"/>
 				<Detect2Chars attribute="Comment" context="#pop" char="]" char1="#" endRegion="Comment"/>
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 
+			<context name="Start-Typetar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Typetar">
+				<DetectSpaces context="#stay" attribute="Normal Text"/>
+			</context>
 			<context name="Typetar" attribute="TypeDefs" lineEndContext="#pop">
 				<DetectChar context="#stay" attribute="Brackets" char="."/>
+				<DetectChar context="#pop" char="#" lookAhead="true"/>
+				<DetectSpaces context="#pop" attribute="Normal Text"/>
 				<AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>
-				<AnyChar context="#pop" attribute="Symbols"  String=" +-*/=!@$%^&amp;&lt;&gt;"/>
+				<AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>
+				<keyword context="#pop" attribute="Operators" String="operators"/>
 			</context>
 
+			<context name="Start-Proctar" attribute="TypeDefs" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!Proctar">
+				<DetectSpaces context="#stay" attribute="Normal Text"/>
+			</context>
 			<context name="Proctar" attribute="ProcDefs" lineEndContext="#pop">
 				<DetectChar context="QuoteProctar" attribute="ProcDefs" char="`"/>
 				<DetectChar context="#stay" attribute="Brackets" char="."/>
+				<DetectChar context="#pop" char="#" lookAhead="true"/>
+				<DetectSpaces context="#pop" attribute="Normal Text"/>
 				<AnyChar context="#pop" attribute="Brackets" String="()[]{},:;"/>
-				<AnyChar context="#pop" attribute="Symbols"  String=" +-*/=!@$%^&amp;&lt;&gt;"/>
+				<AnyChar context="#pop" attribute="Symbols"  String="+-*/=!@$%^&amp;&lt;&gt;"/>
 			</context>
 
 			<context name="QuoteProctar" attribute="ProcDefs" lineEndContext="#pop">
 				<DetectChar context="#pop" attribute="ProcDefs" char="`"/>
 			</context>
 
-			<context name="Pragmatar" attribute="Pragmas" lineEndContext="#stay">
+			<context name="Pragmatar" attribute="Pragmas" lineEndContext="#stay" noIndentationBasedFolding="true">
 				<Detect2Chars context="#pop" attribute="Pragmas" char="." char1="}"/>
 			</context>
 
@@ -275,19 +314,21 @@
 		<itemDatas>
 			<itemData name="Normal Text" defStyleNum="dsNormal"    spellChecking="false"/>
 			<itemData name="Keywords"    defStyleNum="dsKeyword"   spellChecking="false"/>
-			<itemData name="Controls"    defStyleNum="dsDataType"  spellChecking="false"/>
+			<itemData name="Controls"    defStyleNum="dsControlFlow" spellChecking="false"/>
 			<itemData name="Pragmas"     defStyleNum="dsAttribute" spellChecking="false"/>
-			<itemData name="Types"       defStyleNum="dsDataType"  spellChecking="false"/>
-			<itemData name="Props"       defStyleNum="dsDataType"  spellChecking="false"/>
-			<itemData name="Funcs"       defStyleNum="dsDataType"  spellChecking="false"/>
+			<itemData name="Types"       defStyleNum="dsAttribute" spellChecking="false"/>
+			<itemData name="Props"       defStyleNum="dsAttribute" spellChecking="false"/>
+			<itemData name="Funcs"       defStyleNum="dsFunction"  spellChecking="false"/>
 			<itemData name="Attrs"       defStyleNum="dsDataType"  spellChecking="false"/>
 			<itemData name="Others"      defStyleNum="dsOthers"    spellChecking="false"/>
+			<itemData name="Operators"   defStyleNum="dsComment"   spellChecking="false" bold="true" italic="false"/>
+			<itemData name="Constants"   defStyleNum="dsConstant"  spellChecking="false" bold="true"/>
 
 			<itemData name="TypeDefs"    defStyleNum="dsDataType" spellChecking="false" bold="true"/>
 			<itemData name="ProcDefs"    defStyleNum="dsString"   spellChecking="false" bold="true"/>
 
 			<itemData name="Brackets"    defStyleNum="dsKeyword"  spellChecking="false"/>
-			<itemData name="Symbols"     defStyleNum="dsComment"  spellChecking="false"/>
+			<itemData name="Symbols"     defStyleNum="dsComment"  spellChecking="false" italic="false"/>
 
 			<itemData name="Decimal"     defStyleNum="dsDecVal"   spellChecking="false"/>
 			<itemData name="Hex"         defStyleNum="dsBaseN"    spellChecking="false"/>
@@ -296,22 +337,20 @@
 			<itemData name="Float"       defStyleNum="dsFloat"    spellChecking="false"/>
 			<itemData name="Char"        defStyleNum="dsChar"     spellChecking="false"/>
 			<itemData name="String"      defStyleNum="dsString"   spellChecking="false"/>
-			<itemData name="Comment"     defStyleNum="dsComment"  spellChecking="false"/>
-			<itemData name="Alert"       defStyleNum="dsAlert"    spellChecking="false" bold="true"/>
-			<itemData name="Warning"     defStyleNum="dsWarning"  spellChecking="false" bold="true"/>
-			<itemData name="Info"        defStyleNum="dsInformation" spellChecking="false" bold="true"/>
-
-			<itemData name="DocComment"  defStyleNum="dsDocumentation"  spellChecking="true"/>
+			<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
+			<itemData name="Comment"     defStyleNum="dsComment" />
+			<itemData name="DocComment"  defStyleNum="dsDocumentation" spellChecking="true"/>
 		</itemDatas>
 	</highlighting>
 
 	<general>
 		<comments>
-			<comment name="singleLine" start="#" position="beforewhitespace"/>
+			<comment name="singleLine" start="#" position="afterwhitespace"/>
+			<comment name="multiLine" start="#[" end="]#" region="Comment"/>
 		</comments>
-		<folding indentationsensitive="true" />
-		<indentation mode="nimrod"/>
+		<folding indentationsensitive="true"/>
 		<keywords casesensitive="0"/>
 	</general>
 
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/noweb.xml b/xml/noweb.xml
--- a/xml/noweb.xml
+++ b/xml/noweb.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="noweb" version="2" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
+<language name="noweb" version="3" kateversion="2.4" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
 <!-- 
 #########################################################################
 # First version added to repository was 0.4, added as 1.0 .
@@ -48,5 +48,10 @@
       <itemData name="SectionName"  defStyleNum="dsRegionMarker" italic="true" />
     </itemDatas>
   </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+    </comments>
+  </general>
 </language>
 
diff --git a/xml/objectivec.xml b/xml/objectivec.xml
--- a/xml/objectivec.xml
+++ b/xml/objectivec.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C" version="3" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
+<language name="Objective-C" version="5" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -63,10 +63,9 @@
         <Int attribute="Decimal" context="Int Suffixes"/>
         <HlCChar attribute="Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>
+        <IncludeRules context="FindComments" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="^#"/>
+        <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" column="0"/>
         <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />
       </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
@@ -87,20 +86,31 @@
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment"/>
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true"/>
+      </context>
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!SingleLineComment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="/" char1="*" beginRegion="Comment" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Preprocessor" lineEndContext="Default" name="Preprocessor">
         <LineContinue attribute="Preprocessor" context="#stay"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">
-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>
+        <IncludeRules context="FindComments" />
       </context>
     </contexts>
     <itemDatas>
@@ -123,8 +133,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/objectivecpp.xml b/xml/objectivecpp.xml
--- a/xml/objectivecpp.xml
+++ b/xml/objectivecpp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C++" version="5" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
+<language name="Objective-C++" version="7" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objcpp-src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -164,8 +164,6 @@
         <DetectSpaces />
         <RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0" beginRegion="Outscoped" firstNonSpace="true" />
         <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" firstNonSpace="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Data Type" context="#stay" String="types"/>
@@ -179,20 +177,31 @@
         <Int attribute="Decimal" context="Int Suffixes"/>
         <HlCChar attribute="Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*"/>
 
+        <IncludeRules context="FindComments" />
+
         <Detect2Chars attribute="String" context="String" char="@" char1="&quot;" />
 
         <keyword attribute="Extensions" context="#stay" String="extensions" />
 
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]{|}~^&#59;"/>
       </context>
+
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!SingleLineComment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="/" char1="*" beginRegion="Comment" />
+      </context>
+
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
           <AnyChar String="fF" attribute="Float" context="#pop"/>
       </context>
@@ -212,16 +221,15 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
-        <IncludeRules context="##Alerts" />
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" name="MultiLineCommentPrep">
         <DetectSpaces />
-        <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
@@ -236,9 +244,7 @@
         <RegExpr attribute="Preprocessor" context="#stay" String="define.*"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineCommentPrep" char="/" char1="*"/>
+        <IncludeRules context="FindComments" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
@@ -250,9 +256,7 @@
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*(endif|else|elif)" endRegion="Outscoped" firstNonSpace="true" />
       </context>
@@ -262,9 +266,7 @@
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="SingleLineComment" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true"/>
         <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="Outscoped" firstNonSpace="true"/>
       </context>
@@ -293,8 +295,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/ocaml.xml b/xml/ocaml.xml
--- a/xml/ocaml.xml
+++ b/xml/ocaml.xml
@@ -17,7 +17,7 @@
           extensions="*.ml;*.mli"
           mimetype="text/x-ocaml"
           section="Sources"
-          version="6"
+          version="7"
           priority="10"
           kateversion="2.4"
           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
@@ -431,6 +431,10 @@
         <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
         <!-- Strings in Ocaml comments must be well-formed: -->
         <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />
+
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
diff --git a/xml/octave.xml b/xml/octave.xml
--- a/xml/octave.xml
+++ b/xml/octave.xml
@@ -20,8 +20,8 @@
   Thanks to Luis Silvestre for previous version and suggestions
 -->
 
-
-<language name="Octave" version="5" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
+<!-- low priority to let Objective-C win for .m files per default -->
+<language name="Octave" version="8" kateversion="5.0" section="Scientific" extensions="*.octave;*.m;*.M" priority="-9" mimetype="text/octave" casesensitive="1" license="GPL" author="Luis Silvestre and Federico Zenith">
 
   <highlighting>
 
@@ -2765,7 +2765,8 @@
         <keyword context="#stay" attribute="Functions" String="functions" />
         <keyword context="#stay" attribute="Builtin" String="builtin"/>
         <keyword context="#stay" attribute="Forge" String="forge" />
-        <RegExpr context="#stay" attribute="Comment" String="[%#].*$" />
+        <DetectChar context="Comment" attribute="Comment" char="%" />
+        <DetectChar context="Comment" attribute="Comment" char="#" />
         <RegExpr context="#stay" attribute="Variable" String="[a-zA-Z]\w*" />
         <RegExpr context="#stay" attribute="Number" String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
         <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
@@ -2801,6 +2802,13 @@
       </context>
 
 
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
+
+
     </contexts>
 
     <itemDatas>
@@ -2823,8 +2831,7 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="%" />
-      <comment name="singleLine" start="#" />
+      <comment name="singleLine" start="#" position="afterwhitespace" />
     </comments>
     <keywords weakDeliminator="." casesensitive="1"/>
   </general>
diff --git a/xml/opencl.xml b/xml/opencl.xml
--- a/xml/opencl.xml
+++ b/xml/opencl.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="OpenCL" section="Sources"
-          version="4" kateversion="3.4"
+          version="6" kateversion="5.0"
           indenter="cstyle"
           extensions="*.cl"
           mimetype="text/x-clsrc"
@@ -125,10 +125,8 @@
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-	<RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="Outscoped" String="#\s*if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
         <DetectChar context="AfterHash" char="#" firstNonSpace="true" lookAhead="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
-        <StringDetect attribute="Region Marker" context="Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Data Type" context="#stay" String="types"/>
         <DetectIdentifier />
@@ -140,12 +138,23 @@
         <Int attribute="Decimal" context="Int Suffixes"/>
         <HlCChar attribute="Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
       </context>
 
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/"/>
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+      </context>
+
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
           <AnyChar String="fF" attribute="Float" context="#pop"/>
       </context>
@@ -172,12 +181,16 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Error" lineEndContext="#pop" name="AfterHash">
@@ -193,27 +206,19 @@
         <LineContinue attribute="Preprocessor" context="#stay"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment2" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/" />
+        <IncludeRules context="FindComments" />
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
         <LineContinue attribute="Preprocessor" context="#stay"/>
       </context>
 
-      <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment2" />
-      </context>
-
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*el(?:se|if)" firstNonSpace="true" />
         <RegExpr attribute="Preprocessor" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
@@ -224,9 +229,7 @@
         <IncludeRules context="##Alerts" />
         <DetectIdentifier />
         <DetectChar attribute="String" context="String" char="&quot;"/>
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+        <IncludeRules context="FindComments" />
         <RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="PP" firstNonSpace="true" />
         <RegExpr attribute="Comment" context="#pop" String="#\s*endif" endRegion="PP" firstNonSpace="true" />
       </context>
@@ -253,8 +256,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" additionalDeliminator="'&quot;" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/pascal.xml b/xml/pascal.xml
--- a/xml/pascal.xml
+++ b/xml/pascal.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language name="Pascal"
           section="Sources" 
-          version="2"
+          version="3"
           kateversion="3.3"
           extensions="*.p;*.pas;*.pp"
           mimetype="text/x-pascal" 
@@ -139,12 +139,6 @@
       <item>File</item>
       <item>Text</item>
     </list>
-    <list name="attention">
-      <item>FIXME</item>
-      <item>TODO</item>
-      <item>NOTE</item>
-      <item>###</item>
-    </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <RegExpr attribute="Keyword" context="#stay" String="\b(begin|case|record)(?=(\{[^}]*(\}|$)|\(\*.*(\*\)|$))*([\s]|$|//))" insensitive="true" beginRegion="Region1"/>
@@ -185,15 +179,21 @@
         <DetectChar attribute="Directive" context="#pop" char="}"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Comment1">
-        <keyword attribute="Alert" context="#stay" String="attention" />
+        <DetectSpaces />
         <DetectChar attribute="Comment" context="#pop" char="}"              endRegion="Region2"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Comment2">
-        <keyword attribute="Alert" context="#stay" String="attention" />
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")"   endRegion="Region3"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment3">
-        <keyword attribute="Alert" context="#stay" String="attention" />
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
     </contexts>
     <itemDatas>
@@ -206,14 +206,14 @@
       <itemData name="String"      defStyleNum="dsString" />
       <itemData name="Directive"   defStyleNum="dsOthers" />
       <itemData name="Comment"     defStyleNum="dsComment" />
-      <itemData name="Alert"        defStyleNum="dsAlert" />
     </itemDatas>
   </highlighting>
   <general>
     <keywords casesensitive="0" />
     <comments>
-      <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="{" end="}" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
+      <comment name="multiLine" start="{" end="}" region="Region2" />
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/perl.xml b/xml/perl.xml
--- a/xml/perl.xml
+++ b/xml/perl.xml
@@ -39,7 +39,7 @@
 
    Enhance tr/// and y/// support.
 -->
-<language name="Perl" version="11" kateversion="2.4" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" version="13" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <item>if</item>
@@ -534,7 +534,7 @@
         <DetectChar attribute="Pattern" context="subst_curlybrace_pattern_recursive" char="{" />
       </context>
       <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr attribute="Comment" context="#stay" String="#.*$" />
+        <DetectChar attribute="Comment" context="comment" char="#" />
         <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
       </context>
       <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
@@ -552,8 +552,12 @@
         <IncludeRules context="subst_curlybrace_pattern" />
       </context>
 
+      <context name="subst_maybe_comment" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!comment" char="#" />
+      </context>
+
       <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
         <DetectChar attribute="Operator" context="subst_paren_replace" char=")" endRegion="Pattern" />
         <!-- Round brackets of RegExp pattern inside -->
         <DetectChar attribute="Pattern Internal Operator" context="subst_paren_pattern_internal_recursive" char="(" />
@@ -570,7 +574,7 @@
       </context>
 
       <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
         <IncludeRules context="regex_pattern_internal_ip" />
         <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />
       </context>
@@ -592,7 +596,7 @@
       </context>
 
       <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
+        <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
         <IncludeRules context="regex_pattern_internal" />
         <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />
       </context>
@@ -658,7 +662,7 @@
 
       <!-- rules internal stuff wrt regex patterns -->
       <context name="regex_pattern_internal_rules_1" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="#stay" String="#.*$" firstNonSpace="true" />
+        <DetectChar attribute="Comment" context="comment" char="#" firstNonSpace="true" />
         <RegExpr attribute="Special Variable" context="#stay" String="\\c[^\s\\]" />
         <RegExpr attribute="Special Variable" context="#stay" String="\\g(\{(\w+|\-\d+)\}|\d+)" />
         <RegExpr attribute="Special Variable" context="#stay" String="\\k(\{\w+\}|&lt;\w+&gt;|'\w+')" />
@@ -838,30 +842,33 @@
         <DetectSpaces />
         <DetectIdentifier />
         <RegExpr attribute="Pod" context="#stay" String="\=(?:head[1-6]|over|back|item|for|begin|end|pod)\s*.*" column="0" beginRegion="POD" endRegion="POD"/>
-        <RegExpr attribute="Pod" context="#pop" String="\=cut.*$" column="0" endRegion="POD"/>
+        <StringDetect attribute="Pod" context="Pod" String="=cut" column="0" endRegion="POD"/>
       </context>
 
       <context name="comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
         <DetectIdentifier />
       </context>
 
+      <context name="Pod" attribute="Pod" lineEndContext="#pop#pop"/>
+
     </contexts>
     <itemDatas>
       <itemData name="Normal Text"               defStyleNum="dsNormal" />
       <itemData name="Keyword"                   defStyleNum="dsKeyword" />
       <itemData name="Pragma"                    defStyleNum="dsKeyword" />
       <itemData name="Function"                  defStyleNum="dsFunction" />
-      <itemData name="Operator"                  defStyleNum="dsKeyword" color="#008000"/>
+      <itemData name="Operator"                  defStyleNum="dsOthers" bold="1" /> <!-- #008000 -->
       <itemData name="Data Type"                 defStyleNum="dsDataType" />
-      <itemData name="Special Variable"          defStyleNum="dsDataType" color="#C00000" selColor="#C00000" bold="0" italic="0" />
+      <itemData name="Special Variable"          defStyleNum="dsWarning" bold="0" italic="0" /> <!-- #C00000 -->
       <itemData name="Decimal"                   defStyleNum="dsDecVal" />
       <itemData name="Octal"                     defStyleNum="dsBaseN" />
       <itemData name="Hex"                       defStyleNum="dsBaseN" />
       <itemData name="Bin"                       defStyleNum="dsBaseN" />
       <itemData name="Float"                     defStyleNum="dsFloat" />
-      <itemData name="String"                    defStyleNum="dsString" color="#FF6C6C" selColor="#FF6C6C" bold="0" italic="0" />
+      <itemData name="String"                    defStyleNum="dsSpecialString" /> <!-- #FF6C6C -->
       <itemData name="String (interpolated)"     defStyleNum="dsString" />
       <itemData name="String Special Character"  defStyleNum="dsChar" />
       <itemData name="Pattern"                   defStyleNum="dsOthers" />
diff --git a/xml/php.xml b/xml/php.xml
--- a/xml/php.xml
+++ b/xml/php.xml
@@ -73,7 +73,7 @@
   <!ENTITY types "int|integer|bool|boolean|float|double|real|string|array|object">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="10" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="12" kateversion="5.0" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <list name="control structures">
@@ -10863,9 +10863,8 @@
         <!--/ Alternate PHP Block Syntax -->
 
         <DetectChar attribute="Comment" context="onelinecomment" char="#" />
-        <IncludeRules context="##Doxygen" />
-        <Detect2Chars attribute="Comment" context="onelinecomment" char="/" char1="/" />
-        <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="Comment" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
         <keyword attribute="Error" context="#stay" String="deprecated"/>
         <keyword attribute="Control Structures" context="#stay" String="control structures" />
         <keyword attribute="Keyword" context="#stay" String="keywords" />
@@ -10911,6 +10910,12 @@
         <AnyChar attribute="Other" context="#stay" String=";(),[]" />
       </context>
 
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />
+      </context>
+
       <context name="ternary" attribute="PHP Text" lineEndContext="#stay">
         <!-- the paamayim nekudotayim (::) must not start a subcontext that is never terminated. -->
         <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
@@ -10923,10 +10928,12 @@
       </context>
 
       <context name="onelinecomment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <StringDetect attribute="Keyword" context="#pop" lookAhead="true" String="?&gt;" />
         <IncludeRules context="##Alerts" />
       </context>
       <context name="twolinecomment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" />
         <IncludeRules context="##Alerts" />
       </context>
@@ -11046,8 +11053,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="0" weakDeliminator="" additionalDeliminator="@" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/pike.xml b/xml/pike.xml
--- a/xml/pike.xml
+++ b/xml/pike.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
 <!-- FIXME: Find a way to prevent ranges (e.g. [1..] or [0..99]) from matching as floats. -pp -->
-<language name="Pike" version="2" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">
+<language name="Pike" version="3" kateversion="2.4" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -66,24 +66,28 @@
 	<LineContinue attribute="String" context="#stay"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Line Comment">
-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/>
+	<DetectSpaces />
+	<IncludeRules context="##Alerts"/>
+	<IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Block Comment">
+	<DetectSpaces />
 	<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/>
+	<IncludeRules context="##Alerts"/>
+	<IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
 	<RangeDetect attribute="Preprocessor Lib" context="#stay" char="&quot;" char1="&quot;"/>
 	<RangeDetect attribute="Preprocessor Lib" context="#stay" char="&lt;" char1="&gt;"/>
 	<Detect2Chars attribute="Comment" context="Line Comment" char="/" char1="/"/>
-	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*"/>
+	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>
 	<LineContinue attribute="Preprocessor" context="#stay"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped">
-	<RegExpr attribute="Note" context="#stay" String="(FIXME|TODO|NOT(IC)?E):?"/>
 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>
 	<RegExpr attribute="Comment" context="Outscoped intern" String="#\s*if" beginRegion="Outscoped" firstNonSpace="true"/>
 	<RegExpr attribute="Preprocessor" context="#pop" String="#\s*(endif|elif|else)" endRegion="Outscoped" firstNonSpace="true"/>
+	<IncludeRules context="##Alerts" />
       </context>         
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
 	<Detect2Chars attribute="Comment" context="Block Comment" char="/" char1="*" beginRegion="Comment"/>
@@ -105,16 +109,14 @@
       <itemData name="String"		defStyleNum="dsString"/>
       <itemData name="String Char"	defStyleNum="dsChar"/>
       <itemData name="Comment"		defStyleNum="dsComment"/>
-      <itemData name="Note"		defStyleNum="dsAlert"/>
       <itemData name="Preprocessor"	defStyleNum="dsOthers"/>
       <itemData name="Preprocessor Lib" defStyleNum="dsString"/>
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="#!"/>
       <comment name="singleLine" start="//"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="1"/>
   </general>
diff --git a/xml/postscript.xml b/xml/postscript.xml
--- a/xml/postscript.xml
+++ b/xml/postscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="PostScript" version="2" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
+<language name="PostScript" version="3" kateversion="2.2" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
 <highlighting>
 	<list name="keywords">
 		<item>abs</item>
@@ -405,10 +405,14 @@
 			<DetectChar attribute="Comment" context="Comment" char="%"/>
 			<Float attribute="Float" context="#stay"/>
 			<Int attribute="Decimal" context="#stay"/>
-		        <DetectChar attribute="String" context="String" char="("/>
+			<DetectChar attribute="String" context="String" char="("/>
 			<RegExpr attribute="Data Type" context="#stay" String="\/{1,2}[^\s\(\)\{\}\[\]%/]*"/>
 		</context>
-		<context attribute="Comment" lineEndContext="#pop" name="Comment"/>
+		<context attribute="Comment" lineEndContext="#pop" name="Comment">
+			<DetectSpaces />
+			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
+		</context>
 		<context attribute="Header" lineEndContext="#pop" name="Header"/>
 		<context attribute="String" lineEndContext="#stay" name="String">
 			<DetectChar attribute="String" context="#pop" char=")" />
@@ -432,3 +436,4 @@
 	<keywords casesensitive="0" />
 </general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/povray.xml b/xml/povray.xml
--- a/xml/povray.xml
+++ b/xml/povray.xml
@@ -5,7 +5,7 @@
 <!-- features full POV-Ray 3.6 syntax with special highlighting -->
 <!-- of variable and macro declarations                         -->
 <!-- v1.1: added MegaPOV 1.2.1 keywords (Febuary 2006)          -->
-<language name="POV-Ray" version="5" kateversion="2.4" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2">
+<language name="POV-Ray" version="7" kateversion="5.0" section="3D" extensions="*.inc;*.pov" mimetype="text/x-povray-script;text/x-povray-include" author="Christoph Hormann (chris_hormann@gmx.de)" license="LGPL" priority="2">
 	<highlighting>
 		<list name="keywords">
 			<item>aa_threshold</item>
@@ -923,45 +923,50 @@
 			</context>
 
 			<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+				<DetectSpaces />
 				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 
 			<context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
-				<IncludeRules context="##Alerts" />
+				<DetectSpaces />
 				<Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 		</contexts>
 
 		<itemDatas>
-			<itemData name="Normal Text"     defStyleNum="dsNormal"   color="#000000" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Keyword"         defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Unofficial"      defStyleNum="dsKeyword"  color="#0080d0" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Objects"         defStyleNum="dsKeyword"  color="#800000" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Texturing"       defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Transforms"      defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Declaration"     defStyleNum="dsKeyword"  color="#000080" selColor="#000080" bold="1" italic="0"/>
-			<itemData name="Macro"           defStyleNum="dsKeyword"  color="#000080" selColor="#000080" bold="1" italic="0"/>
-			<itemData name="Declare Keyword" defStyleNum="dsKeyword"  color="#990099" selColor="#990099" bold="1" italic="0"/>
-			<itemData name="Declare Macro"   defStyleNum="dsKeyword"  color="#CC0000" selColor="#990099" bold="1" italic="0"/>
-			<itemData name="Functions"       defStyleNum="dsKeyword"  color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Directives"      defStyleNum="dsOthers"   color="#3300ff" selColor="#3300ff" bold="1" italic="0"/>
-			<itemData name="Filetype"        defStyleNum="dsDataType" color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Constant"        defStyleNum="dsFloat"    color="#0000ff" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Float"           defStyleNum="dsFloat"    color="#0000ff" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="Char"            defStyleNum="dsChar"     color="#000080" selColor="#ffffff" bold="0" italic="0"/>
-			<itemData name="String"          defStyleNum="dsString"   color="#ff0000" selColor="#ff0000" bold="0" italic="0"/>
-			<itemData name="String Char"     defStyleNum="dsChar"     color="#ff00ff" selColor="#ff00ff" bold="0" italic="0"/>
-			<itemData name="Comment"         defStyleNum="dsComment"  color="#008000" selColor="#008000" bold="0" italic="0"/>
-			<itemData name="Symbol"          defStyleNum="dsNormal"   color="#660099" selColor="#660099" bold="0" italic="0"/>
-			<itemData name="Region Marker"   defStyleNum="dsRegionMarker"/>
+			<itemData name="Normal Text"     defStyleNum="dsNormal"       spellChecking="false" />
+			<itemData name="Keyword"         defStyleNum="dsVariable"     bold="0" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Unofficial"      defStyleNum="dsExtension"    bold="0" spellChecking="false" /> <!-- #0080d0 -->
+			<itemData name="Objects"         defStyleNum="dsWarning"      bold="0" spellChecking="false" /> <!-- #800000 -->
+			<itemData name="Texturing"       defStyleNum="dsAttribute"    bold="0" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Transforms"      defStyleNum="dsOthers"       bold="0" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Declaration"     defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Macro"           defStyleNum="dsPreprocessor" bold="1" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Declare Keyword" defStyleNum="dsFunction"     bold="1" spellChecking="false" /> <!-- #990099 -->
+			<itemData name="Declare Macro"   defStyleNum="dsImport"       bold="1" spellChecking="false" /> <!-- #CC0000 -->
+			<itemData name="Functions"       defStyleNum="dsFunction"     bold="0" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Directives"      defStyleNum="dsOthers"       bold="1" spellChecking="false" /> <!-- #3300ff -->
+			<itemData name="Filetype"        defStyleNum="dsDataType"     bold="0" spellChecking="false" /> <!-- #000080 -->
+			<itemData name="Constant"        defStyleNum="dsConstant"     spellChecking="false" /> <!-- #0000ff -->
+			<itemData name="Float"           defStyleNum="dsFloat"        spellChecking="false" /> <!-- #0000ff -->
+			<itemData name="Char"            defStyleNum="dsChar"         spellChecking="false" /> <!-- #000080 -->
+			<itemData name="String"          defStyleNum="dsString"                             /> <!-- #ff0000 -->
+			<itemData name="String Char"     defStyleNum="dsSpecialChar"  spellChecking="false" /> <!-- #ff00ff -->
+			<itemData name="Comment"         defStyleNum="dsComment"                            /> <!-- #008000 -->
+			<itemData name="Symbol"          defStyleNum="dsOperator"     spellChecking="false" /> <!-- #660099 -->
+			<itemData name="Region Marker"   defStyleNum="dsRegionMarker" />
 		</itemDatas>
 	</highlighting>
 
 	<general>
 		<comments>
-			<comment name="singleLine" start="//" />
-			<comment name="multiLine" start="/*" end="*/" />
+			<comment name="singleLine" start="//" position="afterwhitespace" />
+			<comment name="multiLine" start="/*" end="*/" region="Comment" />
 		</comments>
 		<keywords casesensitive="1" />
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,7 +1,7 @@
 <!DOCTYPE language SYSTEM "language.dtd">
 <language
   name="PowerShell"
-  version="6"
+  version="7"
   kateversion="5.0"
   extensions="*.ps1;*.ps1m;*.ps1d"
   section="Scripts"
@@ -880,7 +880,6 @@
         <IncludeRules context="Cmdlet" />
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1="&quot;" beginRegion="StringRegion"/>
-        <IncludeRules context="##Doxygen" />
         <DetectChar attribute="Comment" context="Commentar 1" char="#"/>
         <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" char1="#" beginRegion="CommentRegion"/>
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
@@ -907,9 +906,16 @@
       <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
         <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="#" char1="&gt;" endRegion="CommentRegion"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context attribute="Cmdlets" lineEndContext="#stay" name="Cmdlet">
         <keyword attribute="Function" context="#stay" String="cmdlets"/>
@@ -938,3 +944,4 @@
     <keywords casesensitive="0" weakDeliminator=":-"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/prolog.xml b/xml/prolog.xml
--- a/xml/prolog.xml
+++ b/xml/prolog.xml
@@ -105,7 +105,7 @@
     <!ENTITY bs         "\">
 ]>
 <language name="Prolog" section="Sources"
-	  version="10" kateversion="3.4"
+	  version="11" kateversion="3.4"
 	  mimetype="text/x-prolog"
 	  extensions="*.prolog;*.dcg;*.pro"
 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
@@ -778,6 +778,7 @@
 			    attribute="% italic predicates: w/ side effects" />
 		<DetectSpaces />
 		<IncludeRules context="##Alerts" />
+		<IncludeRules context="##Modelines" />
 		<DetectIdentifier />
 	    </context>
 
@@ -786,6 +787,7 @@
 	    <context name="1-comment" lineEndContext="#pop" attribute="% italic predicates: w/ side effects" >
 		<DetectSpaces />
 		<IncludeRules context="##Alerts" />
+		<IncludeRules context="##Modelines" />
 		<DetectIdentifier />
 	    </context>
 	    <context name="region_marker" lineEndContext="#pop" attribute="%BEGIN folding region" noIndentationBasedFolding="true" >
@@ -1029,3 +1031,4 @@
     your home directory. You have to open a new instance of kwrite/kate to use
     the new syntax file.
 -->
+<!-- kate: replace-tabs off; -->
diff --git a/xml/protobuf.xml b/xml/protobuf.xml
--- a/xml/protobuf.xml
+++ b/xml/protobuf.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Protobuf" version="7" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
+<language name="Protobuf" version="8" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
   <highlighting>
     <list name="keywords">
       <item>message</item>
@@ -82,12 +82,16 @@
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
     </contexts>
@@ -113,8 +117,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/pure.xml b/xml/pure.xml
--- a/xml/pure.xml
+++ b/xml/pure.xml
@@ -32,69 +32,69 @@
  Boston, MA 02111-1307, USA.
 
 -->
-<language name="Pure" version="1.2" kateversion="2.4" section="Sources" extensions="*.pure">
+<language name="Pure" version="3" kateversion="2.4" section="Sources" extensions="*.pure">
   <highlighting>
     <list name="blockstarters">
-      <item> case </item>
-      <item> when </item>
-      <item> with </item>
+      <item>case</item>
+      <item>when</item>
+      <item>with</item>
     </list>
     <list name="blockenders">
-      <item> end </item>
+      <item>end</item>
     </list>
     <list name="keywords">
-      <item> const </item>
-      <item> def </item>
-      <item> else </item>
-      <item> extern </item>
-      <item> if </item>
-      <item> infix </item>
-      <item> infixl </item>
-      <item> infixr </item>
-      <item> interface </item>
-      <item> let </item>
-      <item> namespace </item>
-      <item> nonfix </item>
-      <item> of </item>
-      <item> otherwise </item>
-      <item> outfix </item>
-      <item> postfix </item>
-      <item> prefix </item>
-      <item> private </item>
-      <item> public </item>
-      <item> then </item>
-      <item> type </item>
-      <item> using </item>
+      <item>const</item>
+      <item>def</item>
+      <item>else</item>
+      <item>extern</item>
+      <item>if</item>
+      <item>infix</item>
+      <item>infixl</item>
+      <item>infixr</item>
+      <item>interface</item>
+      <item>let</item>
+      <item>namespace</item>
+      <item>nonfix</item>
+      <item>of</item>
+      <item>otherwise</item>
+      <item>outfix</item>
+      <item>postfix</item>
+      <item>prefix</item>
+      <item>private</item>
+      <item>public</item>
+      <item>then</item>
+      <item>type</item>
+      <item>using</item>
     </list>
     <list name="special">
-      <item> catch </item>
-      <item> throw </item>
-      <item> __break__ </item>
-      <item> __trace__ </item>
+      <item>catch</item>
+      <item>throw</item>
+      <item>__break__</item>
+      <item>__trace__</item>
     </list>
     <list name="types">
-      <item> bigint </item>
-      <item> bool </item>
-      <item> char </item>
-      <item> float  </item>
-      <item> double  </item>
-      <item> expr </item>
-      <item> short </item>
-      <item> int </item>
-      <item> long </item>
-      <item> string </item>
-      <item> pointer </item>
-      <item> void </item>
-      <item> int8 </item>
-      <item> int16 </item>
-      <item> int32 </item>
-      <item> int64 </item>
-      <item> matrix </item>
-      <item> dmatrix </item>
-      <item> cmatrix </item>
-      <item> imatrix </item>
-      <item> smatrix </item>
-      <item> nmatrix </item>
+      <item>bigint</item>
+      <item>bool</item>
+      <item>char</item>
+      <item>float</item>
+      <item>double</item>
+      <item>expr</item>
+      <item>short</item>
+      <item>int</item>
+      <item>long</item>
+      <item>string</item>
+      <item>pointer</item>
+      <item>void</item>
+      <item>int8</item>
+      <item>int16</item>
+      <item>int32</item>
+      <item>int64</item>
+      <item>matrix</item>
+      <item>dmatrix</item>
+      <item>cmatrix</item>
+      <item>imatrix</item>
+      <item>smatrix</item>
+      <item>nmatrix</item>
     </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
@@ -108,7 +108,7 @@
         <RegExpr attribute="Number" context="#stay" String="0x[A-Za-z0-9]+"/>
         <Float attribute="Number" context="#stay"/>
         <Int attribute="Number" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay"/>
+        <HlCChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
         <Detect2Chars attribute="Comment" context="Comment1" char="/" char1="*" beginRegion="Comment" />
         <Detect2Chars attribute="Comment" context="Comment2" char="/" char1="/"/>
@@ -118,12 +118,17 @@
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
-      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
-      </context>
       <context attribute="Comment" lineEndContext="#stay" name="Comment1">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Comment2"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Comment2">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" />
@@ -140,7 +145,8 @@
     <keywords casesensitive="1" />
     <comments>
       <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/purebasic.xml b/xml/purebasic.xml
--- a/xml/purebasic.xml
+++ b/xml/purebasic.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">
-<language name="PureBasic" version="7" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >
+<language name="PureBasic" version="8" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >
   <highlighting>
     <list name="keywords">
       <item>Break</item>
@@ -1738,6 +1738,7 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment1">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <IncludeRules context="##Modelines" />
       </context>
@@ -1760,7 +1761,7 @@
   <general>
     <keywords casesensitive="0" />
     <comments>
-      <comment name="singleLine" start=";" />
+      <comment name="singleLine" start=";" position="afterwhitespace" />
     </comments>
   </general>
 </language>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -19,7 +19,7 @@
 <!-- v2.07 add support for %prog and co, see bug 142832 -->
 <!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
 <!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="11" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+<language name="Python" version="12" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
 	<highlighting>
 		<list name="import">
 			<item>import</item>
@@ -447,6 +447,7 @@
 			<!-- Comments -->
 
 			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces />
 				<IncludeRules context="##Alerts" />
 				<IncludeRules context="##Modelines" />
 			</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="7" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
+<language name="QML" version="9" kateversion="5.0" section="Scripts" extensions="*.qml;*.qmltypes"
           mimetype="text/x-qml;application/x-qml" indenter="cstyle"
           author="Milian Wolff (mail@milianw.de)" license="MIT">
   <highlighting>
@@ -130,7 +130,6 @@
         <keyword attribute="Property Type" context="#stay" String="types" />
         <DetectSpaces />
         <DetectIdentifier />
-        <DetectSpaces />
         <DetectChar char=":" context="#pop" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Signal">
@@ -141,9 +140,7 @@
       <context attribute="Normal Text" name="SignalParameter" lineEndContext="#pop">
         <DetectSpaces />
         <keyword attribute="Property Type" context="#stay" String="types" />
-        <DetectSpaces />
         <DetectIdentifier />
-        <DetectSpaces />
         <DetectChar char=")" context="#pop"/>
       </context>
       <!-- QML supports multi-line strings, which are not supported by Javascript -->
@@ -168,10 +165,10 @@
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal"  spellChecking="false" />
       <itemData name="Import"  defStyleNum="dsKeyword"  spellChecking="false" />
-      <itemData name="ImportValue"  defStyleNum="dsString"  spellChecking="false" />
+      <itemData name="ImportValue"  defStyleNum="dsImport"  spellChecking="false" />
       <itemData name="Keywords"  defStyleNum="dsKeyword"  spellChecking="false" />
-      <itemData name="Elements" defStyleNum="dsKeyword" color="#008000" selColor="#00ffff" bold="0" italic="0" spellChecking="false"/>
-      <itemData name="Signal" defStyleNum="dsKeyword" color="#0095ff" selColor="#ffffff" spellChecking="false"/>
+      <itemData name="Elements" defStyleNum="dsOthers" spellChecking="false"/> <!-- #008000 -->
+      <itemData name="Signal" defStyleNum="dsExtension" bold="1" spellChecking="false"/> <!-- #0095ff -->
       <itemData name="Property Type" defStyleNum="dsDataType" spellChecking="false" />
       <itemData name="String"       defStyleNum="dsString" />
       <itemData name="Objects"      defStyleNum="dsExtension" bold="0" spellChecking="false" />
@@ -180,7 +177,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
       <comment name="multiLine" start="/*" end="*/" />
     </comments>
     <keywords casesensitive="1" />
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="8" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="9" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -56,7 +56,7 @@
 			<LineContinue attribute="Operator" context="#stay"/>
 			<DetectChar attribute="Symbol" context="#pop" char=")"/>
 
-			<RegExpr attribute="Identifier" context="#stay" String="[a-zA-Z_\.][0-9a-zA-Z_\.]*[\s]*[:]?=(?=([^=]|$))"/>
+			<RegExpr attribute="Identifier" context="#stay" String="[a-zA-Z_\.][0-9a-zA-Z_\.]*[\s]*[:]?=(?=[^=]|$)"/>
 
 			<IncludeRules context="CommonRules"/>
 			<DetectChar attribute="Error" context="#stay" char="}" />
@@ -79,22 +79,32 @@
 
 		<context attribute="Normal Text" lineEndContext="#stay" name="operator_rhs" fallthrough="true" fallthroughContext="#pop">
 			<!-- While there is nothing of interest, stay in the context -->
-			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>
-			<DetectChar attribute="Comment" context="Comment" char="#"/>
-			<DetectChar attribute="String" context="#stay" char=" "/>
+			<DetectSpaces />
+			<IncludeRules context="FindComments"/>
 			<!-- Operators other than +, -, and ! directly after another operator are an error. -->
-			<RegExpr attribute="Error" context="#stay" String="(\*|/|&lt;|&gt;|\!=|=|\||&amp;|:|\^|@|\$|~)"/>
+			<Detect2Chars attribute="Error" context="#stay" char="!" char1="="/>
+			<AnyChar attribute="Error" context="#stay" String="*/&lt;&gt;=|&amp;:^@$~"/>
 		</context>
 
+		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>
+			<DetectChar attribute="Comment" context="Comment" char="#"/>
+		</context>
 		<context attribute="Headline" lineEndContext="#pop" name="Headline">
+			<DetectSpaces />
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Comment">
+			<DetectSpaces />
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 		</context>
 
 		<!-- This context is not really used, but contains the common rules -->
 		<context name="CommonRules" lineEndContext="#stay" attribute="Normal Text" >
+			<DetectSpaces />
+			<IncludeRules context="FindComments"/>
 			<DetectChar attribute="String" context="string" char="&quot;"/>
 			<DetectChar attribute="String" context="string2" char="'"/>
 			<DetectChar attribute="String" context="backquotedsymbol" char="`"/>
@@ -105,48 +115,56 @@
 			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
 			<RegExpr attribute="Keyword" context="#stay" String="\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
 			<DetectChar attribute="Symbol" context="parenthesis" char="("/>
-			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>
-			<DetectChar attribute="Comment" context="Comment" char="#"/>
 
 			<!-- For (assignment) operators, enter a new context operator_rhs to check what follows (generally, that should not be another op) -->
-			<RegExpr attribute="Assign" context="operator_rhs" String="[&lt;]{1,2}\-"/>
-			<RegExpr attribute="Assign" context="operator_rhs" String="\-[&gt;]{1,2}"/>
+			<StringDetect attribute="Assign" context="operator_rhs" String="&lt;&lt;-"/>
+			<Detect2Chars attribute="Assign" context="operator_rhs" char="&lt;" char1="-"/>
+			<StringDetect attribute="Assign" context="operator_rhs" String="-&gt;&gt;"/>
+			<Detect2Chars attribute="Assign" context="operator_rhs" char="-" char1="&gt;"/>
 			<RegExpr attribute="Assign" context="operator_rhs" String="=(?!=)"/>
-			<RegExpr attribute="Operator" context="operator_rhs" String="(\+|\-|\*{1,2}|/|&lt;=?|&gt;=?|={1,2}|\!=?|\|{1,2}|&amp;{1,2}|:{1,3}|\^|@|\$|~)"/>
-			<RegExpr attribute="Operator" context="operator_rhs" String="%[^%]*%"/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="*" char1="*"/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&lt;" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&gt;" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="=" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="!" char1="="/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="|" char1="|"/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char="&amp;" char1="&amp;"/>
+			<StringDetect attribute="Operator" context="operator_rhs" String=":::"/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char=":" char1=":"/>
+			<AnyChar attribute="Operator" context="operator_rhs" String="+-*/&lt;&gt;=!|&amp;:^@$~"/>
+			<RangeDetect attribute="Operator" context="operator_rhs" char="%" char1="%"/>
 
 			<DetectChar attribute="Symbol" context="ctx0" char="{" beginRegion="Brace1" />
 
 			<!-- This is needed only to assist variable based indentation -->
-			<DetectChar attribute="Symbol" context="#stay" char="[" />
-			<DetectChar attribute="Symbol" context="#stay" char="]" />
+			<AnyChar attribute="Symbol" context="#stay" String="[]" />
 		</context>
 	</contexts>
 
 	<itemDatas>
-		<!-- KDE default colors: http://accessibility.kde.org/oxygen.php?color=white -->
-		<itemData name="Normal Text" defStyleNum="dsNormal"/>
-		<itemData name="Symbol" defStyleNum="dsNormal"/>
-		<itemData name="Keyword" defStyleNum="dsKeyword"/>
-		<itemData name="Identifier" defStyleNum="dsDataType"/>
+		<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+		<itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+		<itemData name="Keyword" defStyleNum="dsFunction" spellChecking="false"/>
+		<itemData name="Identifier" defStyleNum="dsAttribute" spellChecking="false"/>
 		<itemData name="String" defStyleNum="dsString"/>
-		<itemData name="Headline" defStyleNum="dsComment" color="#b00000" selColor="#b00000" bold="1" italic="0"/> <!-- KDE default color: text 5 -->
+		<itemData name="Headline" defStyleNum="dsDocumentation" bold="1"/>
 		<itemData name="Comment" defStyleNum="dsComment"/>
-		<itemData name="Assign" defStyleNum="dsNormal" color="#336366" selColor="#ccc099" bold="1" italic="0"/> <!-- KDE default color: text 7 -->
-		<itemData name="Control Structure" defStyleNum="dsControlFlow"/>
-		<itemData name="Reserved Words" defStyleNum="dsOthers"/>
-		<itemData name="Error" defStyleNum="dsError"/>
-		<itemData name="Operator" defStyleNum="dsOperator"/>
-		<itemData name="String Char"  defStyleNum="dsChar"/>
-		<itemData name="Float" defStyleNum="dsFloat"/>
-		<itemData name="Int" defStyleNum="dsDecVal"/>
+		<itemData name="Assign" defStyleNum="dsOthers" bold="1" italic="0" spellChecking="false"/>
+		<itemData name="Control Structure" defStyleNum="dsControlFlow" spellChecking="false"/>
+		<itemData name="Reserved Words" defStyleNum="dsConstant" spellChecking="false"/>
+		<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+		<itemData name="Operator" defStyleNum="dsSpecialChar" spellChecking="false"/>
+		<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
+		<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+		<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
 	</itemDatas>
 </highlighting>
 
 <general>
 	<comments>
-		<comment name="singleLine" start="#" end=""/>
+		<comment name="singleLine" start="#"/>
 	</comments>
 	<keywords casesensitive="true" weakDeliminator="." additionalDeliminator="$"/>
 </general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/relaxng.xml b/xml/relaxng.xml
--- a/xml/relaxng.xml
+++ b/xml/relaxng.xml
@@ -16,7 +16,7 @@
    - Namespace rules
 -->
 
-<language version="3"
+<language version="4"
           kateversion="2.4"
           name="RELAX NG"
           section="Markup"
@@ -94,6 +94,7 @@
         <StringDetect attribute="Comment" context="#pop"  String="--&gt;" endRegion="comment"/>
         <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+"/>
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
         <DetectIdentifier/>
       </context>
     </contexts>
@@ -112,8 +113,9 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
     </comments>
     <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator="&quot;{}"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; indent-width 2; -->
diff --git a/xml/relaxngcompact.xml b/xml/relaxngcompact.xml
--- a/xml/relaxngcompact.xml
+++ b/xml/relaxngcompact.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="RelaxNG-Compact" version="1" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">
+<language name="RelaxNG-Compact" version="2" kateversion="2.4" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">
   <highlighting>
     <list name="Keywords">
       <item>default</item>
@@ -81,6 +81,9 @@
 	<RegExpr attribute="Definitions" context="Definitions" String="[\w\.-]+[\s]+=" lookAhead="true" />
       </context>
       <context attribute="Comments" lineEndContext="#pop" name="Comments" >
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="String" >
         <DetectChar attribute="String" context="#pop" char="&quot;" />
@@ -104,5 +107,8 @@
   </highlighting>
   <general>
     <keywords weakDeliminator="-:"/>
+    <comments>
+      <comment name="singleLine" start="#" />
+    </comments>
   </general>
 </language>
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -14,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="6" kateversion="5.0" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="7" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -70,6 +70,7 @@
         <RegExpr attribute="Code" String="^%1   " context="#stay" column="0" dynamic="true"/>
         <RegExpr attribute="Normal" String="^(.|$)" lookAhead="true" column="0" context="#pop"/>
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <context name="CodeBlock" attribute="Code" lineEndContext="#stay">
@@ -117,3 +118,4 @@
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/rhtml.xml b/xml/rhtml.xml
--- a/xml/rhtml.xml
+++ b/xml/rhtml.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
 	
 <!--
@@ -44,7 +44,7 @@
 -->
 	
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language name="Ruby/Rails/RHTML" version="9" kateversion="5.0" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
+<language name="Ruby/Rails/RHTML" version="11" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
 	
 	<highlighting>
 	
@@ -315,12 +315,6 @@
 			<item>word_wrap</item>
 		</list>
 		
-		<list name="attention">
-			<item>TODO</item>
-			<item>FIXME</item>
-			<item>NOTE</item>
-		</list>
-		
 		<contexts>
 			
 		<!-- BEGIN HTML contexts -->
@@ -332,22 +326,22 @@
 				<DetectSpaces/>
 				<DetectIdentifier/>
 				
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
-				<DetectChar attribute="Keyword" context="rubysourceline" char="%" />
+				<IncludeRules context="find-rubysource" />
+				<DetectChar attribute="Ruby Source" context="rubysourceline" char="%" />
 				
 				<StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
 				<StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
 				<RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
 				<RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
-				<RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
-				<RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
-				<RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
-				<RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
-				<RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
+				<WordDetect attribute="Element" context="CSS" String="&lt;style" insensitive="true" beginRegion="style" />
+				<WordDetect attribute="Element" context="JS" String="&lt;script" insensitive="true" beginRegion="script" />
+				<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" />
 				<RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
-				<RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />
-				<RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />
-				<RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />
+				<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" />
 				<RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
 				<!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
 				<IncludeRules context="FindEntityRefs" />
@@ -371,15 +365,16 @@
 			</context>
 			
 			<context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
+				<RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
 			</context>
 			
 			
 			<context name="Comment" attribute="Comment" lineEndContext="#stay">
 				<DetectSpaces/>
+				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
 				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 				<DetectIdentifier/>
-				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
 				<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
 			</context>
 			
@@ -414,21 +409,21 @@
 			</context>
 			
 			<context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Value" context="#pop" char="&quot;" />
 				<IncludeRules context="FindPEntityRefs" />
 			</context>
 			
 			<context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Value" context="#pop" char="&apos;" />
 				<IncludeRules context="FindPEntityRefs" />
 			</context>
 			
 			<context name="El Open" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
 				<DetectChar attribute="Element" context="#pop" char="&gt;" />
@@ -437,28 +432,28 @@
 			</context>
 			
 			<context name="El Close" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Element" context="#pop" char="&gt;" />
 				<RegExpr attribute="Error" context="#stay" String="\S" />
 			</context>
 			
 			<context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
 				<RegExpr attribute="Error" context="#stay" String="\S" />
 			</context>
 			
 			<context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
 				<RegExpr attribute="Error" context="#stay" String="\S" />
 			</context>
 			
 			<context name="CSS" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
 				<DetectChar attribute="Element" context="CSS content" char="&gt;" />
@@ -467,14 +462,14 @@
 			</context>
 			
 			<context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
-				<RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
+				<WordDetect attribute="Element" context="El Close 2" String="&lt;/style" insensitive="true" endRegion="style" />
 				<IncludeRules context="##CSS" includeAttrib="true"/>
 			</context>
 			
 			<context name="JS" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
 				<DetectChar attribute="Element" context="JS content" char="&gt;" />
@@ -483,9 +478,9 @@
 			</context>
 			
 			<context name="JS content" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
-				<RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+				<WordDetect attribute="Element" context="El Close 2" String="&lt;/script" insensitive="true" endRegion="script" />
 				<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
 				<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
 			</context>
@@ -496,7 +491,7 @@
 			</context>
 			
 			<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Value" context="Value DQ" char="&quot;" />
 				<DetectChar attribute="Value" context="Value SQ" char="&apos;" />
@@ -504,7 +499,7 @@
 			</context>
 			
 			<context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<IncludeRules context="FindEntityRefs" />
 				<RegExpr attribute="Value" context="#stay" String="/(?!&gt;)" />
@@ -512,14 +507,14 @@
 			</context>
 			
 			<context name="Value DQ" attribute="Value" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
 				<IncludeRules context="FindEntityRefs" />
 			</context>
 			
 			<context name="Value SQ" attribute="Value" lineEndContext="#stay">
-				<RegExpr attribute="Keyword" context="rubysource" String="&lt;%=?" />
+				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
 				<IncludeRules context="FindEntityRefs" />
@@ -533,26 +528,36 @@
 				<IncludeRules context="rubysource" />
 			</context>
 			
+			<context name="find-rubysource" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars attribute="Ruby Source" context="rubysource-markup" char="&lt;" char1="%" />
+			</context>
+			<context name="rubysource-markup" attribute="Ruby Source" lineEndContext="#pop!rubysource-block-content" fallthrough="true" fallthroughContext="#pop!rubysource-block-content">
+				<AnyChar attribute="Ruby Source" context="#pop!rubysource-block-content" String="=-" /> <!-- <%= and <%- -->
+			</context>
+			<context name="rubysource-block-content" attribute="RUBY RAILS ERB Text" lineEndContext="#stay">
+				<StringDetect attribute="Ruby Source" context="#pop" String="-%&gt;" />
+				<Detect2Chars attribute="Ruby Source" context="#pop" char="%" char1="&gt;" />
+				<IncludeRules context="rubysource" />
+			</context>
+
 			<context name="rubysource" attribute="RUBY RAILS ERB Text" lineEndContext="#stay">
 				<!-- ruby ignores newline after \ -->
 				<LineContinue attribute="Ruby Normal Text" context="Line Continue"/>
-				
-				<RegExpr attribute="Keyword" context="#pop" String="-?%&gt;" />
-				
+
 				<!-- __END__ token on own line. -->
 				<RegExpr attribute="Keyword" String="__END__$" context="DATA" column="0"/>
 				
 				<!-- "shebang" line -->
-				<RegExpr attribute="Keyword" String="#!\/.*" context="#stay" column="0"/>
+				<StringDetect attribute="Keyword" String="#!/" context="ShebangLine" column="0"/>
 				
 				<!-- "def" - "end" blocks -->
 				<!-- check for statement modifiers with regexes -->
-				<RegExpr attribute="Keyword" String="(\=|\(|\[|\{)\s*(if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(?:\=|\(|\[|\{)\s*(?:if|unless|while|until)\b" context="#stay" beginRegion="def block"/>
 				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block" firstNonSpace="true"/>
-				<RegExpr attribute="Keyword" String="\;\s*(while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\;\s*(?:while|until)\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="if" context="#stay" beginRegion="def block" firstNonSpace="true"/>
 				<WordDetect attribute="Keyword" String="unless" context="#stay" beginRegion="def block" firstNonSpace="true"/>
-				<RegExpr attribute="Keyword" String="\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\;\s*(?:if|unless)\b" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="class" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>
@@ -562,16 +567,16 @@
 				<WordDetect attribute="Keyword" String="def" context="#stay" beginRegion="def block"/>
 				<WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>
 				<!-- elsif/else close the current block and start a new one -->
-				<RegExpr attribute="Keyword" String="(\b|^\s*)(else|elsif|rescue|ensure)(\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(?:\b|^\s*)(?:else|elsif|rescue|ensure)(?:\s+|$)" context="#stay" endRegion="def block" beginRegion="def block"/>
 				
 				<StringDetect attribute="Operator" String="..." context="#stay"/>
 				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
 				
 				<!-- marks a message (being sent, not defined) -->
-				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="#stay"/>
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(?:\?|\!|\b)" context="#stay"/>
 				
 				<!-- Check for "ASCII code operator". e.g.: ?a -->
-				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="#stay"/>
+				<RegExpr attribute="Dec" String="\s\?(?:\\M\-)?(?:\\C\-)?\\?\S" context="#stay"/>
 				
 				<keyword attribute="Keyword" String="keywords" context="#stay"/>
 				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="#stay"/>
@@ -584,18 +589,18 @@
 				<!-- (global) vars starting with $
 					Match them before $_.
 					-->
-				<RegExpr attribute="Global Variable" String="\$(\w+|\-[a-zA-Z_]\b)" context="#stay"/>
+				<RegExpr attribute="Global Variable" String="\$(?:\w+|\-[a-zA-Z_]\b)" context="#stay"/>
 				<!-- special-character globals -->
 				<RegExpr attribute="Default globals" String="\$[\d_*`\!:?'/\\\-\&amp;]" context="#stay"/>
 				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="#stay"/>
 				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
-				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/>
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*(?:[0-9]|[a-z])[_a-zA-Z0-9]*\b" context="#stay"/>
 				
-				<RegExpr attribute="Hex" String="\b\-?0[xX][_0-9a-fA-F]+" context="#stay"/>
-				<RegExpr attribute="Bin" String="\b\-?0[bB][_01]+" context="#stay"/>
-				<RegExpr attribute="Octal" String="\b\-?0[1-7][_0-7]*" context="#stay"/>
-				<RegExpr attribute="Float" String="\b\-?[0-9][0-9_]*\.[0-9][0-9_]*([eE]\-?[1-9][0-9]*(\.[0-9]*)?)?" context="#stay"/>
-				<RegExpr attribute="Dec" String="\b\-?[1-9][0-9_]*\b" context="#stay"/>
+				<RegExpr attribute="Hex" String="(?:\-|\b)0[xX][_0-9a-fA-F]+" context="#stay"/>
+				<RegExpr attribute="Bin" String="(?:\-|\b)0[bB][_01]+" context="#stay"/>
+				<RegExpr attribute="Octal" String="(?:\-|\b)0[1-7][_0-7]*" context="#stay"/>
+				<RegExpr attribute="Float" String="(?:\-|\b)[0-9][0-9_]*\.[0-9][0-9_]*(?:[eE]\-?[1-9][0-9]*(?:\.[0-9]*)?)?" context="#stay"/>
+				<RegExpr attribute="Dec" String="(?:\-|\b)[1-9][0-9_]*\b" context="#stay"/>
 				<Int attribute="Dec" context="#stay"/>
 				<HlCChar attribute="Char" context="#stay"/>
 				
@@ -650,9 +655,11 @@
 				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
 				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[Qqxw]?[^\s&gt;])" beginRegion="GdlInput" />
 			</context>
+
+			<context name="ShebangLine" attribute="Keyword" lineEndContext="#pop" />
 			
 			<context name="Line Continue" attribute="Ruby Normal Text" lineEndContext="#pop">
-				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
+				<RegExpr attribute="Keyword" String="(?:while|until)\b(?!.*\bdo\b)" context="#stay" firstNonSpace="true"/>
 				<WordDetect attribute="Keyword" String="if" context="#stay" firstNonSpace="true"/>
 				<WordDetect attribute="Keyword" String="unless" context="#stay" firstNonSpace="true"/>
 				<IncludeRules context="rubysource"/>
@@ -711,10 +718,10 @@
 			<!-- This handles access of nested module classes and class methods -->
 			<context name="Member Access" attribute="Member" lineEndContext="#pop">
 				<!-- marks a message (being sent, not defined) -->
-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="#pop"/>
-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
-				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="#pop"/>
-				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*[\?\!]?(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*[\?\!]?" context="#stay"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*[\da-z]\w*(?=[^\w\d\.\:])" context="#pop"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*[0-9a-z]\w*" context="#stay"/>
 				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="#pop"/>
 				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
 				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
@@ -727,13 +734,18 @@
 			</context>
 			
 			<context name="Comment Line" attribute="Ruby Comment" lineEndContext="#pop">
+				<DetectSpaces />
+				<StringDetect context="#pop" String="-%&gt;" lookAhead="true" />
+				<Detect2Chars context="#pop" char="%" char1="&gt;" lookAhead="true" />
 				<RegExpr attribute="Ruby Comment" String="\w\:\:\s" context="RDoc Label"/>
-				<keyword attribute="Alert" String="attention" context="#stay"/>
-				<RegExpr attribute="Keyword" context="#pop#pop" String="-?%&gt;" />
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 			
 			<context name="General Comment" attribute="Ruby Comment" lineEndContext="#pop">
-				<keyword attribute="Dec" String="attention" context="#stay"/>
+				<DetectSpaces/>
+				<IncludeRules context="##Alerts"/>
+				<IncludeRules context="##Modelines"/>
 			</context>
 			
 			<context name="RDoc Label" attribute="RDoc Value" lineEndContext="#pop"/>
@@ -885,7 +897,7 @@
 				-->
 			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="dq_string_rules" />
-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 			<!-- rules to be included in all dq_string contexts -->
@@ -950,7 +962,7 @@
 				-->
 			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="token_array_rules" />
-				<RegExpr attribute="String" String="\\%1" context="#stay" dynamic="true"/>
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 			
@@ -1014,7 +1026,7 @@
 				-->
 			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="apostrophed_rules" />
-				<RegExpr attribute="Raw String" String="\\%1" context="#stay" dynamic="true"/>
+				<StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 			
@@ -1078,7 +1090,7 @@
 				-->
 			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="shell_command_rules" />
-				<RegExpr attribute="Command" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
 			</context>
 			
@@ -1144,7 +1156,7 @@
 				-->
 			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
 				<IncludeRules context="regexpr_rules" />
-				<RegExpr attribute="Regular Expression" String="\\%1" context="#stay" dynamic="true" />
+				<StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />
 				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
 			</context>
 			
@@ -1165,73 +1177,74 @@
 		<itemDatas>
 		<!-- BEGIN Ruby itemData -->
 			<itemData name="Ruby Normal Text" defStyleNum="dsNormal"/>
-			<itemData name="RUBY RAILS ERB Text" defStyleNum="dsExtension"/>
+			<itemData name="RUBY RAILS ERB Text" defStyleNum="dsExtension" bold="0" spellChecking="false"/>
+			<itemData name="Ruby Source" defStyleNum="dsDataType" bold="1" spellChecking="false"/>
 			
-			<itemData name="Keyword" defStyleNum="dsKeyword"/>
-			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
-			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>
-			<itemData name="Definition" defStyleNum="dsKeyword"/>
-			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+			<itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers" spellChecking="false"/>
+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1" spellChecking="false"/> <!-- #0000FF -->
+			<itemData name="Definition" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal" spellChecking="false"/>
 			
-			<itemData name="Dec" defStyleNum="dsDecVal"/>
-			<itemData name="Float" defStyleNum="dsFloat"/>
-			<itemData name="Char" defStyleNum="dsChar"/>
-			<itemData name="Octal" defStyleNum="dsBaseN"/>
-			<itemData name="Hex" defStyleNum="dsBaseN"/>
-			<itemData name="Bin" defStyleNum="dsBaseN"/>
+			<itemData name="Dec" defStyleNum="dsDecVal" spellChecking="false"/>
+			<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+			<itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Bin" defStyleNum="dsBaseN" spellChecking="false"/>
 			
-			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>
+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0" spellChecking="false"/> <!-- #D40000 -->
 			<itemData name="String" defStyleNum="dsString"/>
-			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>
-			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>
-			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->
-			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>
-			<itemData name="Substitution"	defStyleNum="dsOthers"/>
+			<itemData name="Raw String" defStyleNum="dsVerbatimString"/> <!-- #DD4A4A -->
+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
+			<itemData name="Message" defStyleNum="dsAttribute" spellChecking="false"/> <!-- #4000A7 -->
+			<itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->
+			<itemData name="Substitution"	defStyleNum="dsSpecialChar" spellChecking="false"/>
 			<itemData name="Data" defStyleNum="dsNormal"/>
 			<!-- short for 'general delimited input' -->
 			<itemData name="GDL input" defStyleNum="dsOthers" />
 			
-			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>
-			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>
-			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>
-			<itemData name="Constant" defStyleNum="dsDataType"/>
-			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>
-			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
-			<itemData name="Member" defStyleNum="dsNormal"/>
-			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
-			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+			<itemData name="Default globals" defStyleNum="dsVariable" bold="1" spellChecking="false"/> <!-- #C00000 -->
+			<itemData name="Global Variable" defStyleNum="dsVariable" spellChecking="false"/> <!-- #C00000 -->
+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1" spellChecking="false"/> <!-- #bb1188 -->
+			<itemData name="Constant" defStyleNum="dsDataType" spellChecking="false"/>
+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0" spellChecking="false"/> <!-- #bb1188 -->
+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1" spellChecking="false"/> <!-- #000080, #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsNormal" spellChecking="false"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers" spellChecking="false"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers" spellChecking="false"/>
 			
 			<itemData name="Ruby Comment" defStyleNum="dsComment"/>
 			<itemData name="Blockcomment" defStyleNum="dsComment"/>
 			<itemData name="RDoc Value" defStyleNum="dsOthers"/>
 			
 			<!-- use these to mark errors and alerts things -->
-			<itemData name="Error" defStyleNum="dsError" />
-			<itemData name="Alert" defStyleNum="dsAlert" />
+			<itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
 
-			<itemData name="Delimiter" defStyleNum="dsChar"/>
-			<itemData name="Operator" defStyleNum="dsChar"/>
+			<itemData name="Delimiter" defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="Operator" defStyleNum="dsChar" spellChecking="false"/>
 		<!-- END Ruby itemData -->
 			
 		<!-- BEGIN HTML itemData -->
 			<itemData name="Normal Text" defStyleNum="dsNormal" />
 			<itemData name="Comment" defStyleNum="dsComment" />
-			<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
-			<itemData name="Processing Instruction" defStyleNum="dsKeyword" />
-			<itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
-			<itemData name="Element" defStyleNum="dsKeyword" />
-			<itemData name="Attribute" defStyleNum="dsOthers" />
-			<itemData name="Value" defStyleNum="dsString" />
-			<itemData name="EntityRef" defStyleNum="dsDecVal" />
-			<itemData name="PEntityRef" defStyleNum="dsDecVal" />
+			<itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false"/>
+			<itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false"/>
+			<itemData name="Element" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>
+			<itemData name="Value" defStyleNum="dsString" spellChecking="false"/>
+			<itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>
+			<itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false"/>
 		<!-- END HTML itemData -->
 		
 		</itemDatas>
 	</highlighting>
 	<general>
 		<comments>
-			<comment name="multiLine" start="&lt;!--" end="--&gt;" />
+			<comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
 		</comments>
 		<keywords casesensitive="1" weakDeliminator="!?"/> 
 	</general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/roff.xml b/xml/roff.xml
--- a/xml/roff.xml
+++ b/xml/roff.xml
@@ -7,7 +7,7 @@
   <!ENTITY argsep1 "([^\\]|\\[&#37; |\^{}'`\-!?@)/,&amp;:~0E_acdeprtu])">
   <!ENTITY argsep2 "([^\\0-9]|\\[&#37;:{}'`\-_!@/cep])">
 ]>
-<language name="Roff" section="Markup" version="3" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
+<language name="Roff" section="Markup" version="4" kateversion="2.4" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
 
   <highlighting>
 
@@ -79,7 +79,9 @@
 
       <!-- comment -->
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <!-- error -->
@@ -195,3 +197,4 @@
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/ruby.xml b/xml/ruby.xml
--- a/xml/ruby.xml
+++ b/xml/ruby.xml
@@ -31,7 +31,7 @@
 
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
 <language name="Ruby" section="Scripts"
-	  version="10" kateversion="3.3"
+	  version="12" kateversion="3.3"
 	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"
 	  mimetype="application/x-ruby"
 	  style="ruby" indenter="ruby"
@@ -389,6 +389,7 @@
 
 			<context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">
 				<RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>
+				<DetectSpaces />
 				<IncludeRules context="##Alerts" />
 			</context>
 
@@ -431,7 +432,9 @@
 			</context>
 
 			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces />
 				<IncludeRules context="##Alerts" />
+				<IncludeRules context="##Modelines" />
 			</context>
 
 			<!-- HEREDOC support
@@ -878,9 +881,9 @@
 		<itemDatas>
 			<itemData name="Normal Text" defStyleNum="dsNormal"/>
 
-			<itemData name="Keyword" defStyleNum="dsKeyword"/>
+			<itemData name="Keyword" defStyleNum="dsControlFlow"/>
 			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
-			<itemData name="Access Control" defStyleNum="dsKeyword" color="#0000FF"/>
+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->
 			<itemData name="Definition" defStyleNum="dsKeyword"/>
 			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
 
@@ -891,24 +894,24 @@
 			<itemData name="Hex" defStyleNum="dsBaseN"/>
 			<itemData name="Bin" defStyleNum="dsBaseN"/>
 
-			<itemData name="Symbol" defStyleNum="dsString" color="#D40000"/>
+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
 			<itemData name="String" defStyleNum="dsString"/>
-			<itemData name="Raw String" defStyleNum="dsString" color="#DD4A4A" selColor="#DD4A4A"/>
-			<itemData name="Command" defStyleNum="dsString" color="#AA3000"/>
-			<itemData name="Message" defStyleNum="dsNormal" color="#4000A7"/> <!-- #4A00C0 -->
-			<itemData name="Regular Expression" defStyleNum="dsOthers" color="#4A5704"/>
-			<itemData name="Substitution"	defStyleNum="dsOthers"/>
+			<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->
+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
+			<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
+			<itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->
+			<itemData name="Substitution"	defStyleNum="dsSpecialChar"/>
 			<itemData name="Data" defStyleNum="dsNormal"/>
 			<!-- short for 'general delimited input' -->
 			<itemData name="GDL input" defStyleNum="dsOthers" />
 
-			<itemData name="Default globals" defStyleNum="dsDataType" color="#C00000" bold="1"/>
-			<itemData name="Global Variable" defStyleNum="dsDataType" color="#C00000"/>
-			<itemData name="Global Constant" defStyleNum="dsDataType" color="#bb1188" bold="1"/>
+			<itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->
+			<itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->
+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
 			<itemData name="Constant" defStyleNum="dsDataType"/>
-			<itemData name="Constant Value" defStyleNum="dsDataType" color="#bb1188"/>
-			<itemData name="Kernel methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
-			<itemData name="Module mixin methods" defStyleNum="dsNormal" color="#000080" selColor="#ffffff"/> <!-- #CC0E86 -->
+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+			<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
 			<itemData name="Member" defStyleNum="dsNormal"/>
 			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
 			<itemData name="Class Variable" defStyleNum="dsOthers"/>
@@ -916,15 +919,15 @@
 			<itemData name="Comment" defStyleNum="dsComment"/>
 			<itemData name="Blockcomment" defStyleNum="dsComment"/>
 
-			<itemData name="Here Document" defStyleNum="dsOthers"/>
+			<itemData name="Here Document" defStyleNum="dsDocumentation"/>
 
-			<itemData name="Delimiter" defStyleNum="dsNormal" color="#FF9FEC"/>
-			<itemData name="Operator" defStyleNum="dsNormal" color="#FF9FEC"/>
+			<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+			<itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
 		</itemDatas>
 	</highlighting>
 	<general>
 		<comments>
-			<comment name="singleLine" start="#"/>
+			<comment name="singleLine" start="#" position="afterwhitespace"/>
 		</comments>
 		<keywords casesensitive="1" weakDeliminator="!?"/>
 	</general>
diff --git a/xml/rust.xml b/xml/rust.xml
--- a/xml/rust.xml
+++ b/xml/rust.xml
@@ -33,7 +33,7 @@
 	<!ENTITY commonEscape "(?:[trn0&apos;&quot;\\]|x[0-9a-fA-F]{2})">
 	<!ENTITY unicodeEscape "u\{(?:[0-9a-fA-F]_*){1,6}\}">
 ]>
-<language name="Rust" version="8" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" version="9" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
 <highlighting>
 	<list name="fn">
 		<item>fn</item>
@@ -451,6 +451,7 @@
 			<Detect2Chars char="/" char1="*" attribute="Comment" context="Commentar 2" beginRegion="Comment"/>
 		</context>
 		<context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+			<DetectSpaces/>
 			<IncludeRules context="##Alerts" />
 			<IncludeRules context="##Modelines" />
 		</context>
diff --git a/xml/scala.xml b/xml/scala.xml
--- a/xml/scala.xml
+++ b/xml/scala.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Scala" version="7" kateversion="2.3" section="Sources"
+<language name="Scala" version="8" kateversion="2.3" section="Sources"
           extensions="*.scala;*.sbt" mimetype="text/x-scala" license="LGPL"
           author="Stephane Micheloud (stephane.micheloud@epfl.ch)">
 <!--
@@ -3469,9 +3469,16 @@
         <RegExpr attribute="Imports" context="#pop" String="\s*.*$" />
       </context>
 -->
-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1"/>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
     </contexts>
     <itemDatas>
@@ -3498,8 +3505,9 @@
   <general>
     <comments>
       <comment name="singleLine" start="//"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="1"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/scheme.xml b/xml/scheme.xml
--- a/xml/scheme.xml
+++ b/xml/scheme.xml
@@ -1,394 +1,1393 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language version="6" kateversion="5.0" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
-  <highlighting>
-    <list name="operators">
-      <item>&lt;=</item>
-      <item>&lt;</item>
-      <item>=</item>
-      <item>=&gt;</item>
-      <item>&gt;=</item>
-      <item>&gt;</item>
-      <item>-</item>
-      <item>/</item>
-      <item>*,*</item>
-      <item>*)</item>
-      <item>+</item>
-    </list>
-    <list name="characters">
-      <item>#\nul</item>
-      <item>#\soh</item>
-      <item>#\stx</item>
-      <item>#\etx</item>
-      <item>#\eot</item>
-      <item>#\enq</item>
-      <item>#\ack</item>
-      <item>#\bel</item>
-      <item>#\bs</item>
-      <item>#\ht</item>
-      <item>#\nl</item>
-      <item>#\vt</item>
-      <item>#\np</item>
-      <item>#\cr</item>
-      <item>#\so</item>
-      <item>#\si</item>
-      <item>#\dle</item>
-      <item>#\dc1</item>
-      <item>#\dc2</item>
-      <item>#\dc3</item>
-      <item>#\dc4</item>
-      <item>#\nak</item>
-      <item>#\syn</item>
-      <item>#\etb</item>
-      <item>#\can</item>
-      <item>#\em</item>
-      <item>#\sub</item>
-      <item>#\esc</item>
-      <item>#\fs</item>
-      <item>#\gs</item>
-      <item>#\rs</item>
-      <item>#\us</item>
-      <item>#\space</item>
-      <item>#\sp</item>
-      <item>#\newline</item>
-      <item>#\nl</item>
-      <item>#\tab</item>
-      <item>#\ht</item>
-      <item>#\backspace</item>
-      <item>#\bs</item>
-      <item>#\return</item>
-      <item>#\cr</item>
-      <item>#\page</item>
-      <item>#\np</item>
-      <item>#\null</item>
-      <item>#\nul</item>
-    </list>
-    <list name="defines">
-      <item>define</item>
-      <item>define*</item>
-      <item>define-accessor</item>
-      <item>define-class</item>
-      <item>defined?</item>
-      <item>define-generic</item>
-      <item>define-macro</item>
-      <item>define-method</item>
-      <item>define-module</item>
-      <item>define-private</item>
-      <item>define-public</item>
-      <item>define*-public</item>
-      <item>define-reader-ctor</item>
-      <item>define-syntax</item>
-      <item>define-syntax-macro</item>
-      <item>defmacro</item>
-      <item>defmacro*</item>
-      <item>defmacro*-public</item>
-    </list>
-    <list name="keywords">
-      <item>abs</item>
-      <item>acos</item>
-      <item>and</item>
-      <item>angle</item>
-      <item>append</item>
-      <item>applymap</item>
-      <item>asin</item>
-      <item>assoc</item>
-      <item>assq</item>
-      <item>assv</item>
-      <item>atan</item>
-      <item>begin</item>
-      <item>boolean?</item>
-      <item>break</item>
-      <item>caaaar</item>
-      <item>caaadr</item>
-      <item>caaar</item>
-      <item>caadar</item>
-      <item>caaddr</item>
-      <item>caadr</item>
-      <item>caar</item>
-      <item>cadaar</item>
-      <item>cadadr</item>
-      <item>cadar</item>
-      <item>caddar</item>
-      <item>cadddr</item>
-      <item>caddr</item>
-      <item>cadr</item>
-      <item>call/cc</item>
-      <item>call-with-current-continuation</item>
-      <item>call-with-input-file</item>
-      <item>call-with-output-file</item>
-      <item>call-with-values</item>
-      <item>car</item>
-      <item>case</item>
-      <item>catch</item>
-      <item>cdaaar</item>
-      <item>cdaadr</item>
-      <item>cdaar</item>
-      <item>cdadar</item>
-      <item>cdaddr</item>
-      <item>cdadr</item>
-      <item>cdar</item>
-      <item>cddaar</item>
-      <item>cddadr</item>
-      <item>cddar</item>
-      <item>cdddar</item>
-      <item>cddddr</item>
-      <item>cdddr</item>
-      <item>cddr</item>
-      <item>cdr</item>
-      <item>ceiling</item>
-      <item>char-alphabetic?</item>
-      <item>char-ci&gt;=?</item>
-      <item>char-ci&gt;?</item>
-      <item>char-ci=?</item>
-      <item>char-ci&lt;=?</item>
-      <item>char-downcase</item>
-      <item>char-&gt;integer</item>
-      <item>char&gt;=?</item>
-      <item>char&gt;?</item>
-      <item>char=?</item>
-      <item>char?</item>
-      <item>char-lower-case?</item>
-      <item>char&lt;?c</item>
-      <item>char&lt;=?</item>
-      <item>char-numeric?</item>
-      <item>char-ready?</item>
-      <item>char-upcase</item>
-      <item>char-upper-case?</item>
-      <item>char-whitespace?</item>
-      <item>close-input-port</item>
-      <item>close-output-port</item>
-      <item>complex?</item>
-      <item>cond</item>
-      <item>cons</item>
-      <item>continue</item>
-      <item>cos</item>
-      <item>current-input-port</item>
-      <item>current-output-port</item>
-      <item>denominator</item>
-      <item>display</item>
-      <item>do</item>
-      <item>dynamic-wind</item>
-      <item>else</item>
-      <item>eof-object?</item>
-      <item>eq?</item>
-      <item>equal?</item>
-      <item>eqv?</item>
-      <item>eval</item>
-      <item>even?</item>
-      <item>exact->inexact</item>
-      <item>exact?</item>
-      <item>exp</item>
-      <item>expt</item>
-      <item>floor</item>
-      <item>force</item>
-      <item>for-each</item>
-      <item>gcd</item>
-      <item>har-ci&lt;?</item>
-      <item>if</item>
-      <item>imag-part</item>
-      <item>inexact-&gt;exact</item>
-      <item>inexact?</item>
-      <item>input-port?</item>
-      <item>integer-&gt;char</item>
-      <item>integer?</item>
-      <item>interaction-environment</item>
-      <item>lambda</item>
-      <item>lcm</item>
-      <item>length</item>
-      <item>let</item>
-      <item>let*</item>
-      <item>letrec</item>
-      <item>letrec-syntax</item>
-      <item>let-syntax</item>
-      <item>list-&gt;string</item>
-      <item>list</item>
-      <item>list?</item>
-      <item>list-ref</item>
-      <item>list-tail</item>
-      <item>load</item>
-      <item>log</item>
-      <item>magnitude</item>
-      <item>make-polar</item>
-      <item>make-rectangular</item>
-      <item>make-string</item>
-      <item>make-vector</item>
-      <item>max</item>
-      <item>member</item>
-      <item>memq</item>
-      <item>memv</item>
-      <item>min</item>
-      <item>modulo</item>
-      <item>negative?</item>
-      <item>newline</item>
-      <item>not</item>
-      <item>null-environment</item>
-      <item>null?</item>
-      <item>number?</item>
-      <item>number->string</item>
-      <item>numerator</item>
-      <item>odd?</item>
-      <item>open-input-file</item>
-      <item>open-output-file</item>
-      <item>or</item>
-      <item>output-port?</item>
-      <item>pair?</item>
-      <item>peek-char</item>
-      <item>port?</item>
-      <item>positive?</item>
-      <item>procedure?</item>
-      <item>quotient</item>
-      <item>rational?</item>
-      <item>rationalize</item>
-      <item>read-char</item>
-      <item>read</item>
-      <item>real?</item>
-      <item>real-part</item>
-      <item>remainder</item>
-      <item>reverse</item>
-      <item>round</item>
-      <item>scheme-report-environment</item>
-      <item>set-car!</item>
-      <item>set-cdr!</item>
-      <item>sin</item>
-      <item>sqrt</item>
-      <item>string-append</item>
-      <item>string-ci&gt;=?</item>
-      <item>string-ci&gt;?</item>
-      <item>string-ci=?</item>
-      <item>string-ci&lt;=?</item>
-      <item>string-ci&lt;?</item>
-      <item>string-copy</item>
-      <item>string-fill!</item>
-      <item>string&gt;=?</item>
-      <item>string&gt;?</item>
-      <item>string-&gt;list</item>
-      <item>string-&gt;number</item>
-      <item>string-&gt;symbol</item>
-      <item>string=?</item>
-      <item>string</item>
-      <item>string?</item>
-      <item>string-length</item>
-      <item>string&lt;=?</item>
-      <item>string&lt;?</item>
-      <item>string-ref</item>
-      <item>string-set!</item>
-      <item>substring</item>
-      <item>symbol-&gt;string</item>
-      <item>symbol?</item>
-      <item>syntax-rules</item>
-      <item>tan</item>
-      <item>transcript-off</item>
-      <item>transcript-on</item>
-      <item>truncate</item>
-      <item>values</item>
-      <item>vector-fill!</item>
-      <item>vector-&gt;listlist->vector</item>
-      <item>vector</item>
-      <item>vector?</item>
-      <item>vector-length</item>
-      <item>vector-ref</item>
-      <item>vector-set!</item>
-      <item>while</item>
-      <item>with-input-from-file</item>
-      <item>with-output-to-file</item>
-      <item>write-char</item>
-      <item>write</item>
-      <item>zero?</item>
-    </list>
-    <contexts>
-      <context name="Level0" attribute="Normal" lineEndContext="#stay">
-            <DetectChar attribute="Brackets1" context="Level1" char="("/>
-            <IncludeRules context="Default" />
-      </context>
-      <context name="Default" attribute="Normal" lineEndContext="#stay">
-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>
-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
-        <RegExpr attribute="Comment" context="#stay" String=";.*$"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="!" beginRegion="region"/>
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Operator" context="#stay" String="operators"/>
-        <keyword attribute="Definition" context="function_decl" String="defines"/>
-        <keyword attribute="Char" context="#stay" String="characters"/>
-        <RegExpr attribute="Char" context="#stay" String="#\\."/>
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>
-        <RegExpr attribute="Decimal" context="#stay" String="#[tf]"/>
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Decimal" context="#stay"/>
-        <DetectChar attribute="Brackets1" context="Level1" char="("/>
-      </context>
-      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="#pop" String="!#\s*$" endRegion="region" column="0"/>
-      </context>
-      <context name="SpecialNumber" attribute="Normal" fallthrough="true" lineEndContext="#pop">
-        <RegExpr attribute="Decimal" context="#pop" String="\d*(\.\d+)?"/>
-      </context>
-      <context name="String" attribute="String" lineEndContext="#stay">
-        <keyword attribute="Char" context="#stay" String="characters"/>
-        <RegExpr attribute="Char" context="#stay" String="#\\."/>
-        <Detect2Chars attribute="Char" context="#stay" char="\" char1="&quot;"/>
-        <Detect2Chars attribute="Char" context="#stay" char="\" char1="\"/>
-        <DetectChar attribute="String" context="#pop" char="&quot;"/>
-      </context>
-      <context name="function_decl" attribute="Function" lineEndContext="#stay">
-        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
-      </context>
-      <context name="Level1" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets2" context="Level2" char="("/>
-           <DetectChar attribute="Brackets1" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-      <context name="Level2" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets3" context="Level3" char="("/>
-           <DetectChar attribute="Brackets2" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-      <context name="Level3" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets4" context="Level4" char="("/>
-           <DetectChar attribute="Brackets3" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-      <context name="Level4" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets5" context="Level5" char="("/>
-           <DetectChar attribute="Brackets4" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-      <context name="Level5" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets6" context="Level6" char="("/>
-           <DetectChar attribute="Brackets5" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-      <context name="Level6" attribute="Normal" lineEndContext="#stay">
-           <DetectChar attribute="Brackets1" context="Level1" char="("/>
-           <DetectChar attribute="Brackets6" context="#pop" char=")" />
-           <IncludeRules context="Default" />
-      </context>
-    </contexts>
-    <itemDatas>
-      <itemData name="Normal"      defStyleNum="dsNormal"/>
-      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
-      <itemData name="Definition"  defStyleNum="dsExtension"/>
-      <itemData name="Operator"    defStyleNum="dsOperator"/>
-      <itemData name="Function"    defStyleNum="dsFunction"/>
-      <itemData name="Decimal"     defStyleNum="dsDecVal"/>
-      <itemData name="Float"       defStyleNum="dsFloat"/>
-      <itemData name="Char"        defStyleNum="dsChar"/>
-      <itemData name="String"      defStyleNum="dsString"/>
-      <itemData name="Comment"     defStyleNum="dsComment"/>
-      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
-      <itemData name="Brackets1"    defStyleNum="dsNormal" color="#ff0000" bold="1"/>
-      <itemData name="Brackets2"    defStyleNum="dsNormal" color="#ff8800" bold="1"/>
-      <itemData name="Brackets3"    defStyleNum="dsNormal" color="#888800" bold="1"/>
-      <itemData name="Brackets4"    defStyleNum="dsNormal" color="#008800" bold="1"/>
-      <itemData name="Brackets5"    defStyleNum="dsNormal" color="#000088" bold="1"/>
-      <itemData name="Brackets6"    defStyleNum="dsNormal" color="#880088" bold="1"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:#\"/>
-    <comments>
-      <comment name="singleLine" start=";;" />
-      <comment name="multiLine" start="#!" end="!#" />
-    </comments>
-  </general>
-</language>
+<!DOCTYPE language SYSTEM "language.dtd"
+[
+  <!ENTITY xmlattrs "\s+([^&quot;/>]++|&quot;[^&quot;]*+&quot;)*+">
+  <!ENTITY tab      "&#009;">
+  <!ENTITY regex    "(?:[^\\(\[/]++|\\.|\[\^?\]?([^\\\[\]]++|\\.|\[(:[^:]+:\])?)++\]|\((?R)\))+">
+
+  <!ENTITY initial_ascii_set "a-zA-Z!$&#37;&amp;*/:&lt;=&gt;?~_^">
+  <!ENTITY initial_unicode_set "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Mn}\p{Nl}\p{No}\p{Pd}\p{Pc}\p{Po}\p{Sc}\p{Sm}\p{Sk}\p{So}\p{Co}">
+  <!ENTITY initial_others "\\x[0-9a-fA-F]++;|(?![\x01-\x7f])[&initial_unicode_set;]">
+  <!ENTITY initial "(?:[&initial_ascii_set;]|&initial_others;)">
+  <!ENTITY subsequent "(?:[&initial_ascii_set;0-9-@.+\p{Nd}\p{Mc}\p{Me}]|&initial_others;)">
+  <!ENTITY symbol "(?:&initial;&subsequent;*+)">
+]>
+<!--
+  https://www.scheme.com/tspl4/
+  https://www.gnu.org/software/kawa/Syntax.html
+  https://www.gnu.org/software/guile/manual/html_node/Scheme-Syntax.html
+-->
+<language version="10" kateversion="5.62" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
+  <highlighting>
+    <list name="operators">
+      <item>&lt;=</item>
+      <item>&lt;</item>
+      <item>=</item>
+      <item>=&gt;</item>
+      <item>&gt;=</item>
+      <item>&gt;</item>
+      <item>-</item>
+      <item>/</item>
+      <item>*,*</item>
+      <item>+</item>
+      <item>!</item>
+      <item>$</item>
+      <item>%</item>
+      <item>*</item>
+      <item>/</item>
+      <item>=</item>
+      <item>></item>
+      <item>?</item>
+      <item>^</item>
+      <item>_</item>
+      <item>~</item>
+      <item>.</item>
+      <item>...</item>
+    </list>
+    <list name="characters">
+      <item>alarm</item>
+      <item>backspace</item>
+      <item>delete</item>
+      <item>esc</item>
+      <item>linefeed</item>
+      <item>newline</item>
+      <item>page</item>
+      <item>return</item>
+      <item>space</item>
+      <item>tab</item>
+      <item>vtab</item>
+      <!-- extension -->
+      <item>nul</item>
+      <item>soh</item>
+      <item>stx</item>
+      <item>etx</item>
+      <item>eot</item>
+      <item>enq</item>
+      <item>ack</item>
+      <item>bel</item>
+      <item>bs</item>
+      <item>ht</item>
+      <item>nl</item>
+      <item>vt</item>
+      <item>np</item>
+      <item>cr</item>
+      <item>so</item>
+      <item>si</item>
+      <item>dle</item>
+      <item>dc1</item>
+      <item>dc2</item>
+      <item>dc3</item>
+      <item>dc4</item>
+      <item>nak</item>
+      <item>syn</item>
+      <item>etb</item>
+      <item>can</item>
+      <item>em</item>
+      <item>sub</item>
+      <item>fs</item>
+      <item>gs</item>
+      <item>rs</item>
+      <item>us</item>
+      <item>sp</item>
+      <item>nl</item>
+      <item>ht</item>
+      <item>bs</item>
+      <item>cr</item>
+      <item>np</item>
+      <item>null</item>
+      <item>nul</item>
+    </list>
+    <list name="defines">
+      <item>define</item>
+      <item>define*</item>
+      <item>define-accessor</item>
+      <item>define-class</item>
+      <item>defined?</item>
+      <item>define-generic</item>
+      <item>define-macro</item>
+      <item>define-method</item>
+      <item>define-module</item>
+      <item>define-private</item>
+      <item>define-public</item>
+      <item>define*-public</item>
+      <item>define-reader-ctor</item>
+      <item>define-syntax</item>
+      <item>define-syntax-macro</item>
+      <item>defmacro</item>
+      <item>defmacro*</item>
+      <item>defmacro*-public</item>
+    </list>
+    <list name="keywords">
+      <item>&amp;assertion</item>
+      <item>&amp;condition</item>
+      <item>&amp;error</item>
+      <item>&amp;i/o-decoding</item>
+      <item>&amp;i/o-encoding</item>
+      <item>&amp;i/o-file-already-exists</item>
+      <item>&amp;i/o-file-does-not-exist</item>
+      <item>&amp;i/o-file-is-read-only</item>
+      <item>&amp;i/o-file-protection</item>
+      <item>&amp;i/o-filename</item>
+      <item>&amp;i/o-invalid-position</item>
+      <item>&amp;i/o-port</item>
+      <item>&amp;i/o-read</item>
+      <item>&amp;i/o-write</item>
+      <item>&amp;i/o</item>
+      <item>&amp;implementation-restriction</item>
+      <item>&amp;implementation-violation</item>
+      <item>&amp;irritants</item>
+      <item>&amp;lexical</item>
+      <item>&amp;message</item>
+      <item>&amp;mistake</item>
+      <item>&amp;no-infinities</item>
+      <item>&amp;no-nans</item>
+      <item>&amp;non-continuable</item>
+      <item>&amp;serious</item>
+      <item>&amp;syntax</item>
+      <item>&amp;undefined</item>
+      <item>&amp;violation</item>
+      <item>&amp;warning</item>
+      <item>&amp;who</item>
+      <item>&amp;xcond</item>
+      <item>abs</item>
+      <item>acos</item>
+      <item>and</item>
+      <item>angle</item>
+      <item>append</item>
+      <item>applymap</item>
+      <item>asin</item>
+      <item>assert</item>
+      <item>assertion-violation</item>
+      <item>assertion-violation?</item>
+      <item>assoc</item>
+      <item>assp</item>
+      <item>assq</item>
+      <item>assv</item>
+      <item>atan</item>
+      <item>begin</item>
+      <item>binary-port?</item>
+      <item>bitwise-and</item>
+      <item>bitwise-arithmetic-shift-left</item>
+      <item>bitwise-arithmetic-shift-right</item>
+      <item>bitwise-arithmetic-shift</item>
+      <item>bitwise-bit-count</item>
+      <item>bitwise-bit-field</item>
+      <item>bitwise-bit-set?</item>
+      <item>bitwise-copy-bit-field</item>
+      <item>bitwise-copy-bit</item>
+      <item>bitwise-first-bit-set</item>
+      <item>bitwise-if</item>
+      <item>bitwise-ior</item>
+      <item>bitwise-length</item>
+      <item>bitwise-not</item>
+      <item>bitwise-reverse-bit-field</item>
+      <item>bitwise-rotate-bit-field</item>
+      <item>bitwise-xor</item>
+      <item>boolean=?</item>
+      <item>boolean?</item>
+      <item>bound-identifier=?</item>
+      <item>break</item>
+      <item>buffer-mode</item>
+      <item>buffer-mode?</item>
+      <item>bytevector-&gt;sint-list</item>
+      <item>bytevector-&gt;string</item>
+      <item>bytevector-&gt;u8-list</item>
+      <item>bytevector-&gt;uint-list</item>
+      <item>bytevector-copy!</item>
+      <item>bytevector-copy</item>
+      <item>bytevector-fill!</item>
+      <item>bytevector-ieee-double-native-ref</item>
+      <item>bytevector-ieee-double-native-set!</item>
+      <item>bytevector-ieee-double-ref</item>
+      <item>bytevector-ieee-double-set!</item>
+      <item>bytevector-ieee-single-native-ref</item>
+      <item>bytevector-ieee-single-native-set!</item>
+      <item>bytevector-ieee-single-ref</item>
+      <item>bytevector-ieee-single-set!</item>
+      <item>bytevector-length</item>
+      <item>bytevector-s16-native-ref</item>
+      <item>bytevector-s16-native-set!</item>
+      <item>bytevector-s16-ref</item>
+      <item>bytevector-s16-set!</item>
+      <item>bytevector-s32-native-ref</item>
+      <item>bytevector-s32-native-set!</item>
+      <item>bytevector-s32-ref</item>
+      <item>bytevector-s32-set!</item>
+      <item>bytevector-s64-native-ref</item>
+      <item>bytevector-s64-native-set!</item>
+      <item>bytevector-s64-ref</item>
+      <item>bytevector-s64-set!</item>
+      <item>bytevector-s8-ref</item>
+      <item>bytevector-s8-set!</item>
+      <item>bytevector-sint-ref</item>
+      <item>bytevector-sint-set!</item>
+      <item>bytevector-u16-native-ref</item>
+      <item>bytevector-u16-native-set!</item>
+      <item>bytevector-u16-ref</item>
+      <item>bytevector-u16-set!</item>
+      <item>bytevector-u32-native-ref</item>
+      <item>bytevector-u32-native-set!</item>
+      <item>bytevector-u32-ref</item>
+      <item>bytevector-u32-set!</item>
+      <item>bytevector-u64-native-ref</item>
+      <item>bytevector-u64-native-set!</item>
+      <item>bytevector-u64-ref</item>
+      <item>bytevector-u64-set!</item>
+      <item>bytevector-u8-ref</item>
+      <item>bytevector-u8-set!</item>
+      <item>bytevector-uint-ref</item>
+      <item>bytevector-uint-set!</item>
+      <item>bytevector=?</item>
+      <item>bytevector?</item>
+      <item>caaaar</item>
+      <item>caaadr</item>
+      <item>caaar</item>
+      <item>caadar</item>
+      <item>caaddr</item>
+      <item>caadr</item>
+      <item>caar</item>
+      <item>cadaar</item>
+      <item>cadadr</item>
+      <item>cadar</item>
+      <item>caddar</item>
+      <item>cadddr</item>
+      <item>caddr</item>
+      <item>cadr</item>
+      <item>call-with-bytevector-output-port</item>
+      <item>call-with-current-continuation</item>
+      <item>call-with-input-file</item>
+      <item>call-with-output-file</item>
+      <item>call-with-port</item>
+      <item>call-with-string-output-port</item>
+      <item>call-with-values</item>
+      <item>call/cc</item>
+      <item>car</item>
+      <item>case-lambda</item>
+      <item>case</item>
+      <item>catch</item>
+      <item>cdaaar</item>
+      <item>cdaadr</item>
+      <item>cdaar</item>
+      <item>cdadar</item>
+      <item>cdaddr</item>
+      <item>cdadr</item>
+      <item>cdar</item>
+      <item>cddaar</item>
+      <item>cddadr</item>
+      <item>cddar</item>
+      <item>cdddar</item>
+      <item>cddddr</item>
+      <item>cdddr</item>
+      <item>cddr</item>
+      <item>cdr</item>
+      <item>ceiling</item>
+      <item>char&gt;=?</item>
+      <item>char&gt;?</item>
+      <item>char&lt;=?</item>
+      <item>char&lt;?</item>
+      <item>char&lt;?c</item>
+      <item>char-&gt;integer</item>
+      <item>char-alphabetic?</item>
+      <item>char-ci&gt;=?</item>
+      <item>char-ci&gt;?</item>
+      <item>char-ci&lt;=?</item>
+      <item>char-ci&lt;?</item>
+      <item>char-ci=?</item>
+      <item>char-downcase</item>
+      <item>char-foldcase</item>
+      <item>char-general-category</item>
+      <item>char-lower-case?</item>
+      <item>char-numeric?</item>
+      <item>char-ready?</item>
+      <item>char-title-case?</item>
+      <item>char-titlecase</item>
+      <item>char-upcase</item>
+      <item>char-upper-case?</item>
+      <item>char-whitespace?</item>
+      <item>char=?</item>
+      <item>char?</item>
+      <item>close-input-port</item>
+      <item>close-output-port</item>
+      <item>close-port</item>
+      <item>complex?</item>
+      <item>cond</item>
+      <item>condition-accessor</item>
+      <item>condition-irritants</item>
+      <item>condition-message</item>
+      <item>condition-predicate</item>
+      <item>condition-who</item>
+      <item>condition</item>
+      <item>condition?</item>
+      <item>cons*</item>
+      <item>cons</item>
+      <item>continue</item>
+      <item>cos</item>
+      <item>current-error-port</item>
+      <item>current-input-port</item>
+      <item>current-output-port</item>
+      <item>datum-&gt;syntax</item>
+      <item>define-condition-type</item>
+      <item>define-enumeration</item>
+      <item>define-record-type</item>
+      <item>delete-file</item>
+      <item>denominator</item>
+      <item>display</item>
+      <item>div-and-mod</item>
+      <item>div0-and-mod0</item>
+      <item>div0</item>
+      <item>div</item>
+      <item>do</item>
+      <item>dynamic-wind</item>
+      <item>else</item>
+      <item>endianness</item>
+      <item>enum-set-&gt;list</item>
+      <item>enum-set-complement</item>
+      <item>enum-set-constructor</item>
+      <item>enum-set-difference</item>
+      <item>enum-set-indexer</item>
+      <item>enum-set-intersection</item>
+      <item>enum-set-member?</item>
+      <item>enum-set-projection</item>
+      <item>enum-set-subset?</item>
+      <item>enum-set-union</item>
+      <item>enum-set-universe</item>
+      <item>enum-set=?</item>
+      <item>eof-object</item>
+      <item>eof-object?</item>
+      <item>eol-style</item>
+      <item>eq?</item>
+      <item>equal-hash</item>
+      <item>equal?</item>
+      <item>eqv?</item>
+      <item>error-handling-mode</item>
+      <item>error</item>
+      <item>error?</item>
+      <item>eval</item>
+      <item>even?</item>
+      <item>exact-&gt;inexact</item>
+      <item>exact->inexact</item>
+      <item>exact-integer-sqrt</item>
+      <item>exact</item>
+      <item>exact?</item>
+      <item>exp</item>
+      <item>expt</item>
+      <item>file-exists?</item>
+      <item>file-options</item>
+      <item>filter</item>
+      <item>find</item>
+      <item>finite?</item>
+      <item>fixnum-&gt;flonum</item>
+      <item>fixnum-width</item>
+      <item>fixnum?</item>
+      <item>fl&gt;=?</item>
+      <item>fl&gt;?</item>
+      <item>fl&lt;=?</item>
+      <item>fl&lt;?</item>
+      <item>fl*</item>
+      <item>fl+</item>
+      <item>fl-</item>
+      <item>fl/</item>
+      <item>fl=?</item>
+      <item>flabs</item>
+      <item>flacos</item>
+      <item>flasin</item>
+      <item>flatan</item>
+      <item>flceiling</item>
+      <item>flcos</item>
+      <item>fldenominator</item>
+      <item>fldiv-and-mod</item>
+      <item>fldiv0-and-mod0</item>
+      <item>fldiv0</item>
+      <item>fldiv</item>
+      <item>fleven?</item>
+      <item>flexp</item>
+      <item>flexpt</item>
+      <item>flfinite?</item>
+      <item>flfloor</item>
+      <item>flinfinite?</item>
+      <item>flinteger?</item>
+      <item>fllog</item>
+      <item>flmax</item>
+      <item>flmin</item>
+      <item>flmod0</item>
+      <item>flmod</item>
+      <item>flnan?</item>
+      <item>flnegative?</item>
+      <item>flnumerator</item>
+      <item>flodd?</item>
+      <item>flonum?</item>
+      <item>floor</item>
+      <item>flpositive?</item>
+      <item>flround</item>
+      <item>flsin</item>
+      <item>flsqrt</item>
+      <item>fltan</item>
+      <item>fltruncate</item>
+      <item>flush-output-port</item>
+      <item>flzero?</item>
+      <item>for-each</item>
+      <item>force</item>
+      <item>free-identifier=?</item>
+      <item>fx&gt;=?</item>
+      <item>fx&gt;?</item>
+      <item>fx&lt;=?</item>
+      <item>fx&lt;?</item>
+      <item>fx*/carry</item>
+      <item>fx*</item>
+      <item>fx+/carry</item>
+      <item>fx+</item>
+      <item>fx-/carry</item>
+      <item>fx-</item>
+      <item>fx=?</item>
+      <item>fxand</item>
+      <item>fxarithmetic-shift-left</item>
+      <item>fxarithmetic-shift-right</item>
+      <item>fxarithmetic-shift</item>
+      <item>fxbit-count</item>
+      <item>fxbit-field</item>
+      <item>fxbit-set?</item>
+      <item>fxcopy-bit-field</item>
+      <item>fxcopy-bit</item>
+      <item>fxdiv-and-mod</item>
+      <item>fxdiv0-and-mod0</item>
+      <item>fxdiv0</item>
+      <item>fxdiv</item>
+      <item>fxeven?</item>
+      <item>fxfirst-bit-set</item>
+      <item>fxif</item>
+      <item>fxior</item>
+      <item>fxlength</item>
+      <item>fxmax</item>
+      <item>fxmin</item>
+      <item>fxmod0</item>
+      <item>fxmod</item>
+      <item>fxnegative?</item>
+      <item>fxnot</item>
+      <item>fxodd?</item>
+      <item>fxpositive?</item>
+      <item>fxreverse-bit-field</item>
+      <item>fxrotate-bit-field</item>
+      <item>fxxor</item>
+      <item>fxzero?</item>
+      <item>gcd</item>
+      <item>generate-temporaries</item>
+      <item>get-bytevector-all</item>
+      <item>get-bytevector-n!</item>
+      <item>get-bytevector-n</item>
+      <item>get-bytevector-some</item>
+      <item>get-char</item>
+      <item>get-datum</item>
+      <item>get-line</item>
+      <item>get-string-all</item>
+      <item>get-string-n!</item>
+      <item>get-string-n</item>
+      <item>get-u8</item>
+      <item>greatest-fixnum</item>
+      <item>guard</item>
+      <item>har-ci&lt;?</item>
+      <item>hashtable-clear!</item>
+      <item>hashtable-contains?</item>
+      <item>hashtable-copy</item>
+      <item>hashtable-delete!</item>
+      <item>hashtable-entries</item>
+      <item>hashtable-equivalence-function</item>
+      <item>hashtable-hash-function</item>
+      <item>hashtable-keys</item>
+      <item>hashtable-mutable?</item>
+      <item>hashtable-ref</item>
+      <item>hashtable-set!</item>
+      <item>hashtable-size</item>
+      <item>hashtable-update!</item>
+      <item>hashtable?</item>
+      <item>i/o-decoding-error?</item>
+      <item>i/o-encoding-error-char</item>
+      <item>i/o-encoding-error?</item>
+      <item>i/o-error-filename</item>
+      <item>i/o-error-port</item>
+      <item>i/o-error-position</item>
+      <item>i/o-error?</item>
+      <item>i/o-file-already-exists-error?</item>
+      <item>i/o-file-does-not-exist-error?</item>
+      <item>i/o-file-is-read-only-error?</item>
+      <item>i/o-file-protection-error?</item>
+      <item>i/o-filename-error?</item>
+      <item>i/o-invalid-position-error?</item>
+      <item>i/o-port-error?</item>
+      <item>i/o-read-error?</item>
+      <item>i/o-write-error?</item>
+      <item>identifier-syntax</item>
+      <item>identifier?</item>
+      <item>if</item>
+      <item>imag-part</item>
+      <item>implementation-restriction-violation?</item>
+      <item>inexact-&gt;exact</item>
+      <item>inexact</item>
+      <item>inexact?</item>
+      <item>infinite?</item>
+      <item>input-port?</item>
+      <item>integer-&gt;char</item>
+      <item>integer-valued?</item>
+      <item>integer?</item>
+      <item>interaction-environment</item>
+      <item>irritants-condition?</item>
+      <item>lambda</item>
+      <item>latin-1-codec</item>
+      <item>lcm</item>
+      <item>least-fixnum</item>
+      <item>length</item>
+      <item>let*-values</item>
+      <item>let*</item>
+      <item>let-syntax</item>
+      <item>let-values</item>
+      <item>let</item>
+      <item>letrec*</item>
+      <item>letrec-syntax</item>
+      <item>letrec</item>
+      <item>lexical-violation?</item>
+      <item>list-&gt;string</item>
+      <item>list-&gt;vector</item>
+      <item>list-ref</item>
+      <item>list-sort</item>
+      <item>list-tail</item>
+      <item>list</item>
+      <item>list?</item>
+      <item>load</item>
+      <item>log</item>
+      <item>lookahead-char</item>
+      <item>lookahead-u8</item>
+      <item>magnitude</item>
+      <item>make-assertion-violation</item>
+      <item>make-bytevector</item>
+      <item>make-custom-binary-input-port</item>
+      <item>make-custom-binary-input/output-port</item>
+      <item>make-custom-binary-output-port</item>
+      <item>make-custom-textual-input-port</item>
+      <item>make-custom-textual-input/output-port</item>
+      <item>make-custom-textual-output-port</item>
+      <item>make-enumeration</item>
+      <item>make-eq-hashtable</item>
+      <item>make-eqv-hashtable</item>
+      <item>make-error</item>
+      <item>make-hashtable</item>
+      <item>make-i/o-decoding-error</item>
+      <item>make-i/o-encoding-error</item>
+      <item>make-i/o-error</item>
+      <item>make-i/o-file-already-exists-error</item>
+      <item>make-i/o-file-does-not-exist-error</item>
+      <item>make-i/o-file-is-read-only-error</item>
+      <item>make-i/o-file-protection-error</item>
+      <item>make-i/o-filename-error</item>
+      <item>make-i/o-invalid-position-error</item>
+      <item>make-i/o-port-error</item>
+      <item>make-i/o-read-error</item>
+      <item>make-i/o-write-error</item>
+      <item>make-implementation-restriction-violation</item>
+      <item>make-irritants-condition</item>
+      <item>make-lexical-violation</item>
+      <item>make-message-condition</item>
+      <item>make-no-infinities-violation</item>
+      <item>make-no-nans-violation</item>
+      <item>make-non-continuable-violation</item>
+      <item>make-polar</item>
+      <item>make-record-constructor-descriptor</item>
+      <item>make-record-type-descriptor</item>
+      <item>make-rectangular</item>
+      <item>make-serious-condition</item>
+      <item>make-string</item>
+      <item>make-syntax-violation</item>
+      <item>make-transcoder</item>
+      <item>make-undefined-violation</item>
+      <item>make-variable-transformer</item>
+      <item>make-vector</item>
+      <item>make-violation</item>
+      <item>make-warning</item>
+      <item>make-who-condition</item>
+      <item>max</item>
+      <item>member</item>
+      <item>memp</item>
+      <item>memq</item>
+      <item>memv</item>
+      <item>message-condition?</item>
+      <item>min</item>
+      <item>mod0</item>
+      <item>mod</item>
+      <item>modulo</item>
+      <item>nan?</item>
+      <item>native-endianness</item>
+      <item>native-eol-style</item>
+      <item>native-transcoder</item>
+      <item>negative?</item>
+      <item>newline</item>
+      <item>no-infinities-violation?</item>
+      <item>no-nans-violation?</item>
+      <item>non-continuable-violation?</item>
+      <item>not</item>
+      <item>null-environment</item>
+      <item>null?</item>
+      <item>number-&gt;string</item>
+      <item>number->string</item>
+      <item>number?</item>
+      <item>numerator</item>
+      <item>odd?</item>
+      <item>open-bytevector-input-port</item>
+      <item>open-bytevector-output-port</item>
+      <item>open-file-input-port</item>
+      <item>open-file-input/output-port</item>
+      <item>open-file-output-port</item>
+      <item>open-input-file</item>
+      <item>open-output-file</item>
+      <item>open-string-input-port</item>
+      <item>open-string-output-port</item>
+      <item>or</item>
+      <item>output-port-buffer-mode</item>
+      <item>output-port?</item>
+      <item>pair?</item>
+      <item>partition</item>
+      <item>peek-char</item>
+      <item>port-eof?</item>
+      <item>port-has-port-position?</item>
+      <item>port-has-set-port-position!?</item>
+      <item>port-position</item>
+      <item>port-transcoder</item>
+      <item>port?</item>
+      <item>positive?</item>
+      <item>procedure?</item>
+      <item>put-bytevector</item>
+      <item>put-char</item>
+      <item>put-datum</item>
+      <item>put-string</item>
+      <item>put-u8</item>
+      <item>quasiquote</item>
+      <item>quasisyntax</item>
+      <item>quote</item>
+      <item>quotient</item>
+      <item>raise-continuable</item>
+      <item>raise</item>
+      <item>rational-valued?</item>
+      <item>rational?</item>
+      <item>rationalize</item>
+      <item>read-char</item>
+      <item>read</item>
+      <item>real-&gt;flonum</item>
+      <item>real-part</item>
+      <item>real-valued?</item>
+      <item>real?</item>
+      <item>record-accessor</item>
+      <item>record-constructor-descriptor</item>
+      <item>record-constructor</item>
+      <item>record-field-mutable?</item>
+      <item>record-mutator</item>
+      <item>record-predicate</item>
+      <item>record-rtd</item>
+      <item>record-type-descriptor</item>
+      <item>record-type-descriptor?</item>
+      <item>record-type-field-names</item>
+      <item>record-type-generative?</item>
+      <item>record-type-name</item>
+      <item>record-type-opaque?</item>
+      <item>record-type-parent</item>
+      <item>record-type-sealed?</item>
+      <item>record-type-uid</item>
+      <item>record?</item>
+      <item>remainder</item>
+      <item>remove</item>
+      <item>remp</item>
+      <item>remq</item>
+      <item>remv</item>
+      <item>reverse</item>
+      <item>round</item>
+      <item>scheme-report-environment</item>
+      <item>serious-condition?</item>
+      <item>set!</item>
+      <item>set-car!</item>
+      <item>set-cdr!</item>
+      <item>set-port-position!</item>
+      <item>simple-conditions</item>
+      <item>sin</item>
+      <item>sint-list-&gt;bytevector</item>
+      <item>sqrt</item>
+      <item>standard-error-port</item>
+      <item>standard-input-port</item>
+      <item>standard-output-port</item>
+      <item>string&gt;=?</item>
+      <item>string&gt;?</item>
+      <item>string&lt;=?</item>
+      <item>string&lt;?</item>
+      <item>string-&gt;bytevector</item>
+      <item>string-&gt;list</item>
+      <item>string-&gt;number</item>
+      <item>string-&gt;symbol</item>
+      <item>string-&gt;utf16</item>
+      <item>string-&gt;utf32</item>
+      <item>string-&gt;utf8</item>
+      <item>string-append</item>
+      <item>string-ci&gt;=?</item>
+      <item>string-ci&gt;?</item>
+      <item>string-ci&lt;=?</item>
+      <item>string-ci&lt;?</item>
+      <item>string-ci-hash</item>
+      <item>string-ci=?</item>
+      <item>string-copy</item>
+      <item>string-downcase</item>
+      <item>string-fill!</item>
+      <item>string-foldcase</item>
+      <item>string-hash</item>
+      <item>string-length</item>
+      <item>string-normalize-nfc</item>
+      <item>string-normalize-nfd</item>
+      <item>string-normalize-nfkc</item>
+      <item>string-normalize-nfkd</item>
+      <item>string-ref</item>
+      <item>string-set!</item>
+      <item>string-titlecase</item>
+      <item>string-upcase</item>
+      <item>string</item>
+      <item>string=?</item>
+      <item>string?</item>
+      <item>substring</item>
+      <item>symbol-&gt;string</item>
+      <item>symbol-hash</item>
+      <item>symbol=?</item>
+      <item>symbol?</item>
+      <item>syntax-&gt;datum</item>
+      <item>syntax-case</item>
+      <item>syntax-rules</item>
+      <item>syntax-violation-form</item>
+      <item>syntax-violation-subform</item>
+      <item>syntax-violation</item>
+      <item>syntax-violation?</item>
+      <item>syntax</item>
+      <item>tan</item>
+      <item>textual-port?</item>
+      <item>transcoded-port</item>
+      <item>transcoder-codec</item>
+      <item>transcoder-eol-style</item>
+      <item>transcoder-error-handling-mode</item>
+      <item>transcript-off</item>
+      <item>transcript-on</item>
+      <item>truncate</item>
+      <item>u8-list-&gt;bytevector</item>
+      <item>uint-list-&gt;bytevector</item>
+      <item>undefined-violation?</item>
+      <item>unquote-splicing</item>
+      <item>unquote</item>
+      <item>unsyntax-splicing</item>
+      <item>unsyntax</item>
+      <item>utf-16-codec</item>
+      <item>utf-8-codec</item>
+      <item>utf16-&gt;string</item>
+      <item>utf32-&gt;string</item>
+      <item>utf8-&gt;string</item>
+      <item>values</item>
+      <item>vector-&gt;list</item>
+      <item>vector-&gt;listlist->vector</item>
+      <item>vector-fill!</item>
+      <item>vector-length</item>
+      <item>vector-ref</item>
+      <item>vector-set!</item>
+      <item>vector-sort!</item>
+      <item>vector-sort</item>
+      <item>vector</item>
+      <item>vector?</item>
+      <item>violation?</item>
+      <item>warning?</item>
+      <item>while</item>
+      <item>who-condition?</item>
+      <item>with-exception-handler</item>
+      <item>with-input-from-file</item>
+      <item>with-output-to-file</item>
+      <item>with-syntax</item>
+      <item>write-char</item>
+      <item>write</item>
+      <item>zero?</item>
+    </list>
+    <contexts>
+      <context name="Level0" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="Level1" char="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
+        <IncludeRules context="Default"/>
+      </context>
+
+      <context name="Default" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="hash" char="#" lookAhead="1"/>
+        <DetectChar attribute="Comment" context="semicolon" char=";" lookAhead="1"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="String" context="Template" char="&amp;" char1="{"/>
+        <AnyChar attribute="Other Brackets" context="#stay" String="{}[]"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Definition" context="function_decl" String="defines"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <RegExpr attribute="Normal" context="#stay" String="&symbol;"/>
+        <!-- s, f, d, l are extensions of Kawa -->
+        <RegExpr attribute="Float" context="#stay" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
+        <RegExpr attribute="Decimal" context="#stay" String="[0-9]++"/>
+      </context>
+
+
+      <context name="Template" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="String" context="#pop" char="}"/>
+        <DetectChar attribute="String" context="Template" char="{"/>
+        <DetectChar attribute="Char" context="TemplateTemplate" char="&amp;" lookAhead="1"/>
+      </context>
+      <context name="TemplateTemplate" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="Operator" context="#stay" char="&amp;" char1="|" firstNonSpace="1"/>
+        <Detect2Chars attribute="Operator" context="#pop!NotNewlineTemplate" char="&amp;" char1="-"/>
+        <Detect2Chars attribute="Brackets1" context="#pop!Level1" char="&amp;" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="#pop!EmbeddedExpressionTemplate" char="&amp;" char1="["/>
+        <Detect2Chars attribute="Extension" context="#pop!FormatTemplate" char="&amp;" char1="~"/>
+        <StringDetect attribute="Comment" context="#pop!MultiLineComment" String="&amp;#|" beginRegion="comment"/>
+        <RegExpr attribute="Char" context="#pop!EndCharTemplate" String="(&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*))" lookAhead="1"/>
+        <DetectChar attribute="String" context="#pop" char="&amp;"/>
+      </context>
+      <context name="FormatTemplate" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Extension" context="#pop" String="({["/>
+        <AnyChar attribute="Extension" context="FormatTemplate" String=")}]"/>
+        <RegExpr attribute="Extension" context="#pop" String="[^(){}\[\]]+"/>
+      </context>
+      <context name="EmbeddedExpressionTemplate" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="#pop" char="]"/>
+        <IncludeRules context="Level1"/>
+      </context>
+      <context name="NotNewlineTemplate" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+      </context>
+      <context name="EndCharTemplate" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Char" context="#pop" String="%1;" dynamic="1"/>
+        <StringDetect attribute="Error" context="#pop" String="%1" dynamic="1"/>
+      </context>
+
+
+      <context name="semicolon" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop!comment">
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*BEGIN\b.*" beginRegion="region"/>
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*END\b.*" endRegion="region"/>
+      </context>
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="hash" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="t"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="T"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="f"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="F"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num16" char="#" char1="x"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num8" char="#" char1="o"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num2" char="#" char1="b"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="e"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="i"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="d"/>
+        <Detect2Chars attribute="Char" context="#pop!Char" char="#" char1="\"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumComment" char="#" char1=";"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileCommentOrExtension" char="#" char1="!" lookAhead="1"/>
+
+        <!-- Kawa extension -->
+        <Detect2Chars attribute="Operator" context="#pop!Regex" char="#" char1="/"/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XML" char="#" char1="&lt;" lookAhead="1"/>
+
+        <DetectChar attribute="Normal" context="#pop" char="#"/>
+      </context>
+
+
+      <context name="XML" attribute="XML Tag" lineEndContext="#pop">
+        <StringDetect attribute="XML Tag" context="#pop!XMLProc" String="#&lt;?"/>
+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="#&lt;!--"/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="#&lt;![CDATA["/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr1" String="#&lt;("/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr2" String="#&lt;{"/>
+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="#&lt;[^\s>]++"/>
+        <Detect2Chars attribute="Error" context="#pop" char="#" char1="&lt;"/>
+      </context>
+
+      <context name="XMLTagExpr1" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="Level1" char="("/>
+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="XMLTagExpr2" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="Level1" char="("/>
+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char="}"/>
+        <IncludeRules context="Default"/>
+      </context>
+
+      <context name="XMLTag" attribute="XML Attribute" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="XML Tag" context="#pop" char="/" char1=">"/>
+        <DetectChar attribute="XML Tag" context="#pop!XMLInnerTag" char=">"/>
+        <RegExpr attribute="XML Attribute" context="XMLAttribute" String="[^\s=/>]++\s*"/>
+      </context>
+      <context name="XMLInnerTag" attribute="XML Tag" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Tag" context="XMLFindXML" char="&lt;" lookAhead="1"/>
+      </context>
+      <context name="XMLFindXML" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLProc" char="&lt;" char1="?"/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr1" char="&lt;" char1="("/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr2" char="&lt;" char1="{"/>
+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="&lt;!--"/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="&lt;![CDATA["/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>
+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="&lt;[^\s>]++"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&lt;"/>
+      </context>
+      <context name="XMLCloseTag" attribute="String" lineEndContext="#pop#pop">
+        <RegExpr attribute="XML Tag" context="#pop#pop" String="&lt;/[^\s>]*>"/>
+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>
+      </context>
+
+      <context name="XMLAttribute" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="XML Attribute" context="XMLAttributeValue" char="="/>
+      </context>
+      <context name="XMLAttributeValue" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="XML String" context="XMLDQ" char="&quot;"/>
+        <DetectChar attribute="XML String" context="XMLSQ" char="'"/>
+      </context>
+      <context name="XMLDQ" attribute="XML String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="&quot;"/>
+        <IncludeRules context="XMLStringEscape"/>
+      </context>
+      <context name="XMLSQ" attribute="XML String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="'"/>
+        <IncludeRules context="XMLStringEscape"/>
+      </context>
+      <context name="XMLStringEscape" attribute="XML String" lineEndContext="#stay">
+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>
+      </context>
+
+      <context name="XMLEscape" attribute="XML String" lineEndContext="#stay">
+        <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr1" char="&amp;" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="#pop!XMLEnclosedExpr2" char="&amp;" char1="{"/>
+        <RegExpr attribute="XML Entity" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>
+      </context>
+      <context name="XMLEnclosedExpr1" attribute="Normal" lineEndContext="#pop">
+        <DetectChar attribute="Brackets2" context="Level2" char="("/>
+        <DetectChar attribute="Brackets1" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="XMLEnclosedExpr2" attribute="Normal" lineEndContext="#pop">
+        <DetectChar attribute="Brackets2" context="Level2" char="("/>
+        <DetectChar attribute="Brackets1" context="#pop" char="}"/>
+        <IncludeRules context="Default"/>
+      </context>
+
+      <context name="XMLProc" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="XMLProcAttrs">
+        <RegExpr attribute="XML Tag" context="XMLProcAttrs" String="[^\s?]+"/>
+      </context>
+      <context name="XMLProcAttrs" attribute="XML Attribute" lineEndContext="#stay">
+        <Detect2Chars attribute="XML Tag" context="#pop#pop" char="?" char1=">"/>
+      </context>
+
+      <context name="XMLComment" attribute="XML Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <Detect2Chars attribute="XML Comment" context="XMLCommentCheck" char="-" char1="-" lookAhead="1"/>
+      </context>
+      <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="XML Tag" context="#pop#pop" String="-->"/>
+        <Detect2Chars attribute="XML Error" context="#pop" char="-" char1="-"/>
+      </context>
+
+      <context name="XMLCDATA" attribute="XML CDATA" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect attribute="XML Tag" context="#pop" String="]]>"/>
+      </context>
+
+
+      <context name="Regex" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Extension" context="RegexEnd" String="&regex;"/>
+      </context>
+      <context name="RegexEnd" attribute="Extension" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Operator" context="RegexModifier" char="/"/>
+      </context>
+      <context name="RegexModifier" attribute="Extension" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Extension" context="#stay" String="ism"/>
+      </context>
+
+
+      <context name="Num2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit2">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit2" String="+-"/>
+      </context>
+      <context name="Digit2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Decimal" context="#stay" String="01"/>
+      </context>
+
+      <context name="Num8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit8">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit8" String="+-"/>
+      </context>
+      <context name="Digit8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Decimal" context="#stay" String="01234567"/>
+      </context>
+
+      <context name="Num10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit10">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit10" String="+-"/>
+      </context>
+      <context name="Digit10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <!-- s, f, d, l are extensions of Kawa -->
+        <RegExpr attribute="Float" context="#pop" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
+        <RegExpr attribute="Decimal" context="#pop" String="[0-9]++"/>
+      </context>
+
+      <context name="Num16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit16">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit16" String="+-"/>
+      </context>
+      <context name="Digit16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Decimal" context="#pop" String="[0-9a-fA-F]+"/>
+      </context>
+
+      <context name="NumPrefix" attribute="Decimal" lineEndContext="#pop">
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="e"/>
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="i"/>
+      </context>
+
+
+      <context name="Char" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="HexChar" char="x"/>
+        <keyword attribute="Char" context="#pop" String="characters" insensitive="1"/>
+        <RegExpr attribute="Char" context="#pop" String=".(?!\w)"/>
+        <RegExpr attribute="Error" context="#pop" String="\w+|."/>
+      </context>
+      <context name="HexChar" attribute="Char" lineEndContext="#pop#pop">
+        <RegExpr attribute="Char" context="#pop#pop" String="[0-9a-fA-F]+"/>
+      </context>
+
+
+      <context name="MultiLineGuileCommentOrExtension" attribute="Comment" lineEndContext="#stay">
+        <RegExpr attribute="Extension" context="#pop" String="#!\w+"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileComment" char="#" char1="!" beginRegion="comment"/>
+      </context>
+
+      <context name="MultiLineGuileComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="comment">
+        <RegExpr attribute="Comment" context="#pop" String="^!#\s*$" endRegion="comment" column="0"/>
+      </context>
+
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <context name="DatumComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent" char="(" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket" char="[" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace" char="{" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentString" char="&quot;"/>
+
+        <DetectChar attribute="Comment" context="#pop!DatumCommentHash" char="#"/>
+
+        <RegExpr attribute="Comment" context="#pop!DatumCommentExpr" String="[^{}\[\]()\s]+"/>
+      </context>
+      <context name="DatumCommentHash" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentRegex" char="/"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXML" char="&lt;"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentTemplate" char="&amp;" char1="{"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="DatumCommentTemplate" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop" char="}"/>
+        <DetectChar attribute="Comment" context="DatumCommentTemplate" char="{"/>
+        <DetectChar attribute="Comment" context="DatumCommentTemplateTemplate" char="&amp;"/>
+      </context>
+      <context name="DatumCommentTemplateTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentFormatTemplate" char="~"/>
+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*);?"/>
+      </context>
+      <context name="DatumCommentFormatTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Comment" context="#pop" String="({["/>
+        <AnyChar attribute="Comment" context="DatumCommentFormatTemplate" String=")}]"/>
+        <RegExpr attribute="Comment" context="#pop" String="[^(){}\[\]]+"/>
+      </context>
+
+      <context name="DatumCommentRegex" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Comment" context="DatumCommentRegexEnd" String="&regex;"/>
+      </context>
+      <context name="DatumCommentRegexEnd" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Comment" context="DatumCommentRegexModifier" char="/"/>
+      </context>
+      <context name="DatumCommentRegexModifier" attribute="Comment" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Comment" context="#stay" String="ism"/>
+      </context>
+
+      <context name="DatumCommentXML" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLProc" char="?"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="{"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="!--"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="![CDATA["/>
+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="[^\s>]++\s*"/>
+      </context>
+
+      <context name="DatumCommentXMLProc" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="?" char1=">"/>
+      </context>
+      <context name="DatumCommentXMLCDATA" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="]]>"/>
+      </context>
+      <context name="DatumCommentXMLComment" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="-->"/>
+      </context>
+      <context name="DatumCommentXMLTagExpr1" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char=")"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentXMLTagExpr2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char="}"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+
+      <context name="DatumCommentXMLTag" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLInnerTag" char=">"/>
+        <RegExpr attribute="Comment" context="DatumCommentXMLAttribute" String="[^\s=/>]++\s*"/>
+      </context>
+      <context name="DatumCommentXMLInnerTag" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLFindXML" char="&lt;" lookAhead="1"/>
+      </context>
+      <context name="DatumCommentXMLFindXML" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLProc" char="&lt;" char1="?"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="&lt;" char1="("/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="&lt;" char1="{"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="&lt;!--"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="&lt;![CDATA["/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>
+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="&lt;[^\s>]++"/>
+        <DetectChar attribute="Comment" context="#pop" char="&lt;"/>
+      </context>
+      <context name="DatumCommentXMLCloseTag" attribute="Comment" lineEndContext="#pop#pop">
+        <RegExpr attribute="Comment" context="#pop#pop" String="&lt;/[^\s>]*>"/>
+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>
+      </context>
+
+      <context name="DatumCommentXMLAttribute" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLAttributeValue" char="="/>
+      </context>
+      <context name="DatumCommentXMLAttributeValue" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLDQ" char="&quot;"/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLSQ" char="'"/>
+      </context>
+      <context name="DatumCommentXMLDQ" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="&quot;"/>
+        <IncludeRules context="DatumCommentXMLStringEscape"/>
+      </context>
+      <context name="DatumCommentXMLSQ" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="'"/>
+        <IncludeRules context="DatumCommentXMLStringEscape"/>
+      </context>
+      <context name="DatumCommentXMLStringEscape" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>
+      </context>
+
+      <context name="DatumCommentXMLEscape" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentParent2" char="&amp;" char1="("/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentBrace2" char="&amp;" char1="{"/>
+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>
+      </context>
+
+      <context name="DatumCommentExpr" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace2" char="{"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>
+      </context>
+
+      <context name="DatumCommentString" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="&quot;"/>
+        <RegExpr attribute="Comment" context="#stay" String="(?:[^\\&quot;]++|\\.)++"/>
+      </context>
+
+      <context name="DatumCommentParent" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char=")" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentParent2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char=")"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBracket" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="]" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBracket2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="]"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBrace" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="}" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBrace2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="}"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+
+      <context name="DatumCommentInExpr" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="DatumCommentBrace2" char="{"/>
+        <DetectChar attribute="Comment" context="DatumCommentBracket2" char="["/>
+        <DetectChar attribute="Comment" context="DatumCommentString" char="&quot;"/>
+        <DetectChar attribute="Comment" context="DatumCommentHash" char="#"/>
+      </context>
+
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+        <DetectChar attribute="Char" context="EscapeString" char="\"/>
+      </context>
+      <context name="EscapeString" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Char" context="#pop" String="abfnrtv&quot;\"/>
+        <AnyChar attribute="Char" context="MultiLineString" String="&tab; "/>
+        <RegExpr attribute="Char" context="#pop" String="[xXu][0-9a-fA-F]+;|\\[0-7]{3}|(?:[MC]-|\^)?."/>
+      </context>
+      <context name="MultiLineString" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+      </context>
+
+
+      <context name="function_decl" attribute="Function" lineEndContext="#stay">
+        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-!$%&quot;*/:&lt;=>?~_^+.@]*\s*"/>
+      </context>
+
+
+      <context name="Level1" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets2" context="Level2" char="("/>
+        <Detect2Chars attribute="Brackets2" context="Level2" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets2" context="Level2" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets2" context="Level2" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets2" context="Level2" char="@" char1="("/>
+        <DetectChar attribute="Brackets1" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="Level2" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets3" context="Level3" char="("/>
+        <Detect2Chars attribute="Brackets3" context="Level3" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets3" context="Level3" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets3" context="Level3" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets3" context="Level3" char="@" char1="("/>
+        <DetectChar attribute="Brackets2" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="Level3" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets4" context="Level4" char="("/>
+        <Detect2Chars attribute="Brackets4" context="Level4" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets4" context="Level4" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets4" context="Level4" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets4" context="Level4" char="@" char1="("/>
+        <DetectChar attribute="Brackets3" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="Level4" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets5" context="Level5" char="("/>
+        <Detect2Chars attribute="Brackets5" context="Level5" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets5" context="Level5" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets5" context="Level5" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets5" context="Level5" char="@" char1="("/>
+        <DetectChar attribute="Brackets4" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="Level5" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets6" context="Level6" char="("/>
+        <Detect2Chars attribute="Brackets6" context="Level6" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets6" context="Level6" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets6" context="Level6" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets6" context="Level6" char="@" char1="("/>
+        <DetectChar attribute="Brackets5" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="Level6" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="Level1" char="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
+        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
+        <DetectChar attribute="Brackets6" context="#pop" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal"      defStyleNum="dsNormal"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Definition"  defStyleNum="dsExtension" spellChecking="0"/>
+      <itemData name="Operator"    defStyleNum="dsOperator" spellChecking="0"/>
+      <itemData name="Function"    defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Base Prefix" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Float"       defStyleNum="dsFloat" spellChecking="0"/>
+      <itemData name="Char"        defStyleNum="dsChar" spellChecking="0"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="Error"       defStyleNum="dsError" spellChecking="0"/>
+      <itemData name="Extension"   defStyleNum="dsExtension" spellChecking="0"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="XML Tag"     defStyleNum="dsString" spellChecking="0"/>
+      <itemData name="XML Comment" defStyleNum="dsComment"/>
+      <itemData name="XML CDATA"   defStyleNum="dsString"/>
+      <itemData name="XML Attribute" defStyleNum="dsOthers" spellChecking="0"/>
+      <itemData name="XML String"  defStyleNum="dsString"/>
+      <itemData name="XML Error"   defStyleNum="dsError" spellChecking="0"/>
+      <itemData name="XML Entity"  defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Brackets1"   defStyleNum="dsNormal" color="#ff0000" bold="1" spellChecking="0"/>
+      <itemData name="Brackets2"   defStyleNum="dsNormal" color="#ff8800" bold="1" spellChecking="0"/>
+      <itemData name="Brackets3"   defStyleNum="dsNormal" color="#888800" bold="1" spellChecking="0"/>
+      <itemData name="Brackets4"   defStyleNum="dsNormal" color="#008800" bold="1" spellChecking="0"/>
+      <itemData name="Brackets5"   defStyleNum="dsNormal" color="#3689e6" bold="1" spellChecking="0"/> <!-- #000088 -->
+      <itemData name="Brackets6"   defStyleNum="dsNormal" color="#a100a1" bold="1" spellChecking="0"/> <!-- #880088 -->
+      <itemData name="Other Brackets" defStyleNum="dsOperator" spellChecking="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:.,\&amp;" additionalDeliminator="&quot;;#"/>
+    <comments>
+      <comment name="singleLine" start=";;"/>
+      <comment name="multiLine" start="#|" end="|#" region="comment"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/sci.xml b/xml/sci.xml
--- a/xml/sci.xml
+++ b/xml/sci.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="scilab" version="3" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">
+<language name="scilab" version="5" kateversion="2.2" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">
   <highlighting>
     <list name="Structure-keywords">
       <item>do</item>
@@ -1164,9 +1164,14 @@
         <keyword attribute="functions" context="#stay" String="functions"/>
         <Float attribute = "Float" context="#stay"/>
         <Int attribute = "Decimal" context="#stay"/>
-        <RegExpr String= "//.*$" attribute = "Comment" context="#stay"/>
+        <Detect2Chars char = "/" char1 = "/" attribute = "Comment" context="Comment"/>
         <RangeDetect char = "&quot;" char1 = "&quot;" attribute = "String" context="#stay"/>
      </context>
+     <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+     </context>
    </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
@@ -1184,7 +1189,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
     </comments>
     <keywords casesensitive="1" weakDeliminator="%$" />
   </general>
diff --git a/xml/sed.xml b/xml/sed.xml
--- a/xml/sed.xml
+++ b/xml/sed.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="sed" section="Scripts" version="2" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
+<language name="sed" section="Scripts" version="3" kateversion="2.4" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
         <highlighting>
                 <contexts>
                         <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">
@@ -220,7 +220,11 @@
                                 <DetectChar   char="]"           attribute="Regex Escape" context="#stay"/>
                         </context>
 
-                        <context name="Comment" attribute="Comment" lineEndContext="BeginningOfLine"/>
+                        <context name="Comment" attribute="Comment" lineEndContext="#pop">
+                                <DetectSpaces />
+                                <IncludeRules context="##Alerts"/>
+                                <IncludeRules context="##Modelines"/>
+                        </context>
                         <context name="Error"   attribute="Error"   lineEndContext="BeginningOfLine"/>
                 </contexts>
 
@@ -265,3 +269,4 @@
                 </comments>
         </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 8; indent-width 8; -->
diff --git a/xml/sgml.xml b/xml/sgml.xml
--- a/xml/sgml.xml
+++ b/xml/sgml.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="SGML" version="2" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">
+<language name="SGML" version="3" kateversion="2.2" section="Markup" extensions="*.sgml" mimetype="text/sgml">
   <highlighting>
     <contexts>
        <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
-         <StringDetect attribute="Comment" context="Comment" String="&lt;!--"/>
+         <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="Comment"/>
          <RegExpr attribute="Tag" context="Attribute" String="&lt;\s*\/?\s*[a-zA-Z_:][a-zA-Z0-9._:-]*" />
        </context>
 
@@ -25,7 +25,10 @@
        </context>
 
        <context attribute="Comment" lineEndContext="#stay" name="Comment" >
-         <StringDetect attribute="Comment" context="#pop" String="--&gt;"/>
+         <DetectSpaces />
+         <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="Comment"/>
+         <IncludeRules context="##Alerts"/>
+         <IncludeRules context="##Modelines"/>
        </context>
 
     </contexts>
@@ -39,7 +42,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="//--&gt;" />
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="Comment" />
     </comments>
     <keywords casesensitive="0" />
   </general>
diff --git a/xml/sml.xml b/xml/sml.xml
--- a/xml/sml.xml
+++ b/xml/sml.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="SML" version="4" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">
+<language name="SML" version="5" kateversion="2.3" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">
   <highlighting>
     <list name="keywords">
       <item>abstype</item>
@@ -65,7 +65,7 @@
     </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <Detect2Chars attribute="Comment" context="Multiline/Inline Comment" char="(" char1="*" />
+        <Detect2Chars attribute="Comment" context="Multiline/Inline Comment" char="(" char1="*" beginRegion="Comment" />
         <DetectChar attribute="String" context="String" char="&quot;" />
         <keyword attribute="Keyword" context="#stay" String="keywords" />
         <keyword attribute="Data Type" context="#stay" String="types" />
@@ -77,7 +77,10 @@
           <AnyChar String="fF" attribute="Float" context="#pop"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Multiline/Inline Comment">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment" />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="String">
         <HlCStringChar attribute="String Char" context="#stay"/>
@@ -98,7 +101,8 @@
   <general>
     <keywords casesensitive="1" />
     <comments>
-      <comment name="multiLine" start="(*" end="*)" />
+      <comment name="multiLine" start="(*" end="*)" region="Comment" />
     </comments>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/sql-mysql.xml b/xml/sql-mysql.xml
--- a/xml/sql-mysql.xml
+++ b/xml/sql-mysql.xml
@@ -6,7 +6,7 @@
   modifications by Milian Wolff (mail@milianw.de)
   v3 fix comments by Gene Thomas <gene@genethomas.com>
 -->
-<language name="SQL (MySQL)" version="5" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+<language name="SQL (MySQL)" version="6" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -381,7 +381,7 @@
         <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
         <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>
+        <WordDetect attribute="Comment" context="SingleLineComment" String="rem" insensitive="true" column="0"/>
 
         <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/> <!-- conflict with "operators" keywords -->
 
@@ -443,10 +443,17 @@
         <DetectChar attribute="Name" context="#pop" char="`"/>
       </context>
       <!-- comments -->
-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <LineContinue attribute="Comment" context="#pop"/>
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <!-- preprocessor -->
       <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
@@ -472,10 +479,11 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="--"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="singleLine" start="--" position="afterwhitespace"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="0"/>
     <folding indentationsensitive="true"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/sql-postgresql.xml b/xml/sql-postgresql.xml
--- a/xml/sql-postgresql.xml
+++ b/xml/sql-postgresql.xml
@@ -3,7 +3,7 @@
 <!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev
      v5 fix comments by Gene Thomas <gene@genethomas.com>
   -->
-<language name="SQL (PostgreSQL)" version="9" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+<language name="SQL (PostgreSQL)" version="10" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -991,7 +991,7 @@
         <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
         <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="SingleLineComment" String="rem\b" insensitive="true" column="0"/>
+        <WordDetect attribute="Comment" context="SingleLineComment" String="rem" insensitive="true" column="0"/>
 
         <!-- HACK: don't jump into MultiLineString for CREATE FUNCTION $funcName$...$funcName$ -->
         <RegExpr String="create\s+(or\s+replace\s+)?function" insensitive="true" context="CreateFunction" attribute="Keyword"/>
@@ -1036,10 +1036,17 @@
         <DetectChar attribute="Symbol" context="#stay" char="&#38;"/>
         <DetectChar attribute="String" context="#pop" char="'"/>
       </context>
-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <LineContinue attribute="Comment" context="#pop"/>
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
       <context name="Identifier" attribute="Identifier" lineEndContext="#pop">
         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
@@ -1066,9 +1073,10 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="--"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="singleLine" start="--" position="afterwhitespace"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="0"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/sql.xml b/xml/sql.xml
--- a/xml/sql.xml
+++ b/xml/sql.xml
@@ -5,7 +5,7 @@
      v3 fix comments by Gene Thomas <gene@genethomas.com>
   -->
 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
-<language name="SQL" version="5" kateversion="5.0" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
+<language name="SQL" version="6" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Yury Lebedev (yurylebedev@mail.ru)" license="LGPL">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -877,7 +877,7 @@
         <!-- comments, before operators -->
         <Detect2Chars attribute="Comment" context="Singleline PL/SQL-style comment" char="-" char1="-"/>
         <Detect2Chars attribute="Comment" context="Multiline C-style comment" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Comment" context="SQL*Plus remark directive" String="^rem\b" insensitive="true" column="0"/>
+        <WordDetect attribute="Comment" context="SQL*Plus remark directive" String="rem" insensitive="true" column="0"/>
 
         <LineContinue attribute="Symbol" context="#stay" char="/" column="0"/> <!-- conflict with "operators" keywords -->
         <keyword attribute="Keyword" String="keywords" context="#stay"/>
@@ -915,11 +915,20 @@
         <Detect2Chars attribute="String Char" context="#stay" char="'" char1="'"/>
         <DetectChar attribute="String" context="#pop" char="'"/>
       </context>
-      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop"/>
+      <context name="Singleline PL/SQL-style comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
       <context name="Multiline C-style comment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
-      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop"/>
+      <context name="SQL*Plus remark directive" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="Singleline PL/SQL-style comment"/>
+      </context>
       <context name="User-defined identifier" attribute="Identifier" lineEndContext="#pop">
         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
       </context>
@@ -947,8 +956,8 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="--"/>
-      <comment name="multiLine" start="/*" end="*/"/>
+      <comment name="singleLine" start="--" position="afterwhitespace"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="0"/>
   </general>
diff --git a/xml/stata.xml b/xml/stata.xml
--- a/xml/stata.xml
+++ b/xml/stata.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Stata" version="10" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
+<language name="Stata" version="11" kateversion="2.3" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
  casesensitive="1" priority="5" author="Larry Radbill (Larry.Radbill gmail com)" license="LGPL" >
 
   <highlighting>
@@ -3175,12 +3175,16 @@
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context attribute="String" lineEndContext="#stay" name="string">
@@ -3214,10 +3218,11 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" />
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/tcl.xml b/xml/tcl.xml
--- a/xml/tcl.xml
+++ b/xml/tcl.xml
@@ -28,7 +28,7 @@
 	    - Fixed detection of varaibles with names containing serval namespace delimiters (::)
 -->
 
-<language name="Tcl/Tk" version="4" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
+<language name="Tcl/Tk" version="5" kateversion="2.4" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
   <highlighting>
     <list name="keywords">
       <item>after</item>
@@ -532,7 +532,11 @@
         <DetectChar char  = "$" attribute = "Variable" context="#stay"/>
       </context>
 
-      <context name = "Comment" attribute = "Comment" lineEndContext="#pop"/>
+      <context name = "Comment" attribute = "Comment" lineEndContext="#pop">
+        <DetectSpaces />
+        <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
+      </context>
 
       <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay">
         <RegExpr String = "\s*#" attribute="Comment" context="Comment" />
@@ -563,3 +567,4 @@
   </general>
 
 </language>
+<!-- kate: replace-tabs on; indent-width 2; -->
diff --git a/xml/tcsh.xml b/xml/tcsh.xml
--- a/xml/tcsh.xml
+++ b/xml/tcsh.xml
@@ -8,7 +8,7 @@
         <!ENTITY noword   "(?![\w$+-])">		<!-- no word, $, + or - following -->
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
 ]>
-<language name="Tcsh" version="6" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+<language name="Tcsh" version="7" kateversion="5.0" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
 
 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
@@ -462,7 +462,9 @@
         <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
@@ -815,3 +817,4 @@
     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/texinfo.xml b/xml/texinfo.xml
--- a/xml/texinfo.xml
+++ b/xml/texinfo.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="1" kateversion="2.4">
+<language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="2" kateversion="2.4">
 
   <highlighting>
     <!--
@@ -15,7 +15,7 @@
       -->
     <contexts>
       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Comment" context="singleLineComment" String="@c(omment)?\b" />
+        <RegExpr attribute="Comment" context="singleLineComment" String="@c(?:omment)?\b" />
         <RegExpr attribute="Comment" context="multiLineComment" String="@ignore\b" beginRegion="ignore" />
         <RegExpr attribute="Command" context="nodeFolding" String="@node\b" beginRegion="node" />
 
@@ -26,12 +26,16 @@
       </context>
 
       <context name="singleLineComment" attribute="Comment" lineEndContext="#pop">
-				<IncludeRules context="##Alerts" />
-			</context>
+        <DetectSpaces />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
+      </context>
 
       <context name="multiLineComment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces />
         <StringDetect attribute="Comment" context="#pop" String="@end ignore" endRegion="ignore" />
-				<IncludeRules context="##Alerts" />
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <context name="nodeFolding" attribute="Normal Text" lineEndContext="#stay">
@@ -55,9 +59,10 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="@comment " />
-      <comment name="multiLine" start="@ignore" end="@end ignore" region="ignore" />
+      <comment name="singleLine" start="@c " />
+      <comment name="multiLine" start="@ignore " end="@end ignore" region="ignore" />
     </comments>
   </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/toml.xml b/xml/toml.xml
--- a/xml/toml.xml
+++ b/xml/toml.xml
@@ -5,13 +5,13 @@
 	<!ENTITY int  "[+-]?(0|[1-9]\d*)&more;">
 	<!ENTITY frac "\.\d+&more;">
 	<!ENTITY exp  "[eE][+-]?\d+&more;">
-
+	
 	<!ENTITY offset   "[+-]\d\d:\d\d">
 	<!ENTITY time     "\d\d:\d\d:\d\d(\.\d+)?(&offset;|Z)?">
 	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?">
 ]>
 <!-- https://github.com/toml-lang/toml -->
-<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="5" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="6" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
 <highlighting>
 	<list name="bools">
 		<item>true</item>
@@ -60,6 +60,7 @@
 		<context attribute="Comment" lineEndContext="#pop" name="Comment">
 			<DetectSpaces/>
 			<IncludeRules context="##Alerts" />
+			<IncludeRules context="##Modelines" />
 			<DetectIdentifier/>
 		</context>
 		<!-- Quoted keys and Strings -->
@@ -111,7 +112,7 @@
 		<itemData name="TableHeader" defStyleNum="dsKeyword"/>
 		<itemData name="Assignment"  defStyleNum="dsOperator"/>
 		<itemData name="Comment"     defStyleNum="dsComment"/>
-
+		
 		<itemData name="Date"        defStyleNum="dsBaseN"/>
 		<itemData name="Float"       defStyleNum="dsFloat"/>
 		<itemData name="Int"         defStyleNum="dsDecVal"/>
@@ -122,14 +123,15 @@
 		<itemData name="Array"       defStyleNum="dsOperator"/>
 		<itemData name="InlineTable" defStyleNum="dsOperator"/>
 		<itemData name="NextEntry"   defStyleNum="dsOperator"/>
-
+		
 		<itemData name="Whitespace"  defStyleNum="dsNormal"/>
 		<itemData name="Error"       defStyleNum="dsError"/>
 	</itemDatas>
 </highlighting>
 <general>
 	<comments>
-		<comment name="singleLine" start="#" />
+		<comment name="singleLine" start="#" position="afterwhitespace" />
 	</comments>
 </general>
 </language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/verilog.xml b/xml/verilog.xml
--- a/xml/verilog.xml
+++ b/xml/verilog.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="Verilog" version="4" kateversion="2.4" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">
+<language name="Verilog" version="5" kateversion="2.4" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">
   <highlighting>
     <list name="keywords">
       <item>macromodule</item>
@@ -187,21 +187,27 @@
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
-        <IncludeRules context="##Alerts" />
+        <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
         <LineContinue attribute="Preprocessor" context="Some Context"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*"/>
+        <Detect2Chars attribute="Comment" context="Commentar/Preprocessor" char="/" char1="*" beginRegion="Comment"/>
       </context>
       <context attribute="Comment" lineEndContext="#stay" name="Commentar/Preprocessor">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" />
+        <DetectSpaces />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Alerts" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Some Context"/>
 
@@ -244,9 +250,10 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
       <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="1" />
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/vhdl.xml b/xml/vhdl.xml
--- a/xml/vhdl.xml
+++ b/xml/vhdl.xml
@@ -8,7 +8,7 @@
   <!ENTITY label     "((&varname;)\s*:\s*)?">
 
 ]>
-<language name="VHDL" version="8" kateversion="3.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
+<language name="VHDL" version="10" kateversion="5.0" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
   <highlighting>
     <list name="keywordsToplevel">
       <item>file</item>
@@ -599,7 +599,9 @@
 
 <!-- other environments -->
       <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces />
         <IncludeRules context="##Alerts"/>
+        <IncludeRules context="##Modelines"/>
       </context>
 
       <context name="string" attribute="Vector" lineEndContext="#stay">
@@ -635,22 +637,23 @@
       <itemData name="Integer" defStyleNum="dsDecVal"/>
       <itemData name="Bit" defStyleNum="dsChar"/>
       <itemData name="Reference" defStyleNum="dsFunction"/>
-      <itemData name="Error" defStyleNum="dsError" color="#ff0000" bold="1"/>
+      <itemData name="Error" defStyleNum="dsError" bold="1"/>
       <itemData name="Vector" defStyleNum="dsString"/>
       <itemData name="Operator" defStyleNum="dsOthers"/>
       <itemData name="Attribute" defStyleNum="dsBaseN"/>
       <itemData name="Signal" defStyleNum="dsOthers"/>
       <itemData name="Range" defStyleNum="dsOthers"/>
-      <itemData name="Redirection" defStyleNum="dsKeyword" color="#223388"/>
-      <itemData name="Process" defStyleNum="dsKeyword" color="#0099AA"/>
-      <itemData name="Control" defStyleNum="dsKeyword" color="#223388"/>
-      <itemData name="Name" defStyleNum="dsKeyword" color="#bb6600" bold="1"/>
+      <itemData name="Redirection" defStyleNum="dsAttribute" bold="1"/> <!-- #223388 -->
+      <itemData name="Process" defStyleNum="dsSpecialChar" bold="1"/> <!-- #0099AA -->
+      <itemData name="Control" defStyleNum="dsControlFlow"/> <!-- #223388 -->
+      <itemData name="Name" defStyleNum="dsDecVal" bold="1"/> <!-- #bb6600 -->
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="--"/>
+      <comment name="singleLine" start="--" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="0"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/xml.xml b/xml/xml.xml
--- a/xml/xml.xml
+++ b/xml/xml.xml
@@ -147,3 +147,4 @@
   </comments>
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/xorg.xml b/xml/xorg.xml
--- a/xml/xorg.xml
+++ b/xml/xorg.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd">
-<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="2" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="3" kateversion="2.4" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -36,6 +36,7 @@
  <context name="Comment" attribute="Comment" lineEndContext="#pop">
   <DetectSpaces />
   <IncludeRules context="##Alerts" />
+  <IncludeRules context="##Modelines" />
   <DetectIdentifier />
  </context>
 </contexts>
@@ -63,3 +64,4 @@
 </general>
 
 </language>
+<!-- kate: replace-tabs on; tab-width 1; indent-width 1; -->
diff --git a/xml/xslt.xml b/xml/xslt.xml
--- a/xml/xslt.xml
+++ b/xml/xslt.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE language SYSTEM "language.dtd"
 [
-	<!ENTITY qname    "[A-Za-z_:][\w.:_-]*">
-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">
-	<!ENTITY axisname  "ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self">
+  <!ENTITY qname    "[A-Za-z_:][\w.:_-]*">
+  <!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">
+  <!ENTITY axisname  "ancestor|ancestor-or-self|attribute|child|descendant|descendant-or-self|following|following-sibling|namespace|parent|preceding|preceding-sibling|self">
 ]>
 
 <!--
@@ -52,7 +52,7 @@
 
 -->
 
-<language version="4" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
+<language version="6" kateversion="5.0" name="xslt" section="Markup" extensions="*.xsl;*.xslt" license="LGPL" author="Peter Lammich (views@gmx.de)">
   <highlighting>
     <list name="keytags">
       <item>xsl:value-of</item>
@@ -362,7 +362,8 @@
        <context name="comment" attribute="Comment" lineEndContext="#stay">
          <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
          <RegExpr attribute="Invalid" context="#stay" String="-(-(?!-&gt;))+" />
-         <RegExpr attribute="Alert" context="#stay" String="(FIXME|TODO|HACK)" />
+         <IncludeRules context="##Alerts" />
+         <IncludeRules context="##Modelines" />
        </context>
 
        <context name="xpath" attribute="XPath" lineEndContext="#stay">
@@ -406,35 +407,35 @@
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Tag" defStyleNum="dsKeyword"/>
-      <itemData name="Attribute" defStyleNum="dsOthers"/>
+      <itemData name="Tag" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>
       <itemData name="Value" defStyleNum="dsAttribute"/>
-      <itemData name="Invalid" defStyleNum="dsError"/>
-      <itemData name="Alert" defStyleNum="dsAlert"/>
-      <itemData name="Attribute Value" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>
-      <itemData name="XPath" defStyleNum="dsOthers" color="#008080" selColor="#ffffff" bold="0" italic="0"/>
-      <itemData name="XPath String" defStyleNum="dsString" color="#800000" selColor="#ffffff" bold="0" italic="0"/>
-      <itemData name="XPath Axis" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="0" italic="1"/>
-      <itemData name="XPath/ XSLT Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>
-      <itemData name="XPath 2.0/ XSLT 2.0 Function" defStyleNum="dsKeyword" color="#008080" selColor="#ffffff" bold="1" italic="0"/>
-      <itemData name="XPath Attribute" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />
-      <itemData name="Variable" defStyleNum="dsNormal" color="#008080" selColor="#ffffff" bold="0" italic="1" />
+      <itemData name="Invalid" defStyleNum="dsError" spellChecking="false"/>
+      <itemData name="Attribute Value" defStyleNum="dsString"/>
+      <itemData name="XPath" defStyleNum="dsVariable" bold="0" italic="0"/>
+      <itemData name="XPath String" defStyleNum="dsString"/>
+      <itemData name="XPath Axis" defStyleNum="dsVariable" bold="0" italic="1"/>
+      <itemData name="XPath/ XSLT Function" defStyleNum="dsVariable" bold="1" italic="0" spellChecking="false"/>
+      <itemData name="XPath 2.0/ XSLT 2.0 Function" defStyleNum="dsVariable" bold="1" italic="0" spellChecking="false"/>
+      <itemData name="XPath Attribute" defStyleNum="dsVariable" bold="0" italic="1" spellChecking="false"/>
+      <itemData name="Variable" defStyleNum="dsVariable" bold="0" italic="1" spellChecking="false"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="XSLT Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />
-      <itemData name="XSLT 2.0 Tag" defStyleNum="dsKeyword" color="#000080" selColor="#ffffff" bold="1" italic="0" />
-      <itemData name="Entity Reference" defStyleNum="dsDecVal" />
+      <itemData name="XSLT Tag" defStyleNum="dsBuiltIn" bold="1" spellChecking="false"/>
+      <itemData name="XSLT 2.0 Tag" defStyleNum="dsBuiltIn" bold="1" spellChecking="false"/>
+      <itemData name="Entity Reference" defStyleNum="dsDecVal" spellChecking="false"/>
 
-      <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
-      <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
-      <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
-      <itemData name="PEntity Reference" defStyleNum="dsDecVal" />
+      <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false"/>
+      <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false"/>
+      <itemData name="PEntity Reference" defStyleNum="dsDecVal" spellChecking="false"/>
 
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="multiLine" start="&lt;!--" end="--&gt;" />
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
     </comments>
     <keywords casesensitive="0" weakDeliminator="-:" additionalDeliminator="&quot;{}"/>
   </general>
 </language>
+<!-- kate: space-indent on; replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/xul.xml b/xml/xul.xml
--- a/xml/xul.xml
+++ b/xml/xul.xml
@@ -4,7 +4,7 @@
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="XUL" version="6" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
+<language name="XUL" version="7" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
 
 <highlighting>
    <list name="keywords">
@@ -426,6 +426,7 @@
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
     <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
     <IncludeRules context="##Alerts" />
+    <IncludeRules context="##Modelines" />
     <DetectIdentifier />
   </context>
 
@@ -519,7 +520,7 @@
      <DetectChar attribute="String" context="String" char="&quot;"/>
      <DetectChar attribute="String" context="String 1" char="'"/>
      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/"/>
-     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="Comment"/>
+     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment"/>
      <AnyChar attribute="Normal Text" context="(Internal regex catch)" String="=?:" />
      <RegExpr attribute="Normal Text" context="(Internal regex catch)" String="\(" />
      <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
@@ -544,8 +545,9 @@
      <DetectIdentifier />
   </context>
   <context attribute="Comment" lineEndContext="#stay" name="Multi/inline Comment">
+     <DetectSpaces />
+     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="JSBlockComment"/>
      <IncludeRules context="##Alerts" />
-     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
   </context>
   
   <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
@@ -562,7 +564,7 @@
      <RegExpr attribute="Normal Text" context="#stay" String="\s*" />
      <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/" />
-     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" />
+     <Detect2Chars attribute="Comment" context="Multi/inline Comment" char="/" char1="*" beginRegion="JSBlockComment" />
      <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
   </context>
   <context attribute="Pattern Character Class" lineEndContext="#stay" name="Regular Expression Character Class">
@@ -615,10 +617,9 @@
 </highlighting>
 <general>
   <comments>
-    <comment name="multiLine" start="&lt;!--" end="--&gt;" />
-    <comment name="singleLine" start="//" />
-    <comment name="multiLine" start="/*" end="*/" />
+    <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
   </comments>
   <keywords casesensitive="1" />
 </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/yacc.xml b/xml/yacc.xml
--- a/xml/yacc.xml
+++ b/xml/yacc.xml
@@ -32,7 +32,7 @@
 
 ========================================================================
 -->
-<language name="Yacc/Bison" version="6" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Yacc/Bison" version="7" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -199,11 +199,13 @@
     <Detect2Chars attribute="Comment" context="CommentSlash" char="/" char1="/" />
   </context>
   <context name="CommentStar" attribute="Comment" lineEndContext="#stay">
+    <DetectSpaces />
     <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="comment" />
     <IncludeRules context="##Alerts" />
     <IncludeRules context="##Modelines" />
   </context>
   <context name="CommentSlash" attribute="Comment" lineEndContext="#pop">
+    <DetectSpaces />
     <IncludeRules context="##Alerts" />
     <IncludeRules context="##Modelines" />
   </context>
diff --git a/xml/yaml.xml b/xml/yaml.xml
--- a/xml/yaml.xml
+++ b/xml/yaml.xml
@@ -37,7 +37,7 @@
 <!-- Modifications (YAML 1.2), values & support for literal/folded style:
        Nibaldo González S. <nibgonz@gmail.com>
        These modifications are under the MIT license. //-->
-<language name="YAML" version="7" kateversion="5.0" section="Markup"
+<language name="YAML" version="8" kateversion="5.0" section="Markup"
           extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"
           author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
   <highlighting>
@@ -322,6 +322,7 @@
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
         <IncludeRules context="##Modelines" />
       </context>
@@ -633,3 +634,4 @@
     <keywords casesensitive="1"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/zsh.xml b/xml/zsh.xml
--- a/xml/zsh.xml
+++ b/xml/zsh.xml
@@ -8,7 +8,7 @@
         <!ENTITY noword   "(?![\w$+-])">                <!-- no word, $, + or - following -->
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
 ]>
-<language name="Zsh" version="4" kateversion="2.4" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">
+<language name="Zsh" version="5" kateversion="2.4" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Kolberg (bulldog98@kubuntu-de.org)" license="LGPL">
 
 <!-- (c) 2011 by Jonathan Kolberg (bulldog98@kubuntu-de.org)
   modified for zsh -->
@@ -534,7 +534,9 @@
         <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" />
       </context>
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
         <IncludeRules context="##Alerts" />
+        <IncludeRules context="##Modelines" />
       </context>
 
       <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese -->
@@ -958,3 +960,4 @@
     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; indent-width 2; -->
