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 +55/−45
- changelog.md +38/−0
- skylighting-core.cabal +2/−1
- src/Regex/KDE/Compile.hs +1/−1
- src/Skylighting/Loader.hs +5/−2
- src/Skylighting/Parser.hs +60/−17
- src/Skylighting/Tokenizer.hs +11/−3
- src/Skylighting/Types.hs +11/−1
- test/expected/abc.julia.native +5/−11
- test/expected/abc.scala.native +11/−7
- test/test-skylighting.hs +4/−0
- xml/cmake.xml +18/−7
- xml/cpp.xml +4/−1
- xml/isocpp.xml +12/−10
- xml/julia.xml +750/−97
- xml/markdown.xml +25/−6
- xml/python.xml +70/−21
- xml/toml.xml +8/−2
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=""" /> <Detect2Chars attribute="String" context="String16" char="L" char1=""" /> <StringDetect attribute="String" context="String8" String="u8"" />- <Detect2Chars attribute="String" context="RawString" char="R" char1=""" />- <StringDetect attribute="String" context="RawString" String="uR"" />- <StringDetect attribute="String" context="RawString" String="UR"" />- <StringDetect attribute="String" context="RawString" String="LR"" />- <StringDetect attribute="String" context="RawString" String="u8R"" />+ <Detect2Chars attribute="Raw String Delimiter" context="RawString" char="R" char1=""" />+ <StringDetect attribute="Raw String Delimiter" context="RawString" String="uR"" />+ <StringDetect attribute="Raw String Delimiter" context="RawString" String="UR"" />+ <StringDetect attribute="Raw String Delimiter" context="RawString" String="LR"" />+ <StringDetect attribute="Raw String Delimiter" context="RawString" String="u8R"" /> <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"" dynamic="true"/>+ <StringDetect attribute="Raw String Delimiter" context="#pop" String=")%1"" 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 "(?:(?<=[&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=""""" beginRegion="block-string"/> <DetectChar attribute="String" context="String" char="""/>@@ -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=".>>>="/>- <StringDetect context="#stay" attribute="Operator" String=">>>="/>- <StringDetect context="#stay" attribute="Operator" String=".>>="/>- <StringDetect context="#stay" attribute="Operator" String=">>="/>- <StringDetect context="#stay" attribute="Operator" String=".<<="/>- <StringDetect context="#stay" attribute="Operator" String="<<="/>- <StringDetect context="#stay" attribute="Operator" String=".>>>"/>- <StringDetect context="#stay" attribute="Operator" String=">>>"/>- <StringDetect context="#stay" attribute="Operator" String=".>>"/>- <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=".>="/>- <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=".*="/>- <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=".⊻="/>- <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="!"/>- <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="." char1="≠"/>- <Detect2Chars context="#stay" attribute="Operator" char="." char1="≤"/>- <Detect2Chars context="#stay" attribute="Operator" char="." char1="≥"/>+ <StringDetect context="#stay" attribute="Operator" String=".>>>=" />+ <StringDetect context="#stay" attribute="Operator" String=">>>=" />+ <StringDetect context="#stay" attribute="Operator" String=".<-->" />+ <StringDetect context="#stay" attribute="Operator" String="<-->" />+ <StringDetect context="#stay" attribute="Operator" String=".//=" />+ <StringDetect context="#stay" attribute="Operator" String="//=" />+ <StringDetect context="#stay" attribute="Operator" String=".<<=" />+ <StringDetect context="#stay" attribute="Operator" String="<<=" />+ <StringDetect context="#stay" attribute="Operator" String=".>>=" />+ <StringDetect context="#stay" attribute="Operator" String=">>=" />+ <StringDetect context="#stay" attribute="Operator" String=".-->" />+ <StringDetect context="#stay" attribute="Operator" String="-->" />+ <StringDetect context="#stay" attribute="Operator" String=".<--" />+ <StringDetect context="#stay" attribute="Operator" String="<--" />+ <StringDetect context="#stay" attribute="Operator" String=".===" />+ <StringDetect context="#stay" attribute="Operator" String="===" />+ <StringDetect context="#stay" attribute="Operator" String=".!==" />+ <StringDetect context="#stay" attribute="Operator" String="!==" />+ <StringDetect context="#stay" attribute="Operator" String=".>>>" />+ <StringDetect context="#stay" attribute="Operator" String=">>>" />+ <StringDetect context="#stay" attribute="Operator" String=".+=" /> <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="\" char1="="/>- <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="="/>- <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="="/>+ <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=">"/>+ <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="="/>+ <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="."/>+ <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="." char1="="/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1=">"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="<"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≯"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩯"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪯"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="…"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⁝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋯"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="$"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="+"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="-"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="−"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="¦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="±"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨥"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨦"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨨"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨪"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨫"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨬"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨭"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨮"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨹"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨺"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩁"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩂"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩐"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩢"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⌿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="÷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="%"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="&"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋅"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="×"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="\"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∩"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∧"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="∤"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⅋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="≀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋆"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦾"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦿"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨇"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨲"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨳"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨴"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨶"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨸"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨻"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨼"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨽"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩀"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩃"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩄"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩎"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩚"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩞"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫛"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="▷"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟖"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟗"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨟"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="↓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇵"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟰"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟱"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤈"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤊"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤋"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤒"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤓"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥉"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥌"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥍"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥏"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥑"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥔"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥕"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥘"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥙"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥜"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥝"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥠"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥡"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥣"/>+ <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥥"/>+ <Detect2Chars context="#stay" attribute="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="<" 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="(∫(\.∫)?|\.∫)([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="(∫(\.∫)?|\.∫)([eEfF][+-]?\d+)?(im)?" />- <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/> - <!-- Single-character operators -->- <AnyChar context="#stay" attribute="Operator" String="*+-/\&|<>~$!^=,;:@⊻%÷\≠≤≥"/>+ <!-- 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="=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌←→⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻><≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯:$+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯↑↓"/> + <!-- 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="""/> </context> <context attribute="String" lineEndContext="#stay" name="Block-String"> <DetectSpaces /> <StringDetect attribute="String" context="#pop" String=""""" 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=",;()=:><&%*?[]^" context="#pop"/>+ <DetectChar char="{" context="parametric-type" attribute="Data Type"/>+ <AnyChar String=",;()=:><&%*?[]^" 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=",;()=:><&%*?[]^" context="#pop#pop"/>+ <DetectChar char="{" context="parametric-type" attribute="Data Type"/>+ <AnyChar String=",;()=:><&%*?[]^}" 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=""" 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="\\[\\'"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="\\[\\'"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="\\[\\'"abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\$" context="#stay"/>+ <RegExpr attribute="String Char" String="\\[\\'"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]++|\\(?=[^\\'"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=""""" 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="""/>+ <Detect2Chars attribute="Raw String" char="\" char1="\"/> <IncludeRules context="stringformat"/> <StringDetect attribute="Raw String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/> </context>@@ -681,12 +710,14 @@ <IncludeRules context="stringescape"/> <IncludeRules context="stringinterpolation"/> <StringDetect attribute="F-String" String=""""" 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="""/>+ <Detect2Chars attribute="Raw F-String" char="\" char1="\"/> <IncludeRules context="stringinterpolation"/> <StringDetect attribute="Raw F-String" String=""""" context="#pop!#CheckForString" endRegion="Triple Q-region"/> </context>@@ -695,6 +726,7 @@ <RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'"abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|"(?!""))++"/> <IncludeRules context="bytesescape"/> <StringDetect attribute="B-String" String=""""" 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]++|\\(?=[^\\'"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=""" 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="""/>+ <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 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=""" 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="""/>+ <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 Q-B-String" attribute="B-String" lineEndContext="#stay">- <RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'"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]++|\\(?=[^\\'"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 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=""" 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=""" 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="""/>+ <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="""""/> </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="""/>+ <DetectChar attribute="Key" context="LitQuotedKey" char="'"/> <DetectChar attribute="Assignment" context="Value" char="="/> <DetectChar char="#" attribute="Comment" context="Comment"/> <DetectChar context="#pop" attribute="InlineTable" char="}" />