packages feed

skylighting-core 0.11 → 0.12

raw patch · 18 files changed

+1090/−232 lines, 18 filesdep ~containers

Dependency ranges changed: containers

Files

bin/extract.hs view
@@ -1,67 +1,77 @@ {-# LANGUAGE Arrows #-}  import Data.Binary (encode)-import Data.Either (partitionEithers)-import Data.List (intercalate, isInfixOf)+import Data.List (intercalate, isInfixOf, sortOn) import qualified Data.Text as Text-import Skylighting.Parser (missingIncludes, parseSyntaxDefinition)+import Skylighting.Loader (loadSyntaxesFromDir)+import Skylighting.Parser (missingIncludes) import Skylighting.Types import System.Directory import System.Environment (getArgs) import System.Exit import System.IO (hPutStrLn, stderr) import System.FilePath+import qualified Data.Map as M  main :: IO () main = do   createDirectoryIfMissing True $ "src" </> "Skylighting" </> "Syntax"   files <- getArgs-  (errs, syntaxes) <- partitionEithers <$> mapM parseSyntaxDefinition files-  mapM_ (hPutStrLn stderr) errs-  mapM_ writeModuleFor syntaxes+  res <- case files of+           []  -> return $ Left "No directory specified"+           [d] -> loadSyntaxesFromDir d+           _   -> return $ Left "Too many directories specified"+  case res of+    Left err -> hPutStrLn stderr err >> exitWith (ExitFailure 1)+    Right sm -> do+      let syntaxes = sortOn sShortname $ M.elems sm+      mapM_ writeModuleFor syntaxes -  case missingIncludes syntaxes of-       [] -> return ()-       ns -> do-         mapM_ (\(syn,dep) -> hPutStrLn stderr-             ("Missing syntax definition: " ++ Text.unpack syn ++ " requires " ++-               Text.unpack dep ++ " through IncludeRules.")) ns-         hPutStrLn stderr "Fatal error."-         exitWith (ExitFailure 1)+      case missingIncludes syntaxes of+           [] -> return ()+           ns -> do+             mapM_ (\(syn,dep) -> hPutStrLn stderr+                 ("Missing syntax definition: " ++ Text.unpack syn +++                   " requires " +++                   Text.unpack dep ++ " through IncludeRules.")) ns+             hPutStrLn stderr "Fatal error."+             exitWith (ExitFailure 1) -  putStrLn "Backing up skylighting.cabal to skylighting.cabal.orig"-  copyFile "skylighting.cabal" "skylighting.cabal.orig"+      putStrLn "Backing up skylighting.cabal to skylighting.cabal.orig"+      copyFile "skylighting.cabal" "skylighting.cabal.orig" -  putStrLn "Updating module list in skylighting.cabal"-  cabalLines <- lines <$> readFile "skylighting.cabal.orig"-  let (top, rest) = break ("other-modules:" `isInfixOf`) cabalLines-  let (_, bottom) = span ("Skylighting.Syntax." `isInfixOf`) (drop 1 rest)-  let modulenames = map (\s -> "Skylighting.Syntax." ++-                          Text.unpack (sShortname s)) syntaxes-  let autogens = map ((replicate 23 ' ') ++) modulenames-  let newcabal = unlines $ top ++ ("  other-modules:" : autogens) ++ bottom-  writeFile "skylighting.cabal" newcabal+      putStrLn "Updating module list in skylighting.cabal"+      cabalLines <- lines <$> readFile "skylighting.cabal.orig"+      let (top, rest) = break ("other-modules:" `isInfixOf`) cabalLines+      let (_, bottom) = span ("Skylighting.Syntax." `isInfixOf`) (drop 1 rest)+      let modulenames = map (\s -> "Skylighting.Syntax." +++                              Text.unpack (sShortname s)) syntaxes+      let autogens = map ((replicate 23 ' ') ++) modulenames+      let newcabal = unlines $ top ++ ("  other-modules:" : autogens) +++                               bottom+      writeFile "skylighting.cabal" newcabal -  let ssyn = "src" </> "Skylighting" </> "Syntax.hs"-  putStrLn $ "Writing " ++ ssyn-  writeFile ssyn $ unlines (-     [ "{-# LANGUAGE OverloadedStrings #-}"-     , "-- | Provides syntax highlighting definitions."-     , "-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT MANUALLY."-     , "module Skylighting.Syntax (defaultSyntaxMap) where"-     , "import qualified Data.Map as Map"-     , "import Skylighting.Types" ] ++-     [ "import qualified " ++ m | m <- modulenames ]-     ++-     [ ""-     , "-- | Default mapping from short names to syntax definitions."-     , "defaultSyntaxMap :: SyntaxMap"-     , "defaultSyntaxMap = Map.fromList ["-     ]) ++ "   " ++-     (intercalate "\n  ,"-       ["  (" ++ show (Text.unpack $ sName s) ++ ", "-              ++ "Skylighting.Syntax." ++ Text.unpack (sShortname s) ++ ".syntax)"-                  | s <- syntaxes ]) ++ " ]"+      let ssyn = "src" </> "Skylighting" </> "Syntax.hs"+      putStrLn $ "Writing " ++ ssyn+      writeFile ssyn $ unlines (+         [ "{-# LANGUAGE OverloadedStrings #-}"+         , "-- | Provides syntax highlighting definitions."+         , "-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT MANUALLY."+         , "module Skylighting.Syntax (defaultSyntaxMap) where"+         , "import qualified Data.Map as Map"+         , "import Skylighting.Types" ] +++         [ "import qualified " ++ m | m <- modulenames ]+         +++         [ ""+         , "-- | Default mapping from short names to syntax definitions."+         , "defaultSyntaxMap :: SyntaxMap"+         , "defaultSyntaxMap = Map.fromList ["+         ]) ++ "   " +++         (intercalate "\n  ,"+           ["  (" ++ show (Text.unpack $ sName s) ++ ", "+                  ++ "Skylighting.Syntax." ++ Text.unpack (sShortname s) +++                  ".syntax)"+                      | s <- syntaxes ]) ++ " ]"  writeModuleFor :: Syntax -> IO () writeModuleFor syn = do
changelog.md view
@@ -1,5 +1,43 @@ # Revision history for skylighting and skylighting-core +## 0.12++  * Properly handle include elements in keyword lists (#124).+    A number of syntaxes (e.g. typescript, scala) include keyword+    lists from other syntaxe,s and previously we weren't able to+    handle this.++    There are several pieces to this change.  We need to store lists+    where other Syntaxes can look them up, so we add an `sLists`+    field to `Syntax` [API change], and modify the parser to fill this.+    We change lists so that their values are not just a `Text`, but a+    `ListItem` that can either be a textual value or an include directive,+    specifying a `ListName` (syntax name and list name).++    The `Keyword` constructor for `Matcher` now takes, instead of a+    `WordSet`, Either a `ListName` or a `WordSet` (API change).++    Skylighting.Parser now exports `resolveKeywords` (API change),+    which modifies all `Keyword` matchers in a syntax so that Left+    values with a `ListName` become Right values with resolved `WordSet`s.+    The tokenizer applies this function automatically to the SyntaxMap+    given in Config.  But it is more efficient to do this conversion+    just once, rather than every time `tokenize` is called. So we have+    `loadSyntaxesFromDir` call it on the `SyntaxMap`.  With this+    optimization, there is not an appreciable performance cost to the+    changes described above.++  * Skylighting.Regex: Fix bug with regexes like `a{10}b` (#133).+    This requires exactly 10 a's; previously we interpreted it as+    "at least 10."++  * skylighting-extract: take a directory as argument rather than files.+    This allows us to use `loadSyntaxesFromDir`.++  * Update xml syntax definitions from upstream:+    julia, cmake, cpp, isocpp, markdown, python, toml.++ ## 0.11    * Skylighting.Regex: Support regex subroutines (#118).  For example,
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name:                skylighting-core-version:             0.11+version:             0.12 synopsis:            syntax highlighting library description:         Skylighting is a syntax highlighting library.                      It derives its tokenizers from XML syntax@@ -196,6 +196,7 @@                        filepath,                        text,                        binary,+                       containers,                        directory   if flag(executable)     buildable:         True
src/Regex/KDE/Compile.hs view
@@ -99,7 +99,7 @@     123 -> do       let isDig x = x >= 48 && x < 58       minn <- option Nothing $ readMay . U.toString <$> A.takeWhile isDig-      maxn <- option Nothing $ char ',' *>+      maxn <- option minn $ char ',' *>                        (readMay . U.toString <$> A.takeWhile isDig)       _ <- char '}'       case (minn, maxn) of
src/Skylighting/Loader.hs view
@@ -12,7 +12,9 @@ import System.Directory (listDirectory, doesFileExist) import System.FilePath ((</>), takeExtension) import Skylighting.Types (SyntaxMap, Syntax)-import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition)+import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition,+                           resolveKeywords)+import qualified Data.Map as M #if !MIN_VERSION_base(4,11,0) import Data.Semigroup #endif@@ -44,7 +46,8 @@             s <- ExceptT $ loadSyntaxFromFile file             return $ addSyntaxDefinition s sMap -    foldM loadSyntax mempty files+    sm <- foldM loadSyntax mempty files+    return $ M.map (resolveKeywords sm) sm  syntaxFiles :: FilePath -> IO [FilePath] syntaxFiles dir = do
src/Skylighting/Parser.hs view
@@ -1,7 +1,10 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TupleSections #-} module Skylighting.Parser ( parseSyntaxDefinition                           , parseSyntaxDefinitionFromText                           , addSyntaxDefinition+                          , resolveKeywords                           , missingIncludes                           ) where @@ -24,6 +27,7 @@ import Text.XML import qualified Control.Exception as E import Control.Monad.Except+import Control.Monad.Identity  -- | Adds a syntax definition to a syntax map, -- replacing any existing definition with the same name.@@ -75,7 +79,9 @@ parseSyntaxDefinition :: FilePath -> IO (Either String Syntax) parseSyntaxDefinition fp = do   bs <- BL.readFile fp-  return $ parseSyntaxDefinitionFromText fp (toTextLazy bs)+  case parseText def (toTextLazy bs) of+    Left e    -> return $ Left $ E.displayException e+    Right doc -> runExceptT (documentToSyntax fp doc)  where   toTextLazy = TLE.decodeUtf8 . filterCRs . dropBOM   dropBOM bs =@@ -89,12 +95,38 @@ parseSyntaxDefinitionFromText fp xml =     case parseText def xml of       Left e    -> Left $ E.displayException e-      Right doc -> runExcept $ documentToSyntax fp doc+      Right doc -> runIdentity $ runExceptT $ documentToSyntax fp doc +-- | Resolve Keyword matchers that refer to lists; following up+-- include directives in the syntax map and producing WordSets.+resolveKeywords :: SyntaxMap -> Syntax -> Syntax+resolveKeywords sm = goSyntax+ where+   goSyntax syntax = syntax{ sContexts = M.map (goContext (sLists syntax))+                                                 (sContexts syntax) }+   goContext lists context = context{ cRules = map (goRule lists)+                                                 (cRules context) }+   goRule lists rule =+     case rMatcher rule of+        Keyword kwattr (Left listname) ->+          case M.lookup listname lists of+            Nothing -> rule+            Just lst -> rule{ rMatcher =+             Keyword kwattr (Right (makeWordSet (keywordCaseSensitive kwattr)+                                      (foldr goItem [] lst))) }+        _ -> rule++   goItem (Item t) ts = t:ts+   goItem (IncludeList (syntaxname,listname)) ts =+     case M.lookup syntaxname sm >>= M.lookup listname . sLists of+       Nothing -> ts+       Just lst -> foldr goItem ts lst+ -- | Parses an XML 'Document' as a 'Syntax' description.-documentToSyntax :: FilePath -- ^ used for short name+documentToSyntax :: Monad m+                 => FilePath -- ^ used for short name                  -> Document-                 -> Except String Syntax+                 -> ExceptT String m Syntax documentToSyntax fp Document{ documentRoot = rootEl } = do   unless (elementName rootEl == "language") $     throwError "Root element is not language"@@ -134,6 +166,7 @@            , sExtensions = words $ map (\c -> if c == ';' then ' ' else c)                                  $ T.unpack                                  $ getAttrValue "extensions" rootEl+           , sLists      = lists            , sContexts   = M.fromList                   [(cName c, c) | c <- contexts]            , sStartingContext = startingContext@@ -155,16 +188,28 @@ getTextContent el =   mconcat [t | NodeContent t <- elementNodes el] -getList :: Element -> Except String (Text, [Text])+getList :: Monad m => Element -> ExceptT String m (Text, [ListItem]) getList el = do   case M.lookup "name" (elementAttributes el) of     Nothing   -> throwError "No name attribute on list"-    Just name ->-      return (name, map (T.strip . getTextContent)-                        (getElementsNamed "item" el))+    Just name -> (name,) <$>+                   mapM toListItem [el' | NodeElement el' <- elementNodes el]+ where+   toListItem el' = case elementName el' of+                      "item"    -> return $ Item $ T.strip $ getTextContent el'+                      "include" -> do+                        let (syntaxname, listname) =+                             case T.breakOn "##"+                                   (T.strip (getTextContent el')) of+                               (x ,y) | T.null y  -> ("", x)+                                      | otherwise -> (T.drop 2 y, x)+                        return $ IncludeList (syntaxname, listname)+                      x -> throwError $ "Unknown element " ++ show x +++                                        " in list" -getParser :: Bool -> Text -> ItemData -> M.Map Text [Text] -> KeywordAttr-          -> Text -> Element -> Except String Rule+getParser :: Monad m+          => Bool -> Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr+          -> Text -> Element -> ExceptT String m Rule getParser casesensitive syntaxname itemdatas lists kwattr cattr el = do   let name = nameLocalName . elementName $ el   let attribute = getAttrValue "attribute" el@@ -201,10 +246,7 @@                  "StringDetect" -> return $ StringDetect str                  "WordDetect" -> return $ WordDetect str                  "RegExpr" -> return $ re-                 "keyword" -> return $ Keyword kwattr $-                    maybe (makeWordSet True [])-                      (makeWordSet (keywordCaseSensitive kwattr))-                      (M.lookup str lists)+                 "keyword" -> return $ Keyword kwattr (Left str)                  "Int" -> return $ Int                  "Float" -> return $ Float                  "HlCOct" -> return $ HlCOct@@ -237,13 +279,14 @@                }  -getContext :: Bool+getContext :: Monad m+           => Bool            -> Text            -> ItemData-           -> M.Map Text [Text]+           -> M.Map Text [ListItem]            -> KeywordAttr            -> Element-           -> Except String Context+           -> ExceptT String m Context getContext casesensitive syntaxname itemDatas lists kwattr el = do   let name = getAttrValue "name" el   let attribute = getAttrValue "attribute" el
src/Skylighting/Tokenizer.hs view
@@ -31,6 +31,7 @@ import Debug.Trace import Skylighting.Regex import Skylighting.Types+import Skylighting.Parser (resolveKeywords) import Data.List.NonEmpty (NonEmpty((:|)), (<|), toList) #if !MIN_VERSION_base(4,11,0) import Data.Semigroup@@ -133,13 +134,17 @@ tokenize :: TokenizerConfig -> Syntax -> Text -> Either String [SourceLine] tokenize config syntax inp =   eitherStack >>= \stack ->-    case runTokenizerM action config (startingState stack) of+    case runTokenizerM action+            config{ syntaxMap = Map.map (resolveKeywords (syntaxMap config))+                                          (syntaxMap config) }+            (startingState stack) of        (_, Success ls) -> Right ls        (_, Error e)    -> Left e        (_, Failure)    -> Left "Could not tokenize code"   where     action = mapM tokenizeLine (zip (BS.lines (encodeUtf8 inp)) [1..])-    eitherStack = case lookupContext (sStartingContext syntax) syntax of+    eitherStack = case lookupContext (sStartingContext syntax)+                         (resolveKeywords (syntaxMap config) syntax) of                     Just c  -> Right $ ContextStack (c :| [])                     Nothing -> Left "No starting context specified"     startingState stack =@@ -290,7 +295,10 @@                 HlCStringChar -> withAttr attr $ parseCStringChar inp                 HlCChar -> withAttr attr $ parseCChar inp                 Float -> withAttr attr $ parseFloat inp-                Keyword kwattr kws -> withAttr attr $ keyword kwattr kws inp+                Keyword _kwattr (Left listname) ->+                  throwError $ "Keyword with unresolved list " <> show listname+                Keyword kwattr (Right kws) ->+                  withAttr attr $ keyword kwattr kws inp                 StringDetect s -> withAttr attr $                                     stringDetect (rDynamic rule) (rCaseSensitive rule)                                                  s inp
src/Skylighting/Types.hs view
@@ -15,6 +15,7 @@               , WordSet(..)               , makeWordSet               , inWordSet+              , ListItem(..)               , Matcher(..)               , Rule(..)               , Context(..)@@ -104,7 +105,8 @@   | StringDetect !Text   | WordDetect !Text   | RegExpr !RE-  | Keyword KeywordAttr !(WordSet Text)+  | Keyword !KeywordAttr (Either Text (WordSet Text))+      -- Either Left list name (unresolved) or Right wordset (resolved)   | Int   | Float   | HlCOct@@ -143,12 +145,20 @@  instance Binary Rule +-- | A list item is either just a textual value or an included list.+-- IncludeList (x,y) includes list y from syntax with full name x.+data ListItem = Item !Text | IncludeList !(Text, Text)+  deriving (Show, Eq, Ord, Read, Data, Typeable, Generic)++instance Binary ListItem+ -- | A syntax corresponds to a complete Kate syntax description. -- The 'sShortname' field is derived from the filename. data Syntax = Syntax{     sName            :: !Text   , sFilename        :: !String   , sShortname       :: !Text+  , sLists           :: !(Map.Map Text [ListItem])   , sContexts        :: !(Map.Map Text Context)   , sAuthor          :: !Text   , sVersion         :: !Text
test/expected/abc.julia.native view
@@ -1,7 +1,5 @@ [ [ ( KeywordTok , "function" )-  , ( NormalTok , " abc (str" )-  , ( OperatorTok , "," )-  , ( NormalTok , " list)" )+  , ( NormalTok , " abc (str, list)" )   ] , [ ( NormalTok , "  " )   , ( FunctionTok , "isempty" )@@ -23,7 +21,7 @@   , ( NormalTok , "(list)" )   ] , [ ( NormalTok , "    str[" )-  , ( ControlFlowTok , "end" )+  , ( KeywordTok , "end" )   , ( NormalTok , "] " )   , ( KeywordTok , "in" )   , ( NormalTok , " list[i] " )@@ -40,15 +38,11 @@   , ( KeywordTok , "end" )   , ( OperatorTok , "-" )   , ( FloatTok , "1" )-  , ( NormalTok , "]" )-  , ( OperatorTok , "," )-  , ( NormalTok , " " )+  , ( NormalTok , "], " )   , ( FunctionTok , "deleteat!" )   , ( NormalTok , "(" )   , ( FunctionTok , "copy" )-  , ( NormalTok , "(list)" )-  , ( OperatorTok , "," )-  , ( NormalTok , " i))]) " )+  , ( NormalTok , "(list), i))]) " )   , ( OperatorTok , "&&" )   ] , [ ( NormalTok , "    " )@@ -56,7 +50,7 @@   , ( NormalTok , " " )   , ( ConstantTok , "true" )   ]-, [ ( NormalTok , "  " ) , ( KeywordTok , "end" ) ]+, [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ] , [ ( NormalTok , "  " ) , ( ConstantTok , "false" ) ] , [ ( KeywordTok , "end" ) ] ]
test/expected/abc.scala.native view
@@ -79,7 +79,8 @@   , ( OperatorTok , "(" )   , ( NormalTok , "faces" )   , ( OperatorTok , ":" )-  , ( NormalTok , " String" )+  , ( NormalTok , " " )+  , ( ExtensionTok , "String" )   , ( OperatorTok , ")" )   , ( NormalTok , " " )   , ( OperatorTok , "=" )@@ -117,7 +118,7 @@   , ( NormalTok , " blocks " )   , ( OperatorTok , "=" )   , ( NormalTok , " " )-  , ( BuiltInTok , "List" )+  , ( ExtensionTok , "List" )   , ( OperatorTok , "(" )   , ( FunctionTok , "Block" )   , ( OperatorTok , "(" )@@ -232,7 +233,8 @@   , ( OperatorTok , "(" )   , ( NormalTok , "word" )   , ( OperatorTok , ":" )-  , ( NormalTok , " String" )+  , ( NormalTok , " " )+  , ( ExtensionTok , "String" )   , ( OperatorTok , "," )   , ( NormalTok , " blocks" )   , ( OperatorTok , ":" )@@ -251,7 +253,8 @@   , ( OperatorTok , "(" )   , ( NormalTok , "word" )   , ( OperatorTok , ":" )-  , ( NormalTok , " String" )+  , ( NormalTok , " " )+  , ( ExtensionTok , "String" )   , ( OperatorTok , "," )   , ( NormalTok , " blocks" )   , ( OperatorTok , ":" )@@ -270,7 +273,8 @@   , ( OperatorTok , "(" )   , ( NormalTok , "word" )   , ( OperatorTok , ":" )-  , ( NormalTok , " String" )+  , ( NormalTok , " " )+  , ( ExtensionTok , "String" )   , ( OperatorTok , "," )   , ( NormalTok , " toCompare" )   , ( OperatorTok , ":" )@@ -331,7 +335,7 @@   , ( NormalTok , " restant " )   , ( OperatorTok , "=" )   , ( NormalTok , " rest diff " )-  , ( BuiltInTok , "List" )+  , ( ExtensionTok , "List" )   , ( OperatorTok , "(" )   , ( NormalTok , "toCompare" )   , ( OperatorTok , "." )@@ -413,7 +417,7 @@   , ( NormalTok , " words " )   , ( OperatorTok , "=" )   , ( NormalTok , " " )-  , ( BuiltInTok , "List" )+  , ( ExtensionTok , "List" )   , ( OperatorTok , "(" )   , ( StringTok , "\"A\"" )   , ( OperatorTok , "," )
test/test-skylighting.hs view
@@ -270,6 +270,10 @@   [ (".", "aab", Just ("a", []))   , ("ab", "aab", Nothing)   , ("ab", "abb", Just ("ab", []))+  , ("a{2}b", "aaab", Nothing)+  , ("a{2,}b", "aaab", Just ("aaab", []))+  , ("a{2,3}b", "aab", Just ("aab", []))+  , ("a{2,3}b", "aaab", Just ("aaab", []))   , ("a(b)", "abb", Just ("ab", [(1,"b")]))   , ("a(b.)*", "abbbcb", Just ("abbbc", [(1,"bc")]))   , ("a(?:b.)*", "abbbcb", Just ("abbbc", []))
xml/cmake.xml view
@@ -22,7 +22,7 @@  <language     name="CMake"-    version="33"+    version="34"     kateversion="5.0"     section="Other"     extensions="CMakeLists.txt;*.cmake;*.cmake.in"@@ -2286,12 +2286,23 @@       <item>MSVC_TOOLSET_VERSION</item>       <item>MSVC_VERSION</item>       <item>PACKAGE_FIND_NAME</item>-      <item>PACKAGE_FIND_VERSION</item>+      <item>PACKAGE_FIND_VERSION_COMPLETE</item>       <item>PACKAGE_FIND_VERSION_COUNT</item>-      <item>PACKAGE_FIND_VERSION_MAJOR</item>-      <item>PACKAGE_FIND_VERSION_MINOR</item>-      <item>PACKAGE_FIND_VERSION_PATCH</item>-      <item>PACKAGE_FIND_VERSION_TWEAK</item>+      <item>PACKAGE_FIND_VERSION_MAX</item>+      <item>PACKAGE_FIND_VERSION_MAX_COUNT</item>+      <item>PACKAGE_FIND_VERSION_MAX_MAJOR</item>+      <item>PACKAGE_FIND_VERSION_MAX_MINOR</item>+      <item>PACKAGE_FIND_VERSION_MAX_PATCH</item>+      <item>PACKAGE_FIND_VERSION_MAX_TWEAK</item>+      <item>PACKAGE_FIND_VERSION_MIN</item>+      <item>PACKAGE_FIND_VERSION_MIN_COUNT</item>+      <item>PACKAGE_FIND_VERSION_MIN_MAJOR</item>+      <item>PACKAGE_FIND_VERSION_MIN_MINOR</item>+      <item>PACKAGE_FIND_VERSION_MIN_PATCH</item>+      <item>PACKAGE_FIND_VERSION_MIN_TWEAK</item>+      <item>PACKAGE_FIND_VERSION_RANGE</item>+      <item>PACKAGE_FIND_VERSION_RANGE_MAX</item>+      <item>PACKAGE_FIND_VERSION_RANGE_MIN</item>       <item>PACKAGE_VERSION</item>       <item>PACKAGE_VERSION_COMPATIBLE</item>       <item>PACKAGE_VERSION_EXACT</item>@@ -4022,7 +4033,7 @@        <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">         <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&id_re;_PLATFORM_ID|CMAKE_&id_re;_COMPILER_VERSION_INTERNAL|CMAKE_&id_re;_COMPILER_ARCHITECTURE_ID|CMAKE_&id_re;_COMPILER_ABI)\b" />-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&id_re;_EXTRA_DEPS|ExternalData_URL_ALGO_&id_re;_&id_re;|ExternalData_CUSTOM_SCRIPT_&id_re;|DOXYGEN_&id_re;|CPACK_WIX_PROPERTY_&id_re;|CPACK_WIX_&id_re;_EXTRA_FLAGS|CPACK_WIX_&id_re;_EXTENSIONS|CPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&id_re;_USER_FILELIST|CPACK_RPM_&id_re;_USER_BINARY_SPECFILE|CPACK_RPM_&id_re;_PACKAGE_URL|CPACK_RPM_&id_re;_PACKAGE_SUMMARY|CPACK_RPM_&id_re;_PACKAGE_SUGGESTS|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&id_re;_PACKAGE_REQUIRES|CPACK_RPM_&id_re;_PACKAGE_PROVIDES|CPACK_RPM_&id_re;_PACKAGE_PREFIX|CPACK_RPM_&id_re;_PACKAGE_OBSOLETES|CPACK_RPM_&id_re;_PACKAGE_NAME|CPACK_RPM_&id_re;_PACKAGE_GROUP|CPACK_RPM_&id_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&id_re;_PACKAGE_CONFLICTS|CPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&id_re;_PACKAGE_AUTOREQ|CPACK_RPM_&id_re;_PACKAGE_AUTOPROV|CPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&id_re;_FILE_NAME|CPACK_RPM_&id_re;_DEFAULT_USER|CPACK_RPM_&id_re;_DEFAULT_GROUP|CPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&id_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&id_re;_SCRIPT|CPACK_POSTFLIGHT_&id_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_VERSION|CPACK_NUGET_&id_re;_PACKAGE_TITLE|CPACK_NUGET_&id_re;_PACKAGE_TAGS|CPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&id_re;_PACKAGE_OWNERS|CPACK_NUGET_&id_re;_PACKAGE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_FILE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_EXPRESSION|CPACK_NUGET_&id_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&id_re;_PACKAGE_LANGUAGE|CPACK_NUGET_&id_re;_PACKAGE_ICONURL|CPACK_NUGET_&id_re;_PACKAGE_ICON|CPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&id_re;_PACKAGE_AUTHORS|CPACK_NSIS_&id_re;_INSTALL_DIRECTORY|CPACK_DMG_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&id_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&id_re;_PACKAGE_SECTION|CPACK_DEBIAN_&id_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&id_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_DESCRIPTION|CPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&id_re;_REQUIRED|CPACK_COMPONENT_&id_re;_HIDDEN|CPACK_COMPONENT_&id_re;_GROUP|CPACK_COMPONENT_&id_re;_DISPLAY_NAME|CPACK_COMPONENT_&id_re;_DISABLED|CPACK_COMPONENT_&id_re;_DESCRIPTION|CPACK_COMPONENT_&id_re;_DEPENDS|CPACK_BINARY_&id_re;|CPACK_ARCHIVE_&id_re;_FILE_NAME|CPACK_&id_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&id_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;|CMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&id_re;|CMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&id_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;|CMAKE_PROJECT_&id_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&id_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&id_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|CMAKE_EXE_LINKER_FLAGS_&id_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&id_re;|CMAKE_DISABLE_FIND_PACKAGE_&id_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;|CMAKE_&id_re;_VISIBILITY_PRESET|CMAKE_&id_re;_STANDARD_LIBRARIES|CMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&id_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&id_re;_SIZEOF_DATA_PTR|CMAKE_&id_re;_SIMULATE_VERSION|CMAKE_&id_re;_SIMULATE_ID|CMAKE_&id_re;_POSTFIX|CMAKE_&id_re;_OUTPUT_EXTENSION|CMAKE_&id_re;_LINK_LIBRARY_FLAG|CMAKE_&id_re;_LINK_LIBRARY_FILE_FLAG|CMAKE_&id_re;_LINK_EXECUTABLE|CMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&id_re;_LINKER_WRAPPER_FLAG|CMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&id_re;_LINKER_PREFERENCE|CMAKE_&id_re;_LINKER_LAUNCHER|CMAKE_&id_re;_LIBRARY_ARCHITECTURE|CMAKE_&id_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&id_re;_IGNORE_EXTENSIONS|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_FLAGS_RELEASE_INIT|CMAKE_&id_re;_FLAGS_RELEASE|CMAKE_&id_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&id_re;_FLAGS_MINSIZEREL|CMAKE_&id_re;_FLAGS_INIT|CMAKE_&id_re;_FLAGS_DEBUG_INIT|CMAKE_&id_re;_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS|CMAKE_&id_re;_CREATE_STATIC_LIBRARY|CMAKE_&id_re;_CREATE_SHARED_MODULE|CMAKE_&id_re;_CREATE_SHARED_LIBRARY|CMAKE_&id_re;_CPPLINT|CMAKE_&id_re;_CPPCHECK|CMAKE_&id_re;_COMPILE_OBJECT|CMAKE_&id_re;_COMPILER_VERSION|CMAKE_&id_re;_COMPILER_TARGET|CMAKE_&id_re;_COMPILER_RANLIB|CMAKE_&id_re;_COMPILER_LOADED|CMAKE_&id_re;_COMPILER_LAUNCHER|CMAKE_&id_re;_COMPILER_ID|CMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&id_re;_COMPILER_AR|CMAKE_&id_re;_COMPILER|CMAKE_&id_re;_CLANG_TIDY|CMAKE_&id_re;_BYTE_ORDER|CMAKE_&id_re;_ARCHIVE_FINISH|CMAKE_&id_re;_ARCHIVE_CREATE|CMAKE_&id_re;_ARCHIVE_APPEND|CMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE|ARGV[0-9]+|&id_re;__TRYRUN_OUTPUT|&id_re;_VERSION_TWEAK|&id_re;_VERSION_STRING|&id_re;_VERSION_PATCH|&id_re;_VERSION_MINOR|&id_re;_VERSION_MAJOR|&id_re;_VERSION_COUNT|&id_re;_VERSION|&id_re;_UNPARSED_ARGUMENTS|&id_re;_SOURCE_DIR|&id_re;_ROOT|&id_re;_MODULE_NAME|&id_re;_LIBRARY_DIRS|&id_re;_LIBRARIES|&id_re;_KEYWORDS_MISSING_VALUES|&id_re;_IS_TOP_LEVEL|&id_re;_INCLUDE_DIRS|&id_re;_HOMEPAGE_URL|&id_re;_FOUND|&id_re;_FIND_VERSION_TWEAK|&id_re;_FIND_VERSION_PATCH|&id_re;_FIND_VERSION_MINOR|&id_re;_FIND_VERSION_MAJOR|&id_re;_FIND_VERSION_EXACT|&id_re;_FIND_VERSION_COUNT|&id_re;_FIND_VERSION|&id_re;_FIND_REQUIRED_&id_re;|&id_re;_FIND_REQUIRED|&id_re;_FIND_QUIETLY|&id_re;_FIND_COMPONENTS|&id_re;_DESCRIPTION|&id_re;_CONSIDERED_VERSIONS|&id_re;_CONSIDERED_CONFIGS|&id_re;_BINARY_DIR)\b" />+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&id_re;_EXTRA_DEPS|ExternalData_URL_ALGO_&id_re;_&id_re;|ExternalData_CUSTOM_SCRIPT_&id_re;|DOXYGEN_&id_re;|CPACK_WIX_PROPERTY_&id_re;|CPACK_WIX_&id_re;_EXTRA_FLAGS|CPACK_WIX_&id_re;_EXTENSIONS|CPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&id_re;_USER_FILELIST|CPACK_RPM_&id_re;_USER_BINARY_SPECFILE|CPACK_RPM_&id_re;_PACKAGE_URL|CPACK_RPM_&id_re;_PACKAGE_SUMMARY|CPACK_RPM_&id_re;_PACKAGE_SUGGESTS|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&id_re;_PACKAGE_REQUIRES|CPACK_RPM_&id_re;_PACKAGE_PROVIDES|CPACK_RPM_&id_re;_PACKAGE_PREFIX|CPACK_RPM_&id_re;_PACKAGE_OBSOLETES|CPACK_RPM_&id_re;_PACKAGE_NAME|CPACK_RPM_&id_re;_PACKAGE_GROUP|CPACK_RPM_&id_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&id_re;_PACKAGE_CONFLICTS|CPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&id_re;_PACKAGE_AUTOREQ|CPACK_RPM_&id_re;_PACKAGE_AUTOPROV|CPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&id_re;_FILE_NAME|CPACK_RPM_&id_re;_DEFAULT_USER|CPACK_RPM_&id_re;_DEFAULT_GROUP|CPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&id_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&id_re;_SCRIPT|CPACK_POSTFLIGHT_&id_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_VERSION|CPACK_NUGET_&id_re;_PACKAGE_TITLE|CPACK_NUGET_&id_re;_PACKAGE_TAGS|CPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&id_re;_PACKAGE_OWNERS|CPACK_NUGET_&id_re;_PACKAGE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_FILE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_EXPRESSION|CPACK_NUGET_&id_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&id_re;_PACKAGE_LANGUAGE|CPACK_NUGET_&id_re;_PACKAGE_ICONURL|CPACK_NUGET_&id_re;_PACKAGE_ICON|CPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&id_re;_PACKAGE_AUTHORS|CPACK_NSIS_&id_re;_INSTALL_DIRECTORY|CPACK_DMG_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&id_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&id_re;_PACKAGE_SECTION|CPACK_DEBIAN_&id_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&id_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_DESCRIPTION|CPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&id_re;_REQUIRED|CPACK_COMPONENT_&id_re;_HIDDEN|CPACK_COMPONENT_&id_re;_GROUP|CPACK_COMPONENT_&id_re;_DISPLAY_NAME|CPACK_COMPONENT_&id_re;_DISABLED|CPACK_COMPONENT_&id_re;_DESCRIPTION|CPACK_COMPONENT_&id_re;_DEPENDS|CPACK_BINARY_&id_re;|CPACK_ARCHIVE_&id_re;_FILE_NAME|CPACK_&id_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&id_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;|CMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&id_re;|CMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&id_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;|CMAKE_PROJECT_&id_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&id_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&id_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|CMAKE_EXE_LINKER_FLAGS_&id_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&id_re;|CMAKE_DISABLE_FIND_PACKAGE_&id_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;|CMAKE_&id_re;_VISIBILITY_PRESET|CMAKE_&id_re;_STANDARD_LIBRARIES|CMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&id_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&id_re;_SIZEOF_DATA_PTR|CMAKE_&id_re;_SIMULATE_VERSION|CMAKE_&id_re;_SIMULATE_ID|CMAKE_&id_re;_POSTFIX|CMAKE_&id_re;_OUTPUT_EXTENSION|CMAKE_&id_re;_LINK_LIBRARY_FLAG|CMAKE_&id_re;_LINK_LIBRARY_FILE_FLAG|CMAKE_&id_re;_LINK_EXECUTABLE|CMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&id_re;_LINKER_WRAPPER_FLAG|CMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&id_re;_LINKER_PREFERENCE|CMAKE_&id_re;_LINKER_LAUNCHER|CMAKE_&id_re;_LIBRARY_ARCHITECTURE|CMAKE_&id_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&id_re;_IGNORE_EXTENSIONS|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_FLAGS_RELEASE_INIT|CMAKE_&id_re;_FLAGS_RELEASE|CMAKE_&id_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&id_re;_FLAGS_MINSIZEREL|CMAKE_&id_re;_FLAGS_INIT|CMAKE_&id_re;_FLAGS_DEBUG_INIT|CMAKE_&id_re;_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS|CMAKE_&id_re;_CREATE_STATIC_LIBRARY|CMAKE_&id_re;_CREATE_SHARED_MODULE|CMAKE_&id_re;_CREATE_SHARED_LIBRARY|CMAKE_&id_re;_CPPLINT|CMAKE_&id_re;_CPPCHECK|CMAKE_&id_re;_COMPILE_OBJECT|CMAKE_&id_re;_COMPILER_VERSION|CMAKE_&id_re;_COMPILER_TARGET|CMAKE_&id_re;_COMPILER_RANLIB|CMAKE_&id_re;_COMPILER_LOADED|CMAKE_&id_re;_COMPILER_LAUNCHER|CMAKE_&id_re;_COMPILER_ID|CMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&id_re;_COMPILER_AR|CMAKE_&id_re;_COMPILER|CMAKE_&id_re;_CLANG_TIDY|CMAKE_&id_re;_BYTE_ORDER|CMAKE_&id_re;_ARCHIVE_FINISH|CMAKE_&id_re;_ARCHIVE_CREATE|CMAKE_&id_re;_ARCHIVE_APPEND|CMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE|ARGV[0-9]+|&id_re;__TRYRUN_OUTPUT|&id_re;_VERSION_TWEAK|&id_re;_VERSION_STRING|&id_re;_VERSION_PATCH|&id_re;_VERSION_MINOR|&id_re;_VERSION_MAJOR|&id_re;_VERSION_COUNT|&id_re;_VERSION|&id_re;_UNPARSED_ARGUMENTS|&id_re;_SOURCE_DIR|&id_re;_ROOT|&id_re;_MODULE_NAME|&id_re;_LIBRARY_DIRS|&id_re;_LIBRARIES|&id_re;_KEYWORDS_MISSING_VALUES|&id_re;_IS_TOP_LEVEL|&id_re;_INCLUDE_DIRS|&id_re;_HOMEPAGE_URL|&id_re;_FOUND|&id_re;_FIND_VERSION_RANGE_MIN|&id_re;_FIND_VERSION_RANGE_MAX|&id_re;_FIND_VERSION_RANGE|&id_re;_FIND_VERSION_MIN_TWEAK|&id_re;_FIND_VERSION_MIN_PATCH|&id_re;_FIND_VERSION_MIN_MINOR|&id_re;_FIND_VERSION_MIN_MAJOR|&id_re;_FIND_VERSION_MIN_COUNT|&id_re;_FIND_VERSION_MIN|&id_re;_FIND_VERSION_MAX_TWEAK|&id_re;_FIND_VERSION_MAX_PATCH|&id_re;_FIND_VERSION_MAX_MINOR|&id_re;_FIND_VERSION_MAX_MAJOR|&id_re;_FIND_VERSION_MAX_COUNT|&id_re;_FIND_VERSION_MAX|&id_re;_FIND_VERSION_EXACT|&id_re;_FIND_VERSION_COUNT|&id_re;_FIND_VERSION_COMPLETE|&id_re;_FIND_REQUIRED_&id_re;|&id_re;_FIND_REQUIRED|&id_re;_FIND_QUIETLY|&id_re;_FIND_COMPONENTS|&id_re;_DESCRIPTION|&id_re;_CONSIDERED_VERSIONS|&id_re;_CONSIDERED_CONFIGS|&id_re;_CONFIG|&id_re;_BINARY_DIR)\b" />       </context>        <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
xml/cpp.xml view
@@ -11,7 +11,7 @@ <language     name="C++"     section="Sources"-    version="12"+    version="13"     kateversion="5.0"     indenter="cstyle"     style="C++"@@ -68,6 +68,7 @@         http://doc.qt.io/qt-5/qbytearray.html#macros         http://doc.qt.io/qt-5/qstring.html#macros         http://doc.qt.io/qt-5/qurl.html#macros+        https://doc.qt.io/qt-5/qflags.html#macros       -->     <item>Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE</item>     <item>Q_DECLARE_METATYPE</item>@@ -80,6 +81,8 @@     <item>QT_RESTRICTED_CAST_FROM_ASCII</item>     <item>QT_NO_URL_CAST_FROM_STRING</item>     <item>QT_USE_QSTRINGBUILDER</item>+    <item>Q_DECLARE_FLAGS</item>+    <item>Q_DECLARE_OPERATORS_FOR_FLAGS</item>     <!-- QtTest macros: http://doc.qt.io/qt-5/qtest.html#macros -->     <item>QBENCHMARK</item>     <item>QBENCHMARK_ONCE</item>
xml/isocpp.xml view
@@ -24,7 +24,7 @@ <language     name="ISO C++"     section="Sources"-    version="24"+    version="25"     kateversion="5.0"     indenter="cstyle"     style="C++"@@ -354,11 +354,11 @@         <Detect2Chars attribute="String" context="String16" char="u" char1="&quot;" />         <Detect2Chars attribute="String" context="String16" char="L" char1="&quot;" />         <StringDetect attribute="String" context="String8" String="u8&quot;" />-        <Detect2Chars attribute="String" context="RawString" char="R" char1="&quot;" />-        <StringDetect attribute="String" context="RawString" String="uR&quot;" />-        <StringDetect attribute="String" context="RawString" String="UR&quot;" />-        <StringDetect attribute="String" context="RawString" String="LR&quot;" />-        <StringDetect attribute="String" context="RawString" String="u8R&quot;" />+        <Detect2Chars attribute="Raw String Delimiter" context="RawString" char="R" char1="&quot;" />+        <StringDetect attribute="Raw String Delimiter" context="RawString" String="uR&quot;" />+        <StringDetect attribute="Raw String Delimiter" context="RawString" String="UR&quot;" />+        <StringDetect attribute="Raw String Delimiter" context="RawString" String="LR&quot;" />+        <StringDetect attribute="Raw String Delimiter" context="RawString" String="u8R&quot;" />         <DetectChar attribute="Char" context="Char8 Literal" char="'" />         <Detect2Chars attribute="Char" context="Char16 Literal" char="L" char1="'" />         <Detect2Chars attribute="Char" context="Char16 Literal" char="u" char1="'" />@@ -538,14 +538,14 @@       </context>        <context name="RawString" attribute="String" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!LineError">-        <RegExpr attribute="String" context="#pop!InRawString" String="([^\(]{0,16})\(" />+        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="([^\(]{0,16})\(" beginRegion="Raw String" />       </context> -      <context name="InRawString" attribute="String" lineEndContext="#stay" dynamic="true">+      <context name="InRawString" attribute="Raw String" lineEndContext="#stay" dynamic="true">         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->-        <RegExpr attribute="String" context="#stay" String="[^%)]+" />+        <RegExpr attribute="Raw String" context="#stay" String="[^%)]+" />         <RegExpr attribute="String Char" context="#stay" String="&printf_like;|&format_like;" />-        <StringDetect attribute="String" context="#pop" String=")%1&quot;" dynamic="true"/>+        <StringDetect attribute="Raw String Delimiter" context="#pop" String=")%1&quot;" dynamic="true" endRegion="Raw String" />       </context>        <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop" />@@ -792,6 +792,8 @@       <itemData name="Char"               defStyleNum="dsChar"      spellChecking="false" />       <itemData name="String"             defStyleNum="dsString"    spellChecking="true"  />       <itemData name="String Char"        defStyleNum="dsSpecialChar" spellChecking="false" />+      <itemData name="Raw String"         defStyleNum="dsVerbatimString" spellChecking="true"  />+      <itemData name="Raw String Delimiter" defStyleNum="dsString"  spellChecking="false"  />       <itemData name="Comment"            defStyleNum="dsComment"   spellChecking="true"  />       <itemData name="Symbol"             defStyleNum="dsOperator"  spellChecking="false" />       <itemData name="Separator Symbol"   defStyleNum="dsOperator"  spellChecking="false" />
xml/julia.xml view
@@ -36,7 +36,7 @@   <!ENTITY function_begin_boundary "(?:(?&lt;=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))"> ]> -<language name="Julia" section="Sources" version="12" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">+<language name="Julia" style="julia" indenter="julia" section="Sources" version="13" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">    <highlighting>     <list name="cflow_begin">@@ -78,15 +78,10 @@       <item>const</item>       <item>export</item>       <item>global</item>-      <item>import</item>       <item>in</item>       <item>local</item>       <item>macro</item>       <item>module</item>-      <item>typealias</item>-      <item>importall</item>-      <item>baremodule</item>-      <item>using</item>       <item>where</item>       <item>new</item>       <item>in</item>@@ -95,6 +90,10 @@       <!-- C Interface -->       <item>ccall</item>     </list>+    <list name="import_keywords">+      <item>import</item>+      <item>using</item>+    </list>     <list name="types">       <item>AbstractArray</item>       <item>AbstractMatrix</item>@@ -486,7 +485,6 @@     <contexts>        <context name="_normal" attribute="Normal Text" lineEndContext="#stay">-         <DetectSpaces />          <!-- Blocks -->@@ -497,28 +495,32 @@         <keyword context="#stay" attribute="Control Flow" String="cflow"/>         <keyword context="#stay" attribute="Keyword" String="block_end"                  endRegion="block" />-        <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />-        <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" /> +        <IncludeRules context="coderoot"/>+      </context>++      <context name="subsetting" attribute="Normal Text" lineEndContext="#stay">+        <keyword context="#stay" attribute="Keyword" String="block_end"/>+        <IncludeRules context="coderoot"/>+        <DetectChar attribute="Normal Text" context="#pop" char="]"/>+      </context>++      <context name="coderoot" attribute="Normal Text" lineEndContext="#stay">         <!-- functions have to be before built-in types to properly match constructors -->         <RegExpr context="#stay" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*!?(?=\.?\()" />         <RegExpr context="parametric-constructor" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*(?=\{.+\}.?\()" /> -        <!-- Keywords, types, and comments -->+        <IncludeRules context="comment-rules"/>++        <!-- Keywords, types -->         <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b|\bmutable\s+struct\b" beginRegion="block"/>         <keyword context="#stay" attribute="Keyword" String="keywords" />+        <keyword context="import" attribute="Import" String="import_keywords" />         <keyword context="#stay" attribute="Data Type" String="types" />         <keyword context="#stay" attribute="Boolean" String="booleans" />         <keyword context="#stay" attribute="Constant" String="constants" />         <keyword context="#stay" attribute="Module" String="modules" />-        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>-        <DetectChar char="#" context="1-comment" attribute="Comment"/> -        <!-- Lists and arrays -->-        <!-- <DetectChar char="(" context="nested" beginRegion="nested" attribute="Delimiter" />-        <DetectChar char="[" context="squared" beginRegion="squared" attribute="Delimiter" />-        <DetectChar char="{" context="curly" beginRegion="curly" attribute="Delimiter" /> -->-         <!-- Strings -->         <StringDetect attribute="String" context="Block-String" String="&quot;&quot;&quot;" beginRegion="block-string"/>         <DetectChar attribute="String" context="String" char="&quot;"/>@@ -541,69 +543,688 @@         <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>         <DetectChar attribute="Command String" context="Backtick-String" char="`"/> -        <!-- Multi-character operators -->+        <!-- Multi-character operators+        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->         <StringDetect context="#stay" attribute="Operator" String="..."/>         <Detect2Chars context="type-annotation" attribute="Operator" char=":" char1=":"/>-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;="/>-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;="/>-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;="/>-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;="/>-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;="/>-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;="/>-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;"/>-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>-        <StringDetect context="#stay" attribute="Operator" String=".=="/>-        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>-        <StringDetect context="#stay" attribute="Operator" String=".!="/>-        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>-        <StringDetect context="#stay" attribute="Operator" String=".&lt;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>-        <StringDetect context="#stay" attribute="Operator" String=".&gt;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>-        <StringDetect context="#stay" attribute="Operator" String=".*="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>-        <StringDetect context="#stay" attribute="Operator" String=".^="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>-        <StringDetect context="#stay" attribute="Operator" String="./="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>-        <StringDetect context="#stay" attribute="Operator" String=".&#8891;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8891;"/>-        <StringDetect context="#stay" attribute="Operator" String=".&amp;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&amp;"/>-        <StringDetect context="#stay" attribute="Operator" String=".|="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="!"/>-        <StringDetect context="#stay" attribute="Operator" String=".+="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="+"/>-        <StringDetect context="#stay" attribute="Operator" String=".-="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="-"/>-        <StringDetect context="#stay" attribute="Operator" String=".%="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="%"/>-        <StringDetect context="#stay" attribute="Operator" String=".&#247;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#247;"/>-        <StringDetect context="#stay" attribute="Operator" String=".&#92;="/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#92;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8800;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8804;"/>-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8805;"/>+        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;=" />+        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;=" />+        <StringDetect context="#stay" attribute="Operator" String=".&lt;--&gt;" />+        <StringDetect context="#stay" attribute="Operator" String="&lt;--&gt;" />+        <StringDetect context="#stay" attribute="Operator" String=".//=" />+        <StringDetect context="#stay" attribute="Operator" String="//=" />+        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;=" />+        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;=" />+        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;=" />+        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;=" />+        <StringDetect context="#stay" attribute="Operator" String=".--&gt;" />+        <StringDetect context="#stay" attribute="Operator" String="--&gt;" />+        <StringDetect context="#stay" attribute="Operator" String=".&lt;--" />+        <StringDetect context="#stay" attribute="Operator" String="&lt;--" />+        <StringDetect context="#stay" attribute="Operator" String=".===" />+        <StringDetect context="#stay" attribute="Operator" String="===" />+        <StringDetect context="#stay" attribute="Operator" String=".!==" />+        <StringDetect context="#stay" attribute="Operator" String="!==" />+        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;" />+        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;" />+        <StringDetect context="#stay" attribute="Operator" String=".+=" />         <Detect2Chars context="#stay" attribute="Operator" char="+" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".-=" />         <Detect2Chars context="#stay" attribute="Operator" char="-" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".−=" />+        <Detect2Chars context="#stay" attribute="Operator" char="−" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".*=" />         <Detect2Chars context="#stay" attribute="Operator" char="*" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String="./=" />         <Detect2Chars context="#stay" attribute="Operator" char="/" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&#92;" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&#247;" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="%" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".\=" />+        <Detect2Chars context="#stay" attribute="Operator" char="\" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".^=" />         <Detect2Chars context="#stay" attribute="Operator" char="^" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".÷=" />+        <Detect2Chars context="#stay" attribute="Operator" char="÷" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".%=" />+        <Detect2Chars context="#stay" attribute="Operator" char="%" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".|=" />         <Detect2Chars context="#stay" attribute="Operator" char="|" char1="="/>-        <Detect2Chars context="#stay" attribute="Operator" char="&#8891;" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".&amp;=" />+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".⊻=" />+        <Detect2Chars context="#stay" attribute="Operator" char="⊻" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".:=" />+        <Detect2Chars context="#stay" attribute="Operator" char=":" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".$=" />+        <Detect2Chars context="#stay" attribute="Operator" char="$" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".=&gt;" />+        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="&gt;"/>+        <StringDetect context="#stay" attribute="Operator" String=".&amp;&amp;" />+        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>+        <StringDetect context="#stay" attribute="Operator" String=".||" />+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>+        <StringDetect context="#stay" attribute="Operator" String=".&gt;=" />+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".&lt;=" />+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".==" />+        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".!=" />+        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>+        <StringDetect context="#stay" attribute="Operator" String=".&lt;|" />+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="|"/>+        <StringDetect context="#stay" attribute="Operator" String=".|&gt;" />+        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="&gt;"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="."/>+        <StringDetect context="#stay" attribute="Operator" String=".++" />+        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="+"/>+        <StringDetect context="#stay" attribute="Operator" String=".//" />+        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="/"/>+        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;" />+        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>+        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;" />+        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="="/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&gt;"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&lt;"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≯"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩯"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪯"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="…"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⁝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋯"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="$"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="+"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="-"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="−"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="¦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="±"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨦"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨨"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨪"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨫"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨬"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨭"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨹"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨺"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩁"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩂"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩐"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩢"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⌿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="÷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="%"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&amp;"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋅"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="×"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="\"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∩"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∧"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∤"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⅋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋆"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦾"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦿"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨇"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨲"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨳"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨴"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨶"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨸"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨻"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨼"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨽"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩀"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩃"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩄"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩎"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩚"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩞"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫛"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="▷"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟖"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟗"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨟"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇵"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟰"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟱"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤈"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤊"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤋"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤒"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤓"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥉"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥌"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥍"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥏"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥔"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥕"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥘"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥙"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥜"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥝"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥠"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥡"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥣"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥥"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥮"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥯"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↑"/>+        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↓"/>          <!-- subtype operator -->         <Detect2Chars context="type-annotation" attribute="Operator" char="&lt;" char1=":"/>@@ -611,7 +1232,6 @@         <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->         <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />         <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />-        <RegExpr context="_adjoint" attribute="Delimiter" String="[\)\]}](?=')" />         <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->          <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->@@ -628,11 +1248,13 @@         <RegExpr context="#stay" attribute="Octal" String="0o[0-7]([0-7_]*[0-7])?(im)?" />         <RegExpr context="#stay" attribute="Binary" String="0b[01]([01_]*[01])?(im)?" />         <RegExpr context="#stay" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />-        <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/> -        <!-- Single-character operators -->-        <AnyChar context="#stay" attribute="Operator" String="*+-/\&amp;|&lt;&gt;~$!^=,;:@&#8891;%&#247;&#92;&#8800;&#8804;&#8805;"/>+        <!-- Single-character operators+        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->+        <AnyChar context="#stay" attribute="Operator" String="=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←→⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯:$+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯↑↓"/> +        <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->+        <DetectChar attribute="Normal Text" context="subsetting" char="["/>       </context>        <!-- Context for user block (#BEGIN...#END) -->@@ -640,17 +1262,6 @@         <IncludeRules context="1-comment" />       </context> -      <!-- Contexts entered after beginning a list or array -->-<!--      <context name="nested" attribute="Normal Text" lineEndContext="#stay">-        <DetectChar char=")" context="#pop" endRegion="nested" attribute="Delimiter" />-      </context>-      <context name="squared" attribute="Normal Text" lineEndContext="#stay">-        <DetectChar char="]" context="#pop" endRegion="squared" attribute="Delimiter" />-      </context>-      <context name="curly" attribute="Normal Text" lineEndContext="#stay">-        <DetectChar char="}" context="#pop" endRegion="curly" attribute="Delimiter" />-      </context>-->-       <!-- Context entered after encountering an ' adjoint operator -->       <context name="_adjoint" attribute="Operator" lineEndContext="#pop">         <RegExpr context="#pop" attribute="Operator" String="'+" />@@ -661,11 +1272,13 @@         <DetectSpaces />         <LineContinue attribute="String" context="#stay"/>         <HlCStringChar attribute="String Char" context="#stay"/>+        <IncludeRules context="string-interpolation-rules"/>         <DetectChar attribute="String" context="#pop" char="&quot;"/>       </context>       <context attribute="String" lineEndContext="#stay" name="Block-String">         <DetectSpaces />         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>+        <IncludeRules context="string-interpolation-rules"/>         <HlCStringChar attribute="String Char" context="#stay"/>       </context>       <!-- Raw String -->@@ -726,16 +1339,34 @@         <AnyChar attribute="String Char" context="#stay" String="?+*." />       </context> +      <context name="string-interpolation-rules" lineEndContext="#stay" attribute="String">+        <Detect2Chars context="#stay" attribute="String" char="\" char1="$"/>+        <RegExpr context="string-interpolation" attribute="String Char" String="\$(?:\S)" lookAhead="true"/>+      </context>+      <context name="string-interpolation" lineEndContext="#stay" attribute="String">+        <DetectChar attribute="String Char" char="$"/>+        <DetectIdentifier attribute="Variable" context="#pop"/>+        <DetectChar char="(" context="string-interpolation-extended" attribute="Normal Text"/>+      </context>+      <context name="string-interpolation-extended" lineEndContext="#stay" attribute="Normal Text">+        <IncludeRules context="_normal"/>+        <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>+        <DetectChar char=")" context="#pop#pop" attribute="Normal Text"/>+      </context>+      <context name="string-interpolation-internal" lineEndContext="#stay" attribute="Normal Text">+        <IncludeRules context="_normal"/>+        <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>+        <DetectChar char=")" context="#pop" attribute="Normal Text"/>+      </context>+       <!-- 1-line comment: #pop@EOL  -->       <context name="1-comment" lineEndContext="#pop" attribute="Comment">         <DetectSpaces />-        <IncludeRules context="##Comments" />       </context>        <context name="block-comment" lineEndContext="#stay" attribute="Comment">         <DetectSpaces />         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>-        <IncludeRules context="##Comments" />       </context>       <context name="controlflow-block" lineEndContext="#stay" attribute="Normal Text">         <keyword context="#stay" attribute="Control Flow" String="cflow_eb" endRegion="block" beginRegion="block" />@@ -743,24 +1374,46 @@         <IncludeRules context="_normal" />       </context>       <context name="parametric-type" lineEndContext="#stay" attribute="Data Type">-        <DetectChar char="{" context="parametric-type"/>-        <DetectChar char="}" context="#pop"/>+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>+        <DetectChar char="}" context="#pop" attribute="Data Type"/>       </context>       <context name="parametric-constructor" lineEndContext="#stay" attribute="Data Type">-        <DetectChar char="{" context="parametric-type"/>-        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" context="#pop"/>+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>+        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" attribute="Normal Text" context="#pop"/>       </context>        <!-- we have to allow spaces before the type, but switch to the parent context after the type -->       <context name="type-annotation-internal" lineEndContext="#pop#pop" attribute="Data Type">-        <DetectChar char="{" context="parametric-type"/>-        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" context="#pop#pop"/>+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>+        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^}" context="#pop#pop" attribute="Normal Text"/>         <DetectSpaces context="#pop#pop"/>-        <DetectChar char="}" lookAhead="true" context="#pop#pop"/>       </context>       <context name="type-annotation" lineEndContext="#pop" attribute="Data Type">         <DetectIdentifier context="type-annotation-internal" attribute="Data Type"/>       </context>++      <!-- rules for comments, to be used by other contexts -->+      <context name="comment-rules" lineEndContext="#pop" attribute="Comment">+        <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />+        <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />+        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>+        <DetectChar char="#" context="1-comment" attribute="Comment"/>+      </context>++      <!-- context for imports -->+      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay"  attribute="Normal Text">+        <IncludeRules context="comment-rules"/>+        <RegExpr attribute="Module" context="#stay" String="[^:,\s]+\s*(?=,)"/>+        <RegExpr attribute="Module" context="import_vars" String="[^:,\s]+\s*(?=:)"/>+        <RegExpr attribute="Module" context="#pop" String="[^:,\s]+\s*(?![,:])"/>+      </context>+      <context name="import_vars" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">+        <IncludeRules context="comment-rules"/>+        <!-- we don't know if these are types, variables, or functions,+        so no highlighting here -->+        <RegExpr attribute="Normal Text" context="#stay" String="[^:,\s]+\s*(?=,)"/>+        <RegExpr attribute="Normal Text" context="#pop#pop" String="[^:,\s]+\s*(?![,:])"/>+      </context>     </contexts>      <itemDatas>@@ -771,12 +1424,12 @@       <itemData name="Hex" defStyleNum="dsBaseN" />       <itemData name="Octal" defStyleNum="dsBaseN" />       <itemData name="Binary" defStyleNum="dsBaseN" />-      <itemData name="Delimiter" defStyleNum="dsNormal" />       <itemData name="String" defStyleNum="dsString"/>       <itemData name="String Char" defStyleNum="dsSpecialChar"/>       <itemData name="Char" defStyleNum="dsChar"/>       <itemData name="Incomplete Char" defStyleNum="dsChar"/>       <itemData name="Keyword" defStyleNum="dsKeyword"/>+      <itemData name="Import" defStyleNum="dsImport"/>       <itemData name="Control Flow" defStyleNum="dsControlFlow" />       <itemData name="Data Type" defStyleNum="dsDataType"/>       <itemData name="Constant" defStyleNum="dsConstant"/>
xml/markdown.xml view
@@ -90,7 +90,7 @@ <!ENTITY checkbox "\[[ x]\](?=\s)"> ]> -<language name="Markdown" version="18" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">+<language name="Markdown" version="19" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">   <highlighting>     <contexts>       <!-- Start of the Markdown document: find metadata or code block -->@@ -149,14 +149,33 @@       </context>        <context name="find-header" attribute="Normal Text" lineEndContext="#pop">-        <RegExpr attribute="Header H1" context="#pop" String="^#\s.*[#]?$" column="0" endRegion="H1" beginRegion="H1"/>-        <RegExpr attribute="Header H2" context="#pop" String="^##\s.*[#]?$" column="0" endRegion="H2" beginRegion="H2"/>-        <RegExpr attribute="Header H3" context="#pop" String="^###\s.*[#]?$" column="0" endRegion="H3" beginRegion="H3"/>-        <RegExpr attribute="Header H4" context="#pop" String="^####\s.*[#]?$" column="0" endRegion="H4" beginRegion="H4"/>-        <RegExpr attribute="Header H5" context="#pop" String="^#####\s.*[#]?$" column="0" endRegion="H5" beginRegion="H5"/>+        <!-- TODO: Replace "(?=.$)" in the regexes with just "$" when close-H#-region are removed  -->+        <RegExpr attribute="Header H1" context="#pop!close-H2-region" String="^#\s.*[#]?(?=.$)" column="0" endRegion="H1" beginRegion="H1"/>+        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="^##\s.*[#]?(?=.$)" column="0" endRegion="H2" beginRegion="H2"/>+        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="^###\s.*[#]?(?=.$)" column="0" endRegion="H3" beginRegion="H3"/>+        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="^####\s.*[#]?(?=.$)" column="0" endRegion="H4" beginRegion="H4"/>+        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="^#####\s.*[#]?(?=.$)" column="0" endRegion="H5" beginRegion="H5"/>         <RegExpr attribute="Header H6" context="#pop" String="^######\s.*[#]?$" column="0" endRegion="H6" beginRegion="H6"/>         <DetectChar attribute="Normal Text" context="#pop" char="#"/>       </context>+      <!-- BUG: 441278 sub-headers should be closed when their parent header is closed  (e.g. in h1 h2 h3 h1, h1-h3 should all be closed at the 2nd h1) -->+      <!-- TODO: Port to a less hacky version (maybe a new attribute for declaring multiple endRegions)  -->+      <context name="close-H2-region" attribute="Header H2" lineEndContext="#pop!close-H3-region" fallthroughContext="#pop!close-H3-region">+        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="." lookAhead="true" endRegion="H2"/>+      </context>+      <context name="close-H3-region" attribute="Header H3" lineEndContext="#pop!close-H4-region" fallthroughContext="#pop!close-H4-region">+        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="." lookAhead="true" endRegion="H3"/>+      </context>+      <context name="close-H4-region" attribute="Header H4" lineEndContext="#pop!close-H5-region" fallthroughContext="#pop!close-H5-region">+        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="." lookAhead="true" endRegion="H4"/>+      </context>+      <context name="close-H5-region" attribute="Header H5" lineEndContext="#pop!close-H6-region" fallthroughContext="#pop!close-H6-region">+        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="." lookAhead="true" endRegion="H5"/>+      </context>+      <context name="close-H6-region" attribute="Header H6" lineEndContext="#pop" fallthroughContext="#pop">+        <RegExpr attribute="Header H6" context="#pop" String="." endRegion="H6"/>+      </context>+       <context name="find-strong-normal" attribute="Normal Text" lineEndContext="#pop">         <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;|&strongemphasisregex_ast_und2;"/>         <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
xml/python.xml view
@@ -52,7 +52,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="18" 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="22" 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>@@ -90,10 +90,17 @@ 			<item>try</item> 			<item>while</item> 			<item>with</item>-			<item>yield</item> 			<item>async</item> 			<item>await</item> 		</list>+		<list name="flow_yield">+			<item>yield</item>+			<!--+				"yield from" added here as a keyword for autocompletion. The actual handling+				is in context="yield" so that we won't need to add space as a weakDeliminator.+			-->+			<item>yield from</item>+		</list> 		<list name="patternmatching"> 			<item>match</item> 			<item>case</item>@@ -380,6 +387,7 @@ 				<keyword attribute="Definition Keyword" String="defs" context="#stay"/> 				<keyword attribute="Operator Keyword" String="operators" context="#stay"/> 				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>+				<keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/> 				<keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/> 				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/> 				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>@@ -428,6 +436,11 @@ 				<RegExpr attribute="Error" String="[\w\d]+" context="#pop#pop"/> 			</context> +			<context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+				<DetectSpaces attribute="Normal Text" context="#stay"/>+				<WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>+			</context>+ 			<context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop"> 				<!-- 					Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement@@ -522,6 +535,11 @@ 				<IncludeRules context="Normal" /> 			</context> +			<context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">+				<!-- A single string/comment reached the end of the line without a \ line escape -->+				<!-- We set ALL succeeding lines to the "Error" attribute so that this error is easier to spot -->+			</context>+ 			<!-- Comments -->  			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">@@ -536,6 +554,7 @@ 				<IncludeRules context="##Comments" /> 				<DetectIdentifier/> 				<IncludeRules context="stringescape"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">@@ -544,22 +563,25 @@ 				<IncludeRules context="##Comments" /> 				<DetectIdentifier/> 				<IncludeRules context="stringescape"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Single A-comment" attribute="Comment" lineEndContext="#stay">+			<context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces/> 				<DetectChar attribute="Comment" char="'" context="#pop"/> 				<IncludeRules context="##Comments" /> 				<DetectIdentifier/> 				<IncludeRules context="stringescape"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Single Q-comment" attribute="Comment" lineEndContext="#stay">+			<context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces/> 				<DetectChar attribute="Comment" char="&quot;" context="#pop"/> 				<IncludeRules context="##Comments" /> 				<DetectIdentifier/> 				<IncludeRules context="stringescape"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<!-- Strings -->@@ -576,7 +598,7 @@ 				<!-- As this highlighting style is for both, Python 2 and 3, 				we do not know if a normal string is “unicode” or not. So we 				-->-				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}|\\$" context="#stay"/>+				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/> 			</context>  			<!-- escape characters -->@@ -584,7 +606,7 @@ 				<!-- As this highlighting style is for both, Python 2 and 3, 				we do not know if a normal string is “unicode” or not. So we 				-->-				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\$" context="#stay"/>+				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}" context="#stay"/> 			</context>  			<!-- f-literals -->@@ -619,12 +641,14 @@ 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringformat"/> 				<StringDetect attribute="String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<DetectSpaces attribute="Raw String"/> 				<DetectIdentifier attribute="Raw String"/> 				<Detect2Chars attribute="Raw String" char="\" char1="'"/>+				<Detect2Chars attribute="Raw String" char="\" char1="\"/> 				<IncludeRules context="stringformat"/> 				<StringDetect attribute="Raw String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/> 			</context>@@ -635,12 +659,14 @@ 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringinterpolation"/> 				<StringDetect attribute="F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<DetectSpaces attribute="Raw F-String"/> 				<DetectIdentifier attribute="Raw F-String"/> 				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/> 				<IncludeRules context="stringinterpolation"/> 				<StringDetect attribute="Raw F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/> 			</context>@@ -649,6 +675,7 @@ 				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|'(?!''))++"/> 				<IncludeRules context="bytesescape"/> 				<StringDetect attribute="B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context> @@ -665,12 +692,14 @@ 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringformat"/> 				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<DetectSpaces attribute="Raw String"/> 				<DetectIdentifier attribute="Raw String"/> 				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>+				<Detect2Chars attribute="Raw String" char="\" char1="\"/> 				<IncludeRules context="stringformat"/> 				<StringDetect attribute="Raw String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/> 			</context>@@ -681,12 +710,14 @@ 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringinterpolation"/> 				<StringDetect attribute="F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context>  			<context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true"> 				<DetectSpaces attribute="Raw F-String"/> 				<DetectIdentifier attribute="Raw F-String"/> 				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/> 				<IncludeRules context="stringinterpolation"/> 				<StringDetect attribute="Raw F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/> 			</context>@@ -695,6 +726,7 @@ 				<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|&quot;(?!&quot;&quot;))++"/> 				<IncludeRules context="bytesescape"/> 				<StringDetect attribute="B-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>+				<LineContinue attribute="String Char" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context> @@ -706,94 +738,111 @@   			<!-- Single-quoted A-strings -->-			<context name="Single A-string" attribute="String" lineEndContext="#stay">+			<context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="String"/> 				<DetectIdentifier attribute="String"/> 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringformat"/> 				<DetectChar attribute="String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Raw A-string" attribute="Raw String" lineEndContext="#stay">+			<context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="Raw String"/> 				<DetectIdentifier attribute="Raw String"/> 				<Detect2Chars attribute="Raw String" char="\" char1="'"/>+				<Detect2Chars attribute="Raw String" char="\" char1="\"/> 				<IncludeRules context="stringformat"/> 				<DetectChar attribute="Raw String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="Raw String" context="#stay"/> 			</context> -			<context name="Single A-F-String" attribute="F-String" lineEndContext="#stay">+			<context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="F-String"/> 				<DetectIdentifier attribute="F-String"/> 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringinterpolation"/> 				<DetectChar attribute="F-String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#stay">+			<context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="Raw F-String"/> 				<DetectIdentifier attribute="Raw F-String"/> 				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/> 				<IncludeRules context="stringinterpolation"/> 				<DetectChar attribute="Raw F-String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="Raw F-String" context="#stay"/> 			</context> -			<context name="Single A-B-String" attribute="B-String" lineEndContext="#stay">+			<context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError"> 				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/> 				<IncludeRules context="bytesescape"/> 				<DetectChar attribute="B-String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context> -			<context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#stay">-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?)++"/>+			<context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">+				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/> 				<DetectChar attribute="Raw B-String" char="'" context="#pop!#CheckForString"/>+				<LineContinue attribute="Raw B-String" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context>  			<!-- Single-quoted Q-strings -->-			<context name="Single Q-string" attribute="String" lineEndContext="#stay">+			<context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="String"/> 				<DetectIdentifier attribute="String"/> 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringformat"/> 				<DetectChar attribute="String" char="&quot;" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#stay">+			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="Raw String"/> 				<DetectIdentifier attribute="Raw String"/> 				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>+				<Detect2Chars attribute="Raw String" char="\" char1="\"/> 				<IncludeRules context="stringformat"/> 				<DetectChar attribute="Raw String" char="&quot;" context="#pop!#CheckForString"/>+				<LineContinue attribute="Raw String" context="#stay"/> 			</context> -			<context name="Single Q-F-String" attribute="F-String" lineEndContext="#stay">+			<context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="F-String"/> 				<DetectIdentifier attribute="F-String"/> 				<IncludeRules context="stringescape"/> 				<IncludeRules context="stringinterpolation"/> 				<DetectChar attribute="F-String" char="&quot;" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 			</context> -			<context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#stay">+			<context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError"> 				<DetectSpaces attribute="Raw F-String"/> 				<DetectIdentifier attribute="Raw F-String"/> 				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/> 				<IncludeRules context="stringinterpolation"/> 				<DetectChar attribute="Raw F-String" char="&quot;" context="#pop!#CheckForString"/>+				<LineContinue attribute="Raw F-String" context="#stay"/> 			</context> -			<context name="Single Q-B-String" attribute="B-String" lineEndContext="#stay">-				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>+			<context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">+				<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/> 				<IncludeRules context="bytesescape"/> 				<DetectChar attribute="B-String" char="&quot;" context="#pop!#CheckForString"/>+				<LineContinue attribute="String Char" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context> -			<context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#stay">-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?)++"/>+			<context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">+				<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/> 				<DetectChar attribute="Raw B-String" char="&quot;" context="#pop!#CheckForString"/>+				<Detect2Chars attribute="Raw B-String" char="\" char1="\"/>+				<LineContinue attribute="Raw B-String" context="#stay"/> 				<RegExpr attribute="Error" String="."/> 			</context> 
xml/toml.xml view
@@ -2,7 +2,7 @@ <!DOCTYPE language SYSTEM "language.dtd" [ 	<!ENTITY more "(_\d+)*">-	<!ENTITY int  "[+-]?(0|[1-9]\d*)&more;">+	<!ENTITY int  "[+-]?(0|[1-9]\d*&more;)"> 	<!ENTITY frac "\.\d+&more;"> 	<!ENTITY exp  "[eE][+-]?\d+&more;"> 	@@ -11,7 +11,7 @@ 	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?"> ]> <!-- https://github.com/toml-lang/toml -->-<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="8" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="9" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+"> <highlighting> 	<list name="bools"> 		<item>true</item>@@ -24,6 +24,7 @@ 			<DetectChar attribute="TableHeader" context="TableHeader" char="[" endRegion="Table"/> 			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+" firstNonSpace="true"/> 			<DetectChar attribute="Key" context="QuotedKey" char="&quot;" firstNonSpace="true"/>+			<DetectChar attribute="Key" context="LitQuotedKey" char="'" firstNonSpace="true"/> 			<DetectChar attribute="Assignment" context="Value" char="="/> 			<DetectChar char="#" attribute="Comment" context="Comment"/> 		</context>@@ -41,6 +42,7 @@ 			<DetectChar attribute="TableHeader" context="#stay" char="."/> 			<RegExpr    attribute="Key" context="#stay" String="[\w-]+"/> 			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>+			<DetectChar attribute="Key" context="LitQuotedKey" char="'"/> 		</context> 		<!-- values --> 		<context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Value">@@ -81,6 +83,9 @@ 			<RegExpr attribute="Error" String="\\." context="#stay" /> 			<StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/> 		</context>+		<context attribute="Key" lineEndContext="#pop" name="LitQuotedKey">+			<DetectChar attribute="Key" context="#pop" char="'"/>+		</context> 		<context attribute="LitString" lineEndContext="#pop" name="LitString"> 			<DetectChar attribute="String" context="#pop" char="'"/> 		</context>@@ -96,6 +101,7 @@ 		<context attribute="InlineTable" lineEndContext="#stay" name="InlineTable"> 			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+"/> 			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>+			<DetectChar attribute="Key" context="LitQuotedKey" char="'"/> 			<DetectChar attribute="Assignment" context="Value" char="="/> 			<DetectChar char="#" attribute="Comment" context="Comment"/> 			<DetectChar context="#pop" attribute="InlineTable" char="}" />