skylighting-core 0.14.7 → 0.15
raw patch · 71 files changed
+23094/−4092 lines, 71 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
- Skylighting.Types: [cLineBeginContext] :: Context -> ![ContextSwitch]
- Skylighting.Types: [rWeakDeliminators] :: Rule -> Set Char
+ Skylighting.Regex: matchRegexWithGroups :: IntMap Regex -> Regex -> ByteString -> Maybe (ByteString, IntMap (Int, Int))
+ Skylighting.Regex: reMinimal :: RE -> Bool
+ Skylighting.Types: [rWordDelimiters] :: Rule -> Set Char
- Skylighting.Regex: MatchCaptured :: !Int -> Regex
+ Skylighting.Regex: MatchCaptured :: !Int -> !Bool -> Regex
- Skylighting.Regex: compileRE :: RE -> Either String Regex
+ Skylighting.Regex: compileRE :: RE -> Either String (Regex, IntMap Regex)
- Skylighting.Regex: compileRegex :: Bool -> ByteString -> Either String Regex
+ Skylighting.Regex: compileRegex :: Bool -> Bool -> ByteString -> Either String Regex
- Skylighting.Regex: pattern RE :: ByteString -> Bool -> RE
+ Skylighting.Regex: pattern RE :: ByteString -> Bool -> Bool -> RE
- Skylighting.Types: Context :: !Text -> !Text -> ![Rule] -> !TokenType -> ![ContextSwitch] -> ![ContextSwitch] -> ![ContextSwitch] -> !Bool -> ![ContextSwitch] -> !Bool -> Context
+ Skylighting.Types: Context :: !Text -> !Text -> ![Rule] -> !TokenType -> ![ContextSwitch] -> ![ContextSwitch] -> !Bool -> ![ContextSwitch] -> !Bool -> Context
- Skylighting.Types: LineContinue :: Matcher
+ Skylighting.Types: LineContinue :: !Char -> Matcher
Files
- changelog.md +273/−0
- skylighting-core.cabal +4/−4
- src/Regex/KDE.hs +3/−2
- src/Regex/KDE/Compile.hs +250/−74
- src/Regex/KDE/Match.hs +212/−81
- src/Regex/KDE/Regex.hs +3/−2
- src/Skylighting/Core.hs +6/−2
- src/Skylighting/Loader.hs +3/−1
- src/Skylighting/Parser.hs +85/−44
- src/Skylighting/Regex.hs +36/−18
- src/Skylighting/Tokenizer.hs +223/−128
- src/Skylighting/Types.hs +2/−3
- test/expected/abc.haskell.native +3/−1
- test/test-skylighting.hs +366/−5
- xml/abnf.xml +175/−0
- xml/asciidoc.xml +640/−0
- xml/bash.xml +22/−10
- xml/cabal.xml +398/−0
- xml/cmake.xml +542/−110
- xml/cobol.xml +749/−0
- xml/context.xml +214/−0
- xml/cpp.xml +55/−1
- xml/crystal.xml +7/−1
- xml/csv.xml +214/−0
- xml/desktop.xml +34/−0
- xml/dot.xml +1/−1
- xml/elixir-eex.xml +60/−0
- xml/elixir-heex.xml +248/−0
- xml/elixir.xml +410/−122
- xml/haml.xml +1424/−0
- xml/haskell.xml +7/−5
- xml/idl.xml +120/−0
- xml/j.xml +90/−82
- xml/jinja.xml +298/−0
- xml/jira.xml +779/−0
- xml/k.xml +424/−0
- xml/logfile.xml +36/−0
- xml/markdown.xml +18/−2
- xml/markdown.xml.patch +0/−23
- xml/mermaid.xml +4811/−0
- xml/meson.xml +277/−0
- xml/nginx.xml +934/−0
- xml/ninja.xml +284/−0
- xml/nix.xml +8/−4
- xml/ocaml.xml +2/−2
- xml/ocamllex.xml +82/−0
- xml/ocamlyacc.xml +162/−0
- xml/orgmode.xml +2/−2
- xml/perl.xml +2/−2
- xml/php.xml +3/−3
- xml/powershell.xml +7/−2
- xml/python.xml +30/−4
- xml/q.xml +210/−0
- xml/qml.xml +4/−1
- xml/quarto.xml +233/−0
- xml/raku.xml +6/−4
- xml/rdoc.xml +390/−0
- xml/rmarkdown.xml +175/−0
- xml/rtf.xml +48/−0
- xml/rust.xml +2/−2
- xml/sas.xml +1370/−0
- xml/sparql.xml +193/−0
- xml/spdx-comments.xml +802/−539
- xml/tcsh.xml +2/−2
- xml/textile.xml +102/−0
- xml/todo.xml +468/−0
- xml/typst.xml +2/−2
- xml/vue.xml +251/−0
- xml/yaml.xml +814/−634
- xml/zig.xml +3/−1
- xml/zsh.xml +2981/−2166
changelog.md view
@@ -1,5 +1,278 @@ # Revision history for skylighting and skylighting-core +## 0.15++ * New syntaxes: sparql (#212), sas (#213), mermaid, desktop,+ elixir-eex, elixir-heex, abnf, asciidoc, cabal, cobol, context,+ csv, haml, idl, jinja, jira, k, logfile, meson, nginx, ninja,+ ocamllex, ocamlyacc, q, quarto, rdoc, rmarkdown, rtf, textile,+ todo, vue.++ * Update syntax definitions from upstream: bash, cmake, cpp,+ crystal, dot, elixir, haskell, markdown, nix, ocaml, orgmode,+ perl, php, powershell, python, qml, raku, rust,+ spdx-comments, tcsh, typst, yaml, zig, zsh.++ * Allow multiple contexts separated by `!` (#208).+ This is an upstream KDE change.++ * Bump min base version to 4.18.++ * Regex: don't hang on bounded repetition with min > max.+ `atmost` recursed without a guard for negative counts, so a pattern+ like `a{3,1}` made the compiler loop forever building an infinite+ regex. Reject the quantifier and fall back to interpreting it as a+ literal, consistent with how other invalid quantifiers (`a{}`, `a{3`)+ are handled.++ * Regex: don't hang on lazy quantifiers in lookbehinds.+ Previously lazy quantifier inside a lookbehind (e.g. `(?<=a+?b)`) hung.++ * Regex: don't hang on subroutine recursion that consumes no input.+ Previously a pattern like `x|(?R)` recursed forever.++ * Regex: fix `lastCharOffset` for multibyte UTF-8 characters.+ This bug resulted in failure of lookbehinds and word boundary+ checks after non-ASCII characters.++ * Regex: don't let `(?i:...)` leak out of its group.+ Previously, in `/(?i:a)b/` the trailing `b` was also matched+ case-insensitively.++ * Regex: fix `[[:graph:]]`, `[[:word:]]`, and add `[[:digit:]]`.++ * Regex: find nested capturing groups for subroutine calls.+ Previously, calls like `(?2)` in `/((a)b)(?2)/` were+ silently ignored (matching the empty string).++ * Regex: apply case-insensitivity to classes, escapes, backreferences.+ Case-insensitive matching was previously only applied to plain literal+ characters, not character classes and escaped literals. Now:++ + `pRegexCharClass` takes the case-sensitivity flag and, when+ insensitive, matches a character if any of its case variants is in+ the class (negated classes exclude all case variants, as in PCRE).+ + Escaped literals like \x61 match case-insensitively when+ insensitivity is in effect.+ + The matcher compares captured text character by character with+ case folding (correct even when the case variants have different+ UTF-8 encodings).+ + [API change] `MatchCaptured` has a new argument place;+ `MatchCaptured !Int !Bool`, where the Bool records the case+ sensitivity in effect at its position.++ * Regex: linearize `{m,n}` expansion and cap repeat counts.+ Previously `r{m,n}` was expanded to produce an AST quadratic in+ n-m, which also made matching quadratic: matching `[ab]{0,800}`+ against 800 characters took ~31 ms. We now use+ a nested-optional encoding, `r(r(r)?)?`, which is linear; the same+ match takes ~0.3 ms. In addition, repeat counts larger than+ 65535 (the limit PCRE2 uses) are no longer treated as+ quantifiers; like other invalid quantifier syntax, they fall+ back to a literal interpretation. Previously `x{100000000}`+ would eagerly build a hundred-million-node regex.++ * Regex: treat unmatched `]` outside a character class as a literal.+ This the behavior of PCRE2 (used by KSyntaxHighlighting via+ QRegularExpression). Previously we treated this as a parse error,+ which caused failures in several current KDE syntax definitions.++ * Regex: parse `\0` octal escapes with up to two digits, as in PCRE.+ `\0` previously required exactly three following octal digits.++ * Regex: support `\G` (assert position of match start).+ Because our matcher is always anchored at the start of+ the input it is given, this is exactly AssertBeginning.++ * Regex: support `\gN` and `\g{N}` backreferences.++ * Regex: support inline modifiers like `(?i)` without a colon.++ * Regex: support `\h` and `\H` (horizontal whitespace).++ * Regex: support `\A` (start of subject).+ Since matching is always anchored at the start of the input we are+ given, `\A` is equivalent to AssertBeginning.++ * Regex: allow an empty first alternative, as in `(?:|a)`.+ As in PCRE, an empty alternative matches the empty string. Empty+ alternatives other than the first were already supported.++ * Regex: support `\b` (backspace) inside character classes.++ * Regex: support atomic groups `(?>...)`.++ * Regex: leftmost-first (PCRE) match semantics instead of longest-match.++ + Alternation is now leftmost-first, and alternatives are tried in+ source order (a fold in the compiler used to reverse them, which+ was harmless under longest-match).+ + Possessive quantifiers and atomic groups commit to the first match+ in backtracking order, fixing the divergence from PCRE.+ `(?>a|ab)c` now fails on "abc".+ + Lookahead/lookbehind assertions are atomic and keep only the first+ match's captures, so `d(?=(a|ab))` captures "a", as in PCRE.+ - Lazy quantifiers are compiled to forms that prefer fewer+ repetitions instead of being special-cased in the matcher; the old+ special case could commit to a short prefix and miss valid longer+ continuations.+ - Repetition loops terminate via a seen-state set.++ * Regex: fix subroutine calls to groups with multi-digit numbers.++ * Regex: after `(?|...)`, resume group numbering after the max group.++ * Regex: allow a leading literal `]` in a character class to start a range.+ As in PCRE, `[]-a]` is the range from `]` to `a`; previously it was parsed+ as the three literals.++ * Regex: support `\pL`, `\P{...}`, `\PL`, and `\p{^...}`.++ * Regex: make Eq Match consistent with Ord.++ * Regex: Raise compile errors for stray quantifiers and unsupported flags.++ + a quantifier with nothing to repeat.+ + a quantifier after an anchor or word-boundary assertion.+ + `{m,n}` with m > n.+ + repeat counts over 65535.+ + inline flags we do not implement.++ * Regex: Support minimal= (inverted greediness) on RegExpr rules.++ + `compileRegex` takes a new Bool parameter for minimal matching+ [API change], and `pSuffix` swaps the greedy and lazy variant+ s of a quantifier when it is set.+ + The inline flag `(?U)` (and `(?-U)`, `(?U:...))`, which toggles the+ same option in PCRE, is now supported.+ + RE has a new `reMinimal` field [API change], which+ Skylighting.Parser sets from the `minimal` attribute on+ RegExpr elements.++ * Support the char attribute on LineContinue. [API change]+ The LineContinue constructor of Matcher now carries the character.++ * Fix case-sensitivity defaults to match KDE.++ + Rules (RegExpr, StringDetect, WordDetect, DetectChar, etc.) now+ default to case-sensitive matching regardless of the language+ element's `casesensitive` attribute.+ + The default case sensitivity of keyword lists is given by the+ `casesensitive` attribute on the language element, and may be+ overridden by the `casesensitive` attribute on general > keywords.+ + An `insensitive` attribute on a keyword rule itself now overrides+ the keyword list's case sensitivity, but only when the attribute+ is actually present.++ Behavior verified against KSyntaxHighlighting's definition.cpp and+ highlightingdata.cpp.++ * Honor `additionalDeliminator`/`weakDeliminator` on rules.++ + Keyword rules fold rule-level `additionalDeliminator` and+ `weakDeliminator` into their delimiter set, so e.g. Lua's+ special variables rule (additionalDeliminator=".") matches+ nil in nil.x even though the general keywords element makes+ `.` a weak delimiter.+ + Rule gains an `rAdditionalDeliminators` field [API change],+ and both it and `rWeakDeliminators` now also incorporate+ the general > keywords delimiter modifications, applied+ before the rule-level ones as in KDE. Both sets are consulted+ by WordDetect, Int, Float, HlCHex, and HlCOct: a weak delimiter+ counts as a word character and an additional delimiter does+ not, with weak delimiters taking precedence.+ + WordDetect now uses KDE's boundary conditions: a delimiter (or+ line edge) must precede the word or be its first character, and+ must follow the word or be its last character. The leading+ check also prevents WordDetect from matching in the middle of+ a word.++ * Match KDE semantics for Int, Float, HlCOct, HlCHex rules [API change]++ + These rules match only if the *preceding* character is a word+ delimiter (or the match is at the start of the line); nothing is+ required of the following character. Previously we used a+ two-sided `\w`-based word boundary check.+ + None of these rules consume a leading sign. Previously Int,+ HlCOct, HlCHex consumed an optional '-', and Float an optional+ '+' or '-'.+ + Int matches decimal digits only (no hex or octal forms).+ + HlCOct matches C-style octals: '0' followed by octal digits.+ Previously we required a "0o" prefix (and, due to a bug, actually+ matched the hex form, so HlCOct never matched real octals).+ + Float requires a '.', so "5e2" is not a Float; the exponent is+ all-or-nothing (an incomplete exponent like "1.5e+" matches just+ "1.5"); and there is no check on what follows the match, so+ "1.2.3" matches "1.2".++ Since all four rules (and keyword and WordDetect) now need+ only a single effective delimiter set, we replace the+ `rWeakDeliminators` and `rAdditionalDeliminators` fields on+ Rule with a single `rWordDelimiters` field [API change].++ * Match KDE line-loop semantics.++ + Remove `cLineBeginContext` from Context [API change] and the+ `lineBeginContext` attribute from the parser. KDE no longer+ has this feature, no bundled syntax definition uses it.+ + Column and `firstNonspaceColumn` now restart on every physical line.+ A line continuation only suppresses the previous line's+ `lineEndContext`; it no longer carries the previous line's column+ state into the next line.+ + `lineEmptyContext` defaults to `lineEndContext` when unspecified or+ `#stay` (KDE context.cpp, see kde bug 405903).+ + An empty line now applies the `lineEmptyContext` switches of+ successive top contexts until `#stay`, and does not apply+ `lineEndContext` separately.+ + `checkLineEnd` likewise applies lineEndContext switches of successive+ top contexts until `#stay`.+ + Guard against endless loops from broken syntax definitions, as KDE+ does: the empty-line and line-end context-switch loops and rule+ matching without consuming input are limited to 1024 iterations+ without progress, after which highlighting of the line is aborted.++ * Cache capturing groups in RE alongside the compiled regex.+ Previously, matchRegex called extractCapturingGroups on every+ invocation. Now the RE smart constructor extracts the+ capturing groups once at compile time and caches them+ alongside the compiled Regex. The tokenizer uses the cached groups+ for static rules. For dynamic rules the groups are recomputed+ after `subDynamic`, since the substitution rewrites the AST.++ + compileRE now returns Either String (Regex, IntMap Regex) [API change].+ + New function matchRegexWithGroups [API change] takes precomputed groups;+ matchRegex keeps its old behavior for external callers.++ * Resolve keywords at load time, not on every tokenize call.++ + `tokenize` no longer resolves keywords; it assumes keyword lists in+ the syntax map have already been resolved into word sets. This is+ the case for the bundled syntax definitions (which are generated+ via loadSyntaxesFromDir) and for definitions loaded with the+ functions in Skylighting.Loader.+ - `loadValidSyntaxesFromDir` now resolves keywords, fixing an+ inconsistency with `loadSyntaxesFromDir` (which already did).+ - The skylighting CLI resolves keywords in syntaxes added with+ `--definition`.+ - Users who build a SyntaxMap by hand from `parseSyntaxDefinition`+ output must now apply resolveKeywords themselves; tokenizing with+ an unresolved keyword list yields a clear "Keyword with unresolved+ list" error.++ * Minor performance improvements in matchers and syntax lookup.++ + `detect2Chars`: compare decoded characters directly (like+ detectChar) instead of allocating a two-character Text and+ encoding it to a ByteString on every attempt.+ + `wordDetect`, `stringDetect`: in the case-sensitive case, compare+ bytes with a prefix check instead of walking and decoding a+ prefix of the input into Text on every attempt.+ + `syntaxByName`: don't rebuild the entire syntax map with lowercased+ keys on every lookup; try an exact lookup first and fall back to+ a linear scan.+ + `syntaxByShortName`: lowercase the query once instead of once per+ map entry.+ ## 0.14.7 * Update xml syntax definitions: agda, apache, bash, c, clojure,
skylighting-core.cabal view
@@ -1,5 +1,5 @@ name: skylighting-core-version: 0.14.7+version: 0.15 synopsis: syntax highlighting library description: Skylighting is a syntax highlighting library. It derives its tokenizers from XML syntax@@ -113,7 +113,7 @@ Regex.KDE.Compile Regex.KDE.Match other-extensions: CPP- build-depends: base >= 4.8 && < 5.0,+ build-depends: base >= 4.18 && < 5, mtl, transformers, text,@@ -147,7 +147,7 @@ type: exitcode-stdio-1.0 main-is: test-skylighting.hs hs-source-dirs: test- build-depends: base >= 4.8 && < 5.0,+ build-depends: base >= 4.8 && < 5, tasty, tasty-golden, tasty-hunit,@@ -185,7 +185,7 @@ Default-Language: Haskell2010 executable skylighting-extract- build-depends: base >= 4.8 && < 5.0,+ build-depends: base >= 4.8 && < 5, skylighting-core, filepath, text,
src/Regex/KDE.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} module Regex.KDE- (Regex(..), compileRegex, matchRegex, testRegex, isWordChar)+ (Regex(..), compileRegex, matchRegex, matchRegexWithGroups,+ extractCapturingGroups, testRegex, isWordChar) where import Regex.KDE.Regex@@ -15,7 +16,7 @@ testRegex caseSensitive re s = let bs = U.fromString s toSlice (off,len) = U.toString $ B.take len $ B.drop off bs- in case compileRegex caseSensitive (U.fromString re) of+ in case compileRegex caseSensitive False (U.fromString re) of Right r -> case matchRegex r bs of Nothing -> Nothing
src/Regex/KDE/Compile.hs view
@@ -25,12 +25,18 @@ -- It is described here: https://doc.qt.io/qt-6/qregexp.html -- | Compile a UTF-8 encoded ByteString as a Regex. If the first--- parameter is True, then the Regex will be case sensitive.-compileRegex :: Bool -> ByteString -> Either String Regex-compileRegex caseSensitive bs =+-- parameter is True, then the Regex will be case sensitive. If the+-- second parameter is True, quantifiers are minimal (lazy) rather+-- than greedy by default, and the @?@ modifier makes them greedy+-- instead of lazy -- this corresponds to PCRE's UNGREEDY option+-- (QRegularExpression's InvertedGreedinessOption, set by+-- @minimal="1"@ in KDE syntax definitions).+compileRegex :: Bool -> Bool -> ByteString -> Either String Regex+compileRegex caseSensitive minimal bs = let !res = parseOnly (evalStateT parser RState{ rsCurrentCaptureNumber = 0,- rsCaseSensitive = caseSensitive })+ rsCaseSensitive = caseSensitive,+ rsMinimal = minimal }) (decodeUtf8With lenientDecode bs) in res where@@ -44,7 +50,8 @@ data RState = RState { rsCurrentCaptureNumber :: Int- , rsCaseSensitive :: Bool }+ , rsCaseSensitive :: Bool+ , rsMinimal :: Bool } deriving (Show) type RParser = StateT RState Parser@@ -52,8 +59,12 @@ pRegex :: RParser Regex pRegex = option MatchNull $- foldr MatchAlt- <$> pAltPart+ -- earlier alternatives must be the left operands of MatchAlt, since+ -- the matcher prefers them, as in PCRE. The first alternative may+ -- be empty, as in (?:|a); as in PCRE, an empty alternative matches+ -- the empty string:+ (\x xs -> foldr1 MatchAlt (x:xs))+ <$> (pAltPart <|> pure mempty) <*> many (lift (char '|') *> (pAltPart <|> pure mempty)) pAltPart :: RParser Regex@@ -66,30 +77,58 @@ pParenthesized :: RParser Regex pParenthesized = do _ <- lift (char '(')- -- pcrepattern says: A group that starts with (?| resets the capturing- -- parentheses numbers in each alternative.- resetCaptureNumbers <- option False (True <$ lift (string "?|"))- (modifier, stModifier) <-- if resetCaptureNumbers- then return (id, id)- else lift (char '?' *> pGroupModifiers)- <|> do modify (\st -> st{- rsCurrentCaptureNumber =- rsCurrentCaptureNumber st + 1})- num <- gets rsCurrentCaptureNumber- pure (MatchCapture num, id)- currentCaptureNumber <- gets rsCurrentCaptureNumber- contents <- option MatchNull $ withStateT stModifier $- foldr MatchAlt- <$> pAltPart- <*> many (lift (char '|') *>- ((when resetCaptureNumbers- (modify (\st ->- st{ rsCurrentCaptureNumber = currentCaptureNumber }))- >> pAltPart) <|> pure mempty))- _ <- lift (char ')')- return $ modifier contents+ pInlineModifiers <|> do+ -- pcrepattern says: A group that starts with (?| resets the capturing+ -- parentheses numbers in each alternative.+ resetCaptureNumbers <- option False (True <$ lift (string "?|"))+ (modifier, stModifier) <-+ if resetCaptureNumbers+ then return (id, id)+ else lift (char '?' *> pGroupModifiers)+ <|> do modify (\st -> st{+ rsCurrentCaptureNumber =+ rsCurrentCaptureNumber st + 1})+ num <- gets rsCurrentCaptureNumber+ pure (MatchCapture num, id)+ currentCaptureNumber <- gets rsCurrentCaptureNumber+ -- modifiers like (?i: or (?U: are scoped to the group, so save the+ -- current flags and restore them after the closing parenthesis:+ oldCaseSensitive <- gets rsCaseSensitive+ oldMinimal <- gets rsMinimal+ modify stModifier+ contents <- do+ x <- pAltPart <|> pure mempty+ n0 <- gets rsCurrentCaptureNumber+ let pNextAlt = do+ _ <- lift (char '|')+ when resetCaptureNumbers $+ modify (\st ->+ st{ rsCurrentCaptureNumber = currentCaptureNumber })+ y <- pAltPart <|> pure mempty+ n <- gets rsCurrentCaptureNumber+ pure (y, n)+ rest <- many pNextAlt+ -- with (?|, numbering after the group resumes after the highest+ -- group number used in any alternative, as in PCRE:+ when resetCaptureNumbers $+ modify (\st ->+ st{ rsCurrentCaptureNumber = maximum (n0 : map snd rest) })+ pure (foldr1 MatchAlt (x : map fst rest))+ _ <- lift (char ')')+ modify $ \st -> st{ rsCaseSensitive = oldCaseSensitive+ , rsMinimal = oldMinimal }+ return $ modifier contents +-- Inline modifiers like (?i) or (?-i), without a colon, apply from+-- this point to the end of the enclosing group (or pattern). The+-- state change persists after the closing parenthesis; the enclosing+-- group's save/restore of rsCaseSensitive provides the scoping.+pInlineModifiers :: RParser Regex+pInlineModifiers = do+ stModifier <- lift $ char '?' *> pRegexModifier <* char ')'+ modify stModifier+ return MatchNull+ pGroupModifiers :: Parser (Regex -> Regex, RState -> RState) pGroupModifiers = (do stmod <- pRegexModifier -- (?i:@@ -100,33 +139,55 @@ ((AssertPositive dir, id) <$ char '=') <|> ((AssertNegative dir, id) <$ char '!') <|>- do c <- digit- return (\_ -> Subroutine (ord c - 48), id)+ do ds <- many1 digit+ case readMay ds of+ Just !n -> return (\_ -> Subroutine n, id)+ Nothing -> fail "not a number" <|> do void $ char 'R' return (\_ -> Subroutine 0, id)+ <|> -- atomic group (?>...): no backtracking into the group+ ((Possessive, id) <$ char '>') pRegexModifier :: Parser (RState -> RState) pRegexModifier = do- -- "adlupimnsx-imnsx"- -- i = 105 - = 45- ons <- many $ satisfy (inClass "adlupimnsx")+ -- Of PCRE's inline flags we implement i and U (ungreedy). We also+ -- accept m and s, which are no-ops for us: subjects are single+ -- lines, so there are no newlines for (?s) to let . match or for+ -- (?m) to change the meaning of ^ and $. Flags that would change+ -- semantics we don't implement (x, n, ...) are rejected, causing a+ -- compile error, as unknown flags do in PCRE. Turning flags *off*+ -- is always safe, since only i and U are ever on.+ ons <- many $ satisfy (inClass "imsU") offs <- option [] $ char '-' *>- many (satisfy (inClass "imnsx"))+ many (satisfy (inClass "imnsxU")) pure $ \st -> st{ rsCaseSensitive = if 'i' `elem` ons && 'i' `notElem` offs then False else ('i' `elem` offs) || rsCaseSensitive st+ , rsMinimal =+ if 'U' `elem` ons && 'U' `notElem` offs+ then True+ else ('U' `notElem` offs) && rsMinimal st } pSuffix :: Regex -> RParser Regex+-- a quantifier after an anchor or word-boundary assertion is a+-- compile error in PCRE ("quantifier does not follow a repeatable+-- item"). We get the same effect by leaving the quantifier+-- unconsumed: *, +, and ? are rejected by pRegexChar as special, and+-- { is rejected there when it begins a valid quantifier.+pSuffix re@AssertBeginning = pure re+pSuffix re@AssertEnd = pure re+pSuffix re@AssertWordBoundary = pure re pSuffix re = option re $ do w <- lift $ satisfy (inClass "*+?{")- (case w of- '*' -> return $ MatchAlt (MatchSome re) MatchNull- '+' -> return $ MatchSome re- '?' -> return $ MatchAlt re MatchNull+ case w of+ '*' -> withModifier (MatchAlt (MatchSome re) MatchNull)+ (MatchAlt MatchNull (Lazy (MatchSome re)))+ '+' -> withModifier (MatchSome re) (Lazy (MatchSome re))+ '?' -> withModifier (MatchAlt re MatchNull) (MatchAlt MatchNull re) '{' -> do minn <- lift $ option Nothing $ readMay . T.unpack <$> A.takeWhile isDigit@@ -134,24 +195,64 @@ (readMay . T.unpack <$> A.takeWhile isDigit) _ <- lift $ char '}' case (minn, maxn) of- (Nothing, Nothing) -> mzero- (Just n, Nothing) -> return $! atleast n re- (Nothing, Just n) -> return $! atmost n re- (Just m, Just n) -> return $! between m n re- _ -> fail "pSuffix encountered impossible byte") >>=- lift . pQuantifierModifier+ _ | maybe False (> maxRepeat) minn ||+ maybe False (> maxRepeat) maxn+ -> mzero -- the unconsumed {..} then causes a+ -- parse error via pRegexChar, as in+ -- PCRE ("number too big in {}+ -- quantifier")+ (Nothing, Nothing) -> mzero -- {} and {,} are literal+ (Just n, Nothing) -> withModifier (atleast n re) (atleastLazy n re)+ (Nothing, Just n) -> withModifier (atmost n re) (atmostLazy n re)+ (Just m, Just n)+ | m > n -> mzero -- e.g. a{3,1}: the unconsumed {..}+ -- then causes a parse error via+ -- pRegexChar, as in PCRE ("numbers+ -- out of order in {} quantifier")+ | otherwise -> withModifier (between m n re)+ (betweenLazy m n re)+ _ -> fail "pSuffix encountered impossible byte" where- atmost 0 _ = MatchNull- atmost n r = MatchAlt (mconcat (replicate n r)) (atmost (n-1) r)+ -- A lazy quantifier prefers fewer repetitions, which is expressed+ -- by putting the empty alternative first; Lazy itself is only ever+ -- applied to MatchSome (the matcher relies on this). A possessive+ -- quantifier commits to the preferred match of the greedy version.+ -- In minimal (ungreedy) mode the roles of the bare quantifier and+ -- the ? modifier are swapped, as with PCRE's UNGREEDY option;+ -- possessive quantifiers are unaffected.+ withModifier :: Regex -> Regex -> RParser Regex+ withModifier greedy lazy = do+ minimal <- gets rsMinimal+ let (bare, questioned) = if minimal+ then (lazy, greedy)+ else (greedy, lazy)+ lift $ (Possessive greedy <$ char '+') <|> (questioned <$ char '?')+ <|> pure bare + -- repeat counts larger than this (the limit PCRE2 uses) are not+ -- treated as quantifiers:+ maxRepeat = 65535 :: Int++ -- nest the optional matches -- r(r(r)?)? -- so that the size of+ -- the compiled regex is linear, not quadratic, in n:+ atmost n r+ | n <= 0 = MatchNull+ | otherwise = MatchAlt (r <> atmost (n - 1) r) MatchNull++ atmostLazy n r+ | n <= 0 = MatchNull+ | otherwise = MatchAlt MatchNull (r <> atmostLazy (n - 1) r)+ between 0 n r = atmost n r between m n r = mconcat (replicate m r) <> atmost (n - m) r + betweenLazy 0 n r = atmostLazy n r+ betweenLazy m n r = mconcat (replicate m r) <> atmostLazy (n - m) r+ atleast n r = mconcat (replicate n r) <> MatchAlt (MatchSome r) MatchNull -pQuantifierModifier :: Regex -> Parser Regex-pQuantifierModifier re = option re $- (Possessive re <$ char '+') <|> (Lazy re <$ char '?')+ atleastLazy n r = mconcat (replicate n r) <>+ MatchAlt MatchNull (Lazy (MatchSome r)) pRegexChar :: RParser Regex pRegexChar = do@@ -165,52 +266,98 @@ Just !n -> return $ MatchDynamic n Nothing -> fail "not a number") <|> return (MatchChar (== '%'))- '\\' -> lift pRegexEscapedChar+ '\\' -> lift $ pRegexEscapedChar caseSensitive '$' -> return AssertEnd '^' -> return AssertBeginning- '[' -> lift pRegexCharClass+ '[' -> lift $ pRegexCharClass caseSensitive+ '{' -> do+ -- if this { begins a valid quantifier, there is nothing for it+ -- to repeat, which is a compile error in PCRE ("quantifier does+ -- not follow a repeatable item"); the same happens with a+ -- quantifier that pSuffix declined to consume (out-of-order or+ -- too-big repeat counts, which are also compile errors in PCRE):+ isQuantifier <- lift $ option False (True <$ pQuantifierShape)+ if isQuantifier+ then fail "quantifier does not follow a repeatable item"+ else return $ MatchChar (== '{') _ | isSpecial w -> mzero | otherwise -> return $! MatchChar $ if caseSensitive then (== w) else (\d -> toLower d == toLower w) -pRegexEscapedChar :: Parser Regex-pRegexEscapedChar = do+-- The forms {m}, {m,}, {m,n}, and {,n} are quantifiers (PCRE also+-- recognizes {,n} as of 10.43); anything else beginning with { --+-- e.g. {}, {,}, {b}, or an unclosed {2 -- is a sequence of literal+-- characters. Assumes the initial { has already been consumed.+pQuantifierShape :: Parser ()+pQuantifierShape = do+ _ <- (A.takeWhile1 isDigit <* option ',' (char ',' <* A.takeWhile isDigit))+ <|> (char ',' *> A.takeWhile1 isDigit)+ void $ char '}'++pRegexEscapedChar :: Bool -> Parser Regex+pRegexEscapedChar caseSensitive = do c <- A.anyChar (case c of 'b' -> return AssertWordBoundary 'B' -> return $ AssertNegative Forward AssertWordBoundary+ -- PCRE's \G asserts the position at which the match attempt+ -- started. Since matching is always anchored at the start of+ -- the input we are given, that is the same as AssertBeginning:+ 'G' -> return AssertBeginning+ -- PCRE's \A asserts the start of the subject. Since matching is+ -- always anchored at the start of the input we are given, that is+ -- also the same as AssertBeginning:+ 'A' -> return AssertBeginning '{' -> do -- captured pattern: \1 \2 \{12} ds <- many1 digit _ <- char '}' case readMay ds of- Just !n -> return $ MatchCaptured n+ Just !n -> return $ MatchCaptured n caseSensitive Nothing -> fail "not a number"+ 'g' -> do -- PCRE backreference syntax: \g1 \g{12}+ ds <- (char '{' *> many1 digit <* char '}') <|> many1 digit+ case readMay ds of+ Just !n -> return $ MatchCaptured n caseSensitive+ Nothing -> fail "not a number" 'd' -> return $ MatchChar isDigit 'D' -> return $ MatchChar (not . isDigit) 's' -> return $ MatchChar isSpace 'S' -> return $ MatchChar (not . isSpace)+ 'h' -> return $ MatchChar isHorizSpace+ 'H' -> return $ MatchChar (not . isHorizSpace) 'w' -> return $ MatchChar isWordChar 'W' -> return $ MatchChar (not . isWordChar) 'p' -> MatchChar <$> pUnicodeCharClass- _ | isDigit c ->- return $! MatchCaptured (ord c - ord '0')- | otherwise -> mzero) <|> (MatchChar . (==) <$> pEscaped c)+ 'P' -> MatchChar . (not .) <$> pUnicodeCharClass+ _ | isDigit c, c /= '0' -> -- \0 is an octal escape, not a backreference+ return $! MatchCaptured (ord c - ord '0') caseSensitive+ | otherwise -> mzero) <|> (matchLiteralChar <$> pEscaped c)+ where+ matchLiteralChar d = MatchChar $+ if caseSensitive+ then (== d)+ else \x -> toLower x == toLower d pEscaped :: Char -> Parser Char pEscaped c = case c of '\\' -> return c 'a' -> return '\a'+ -- \b means backspace inside a character class (outside one, it is+ -- a word boundary assertion handled by pRegexEscapedChar):+ 'b' -> return '\b' 'f' -> return '\f' 'n' -> return '\n' 'r' -> return '\r' 't' -> return '\t' 'v' -> return '\v'- '0' -> do -- \0ooo matches octal ooo- ds <- A.take 3- case readMay ("'\\o" ++ T.unpack ds ++ "'") of+ '0' -> do -- \0 followed by up to two octal digits (as in PCRE)+ ds <- A.scan (0 :: Int) (\s w -> if s < 2 && isOctDigit w+ then Just (s + 1)+ else Nothing)+ case readMay ("'\\o0" ++ T.unpack ds ++ "'") of Just x -> return x Nothing -> fail "invalid octal character escape" _ | c >= '1' && c <= '7' -> do@@ -236,8 +383,8 @@ _ | isPunctuation c || isSymbol c || isSpace c -> return c | otherwise -> fail $ "invalid escape \\" ++ [c] -pRegexCharClass :: Parser Regex-pRegexCharClass = do+pRegexCharClass :: Bool -> Parser Regex+pRegexCharClass caseSensitive = do negated <- option False $ True <$ char '^' let getEscapedClass = do _ <- char '\\'@@ -245,6 +392,8 @@ <|> (not . isDigit <$ char 'D') <|> (isSpace <$ char 's') <|> (not . isSpace <$ char 'S')+ <|> (isHorizSpace <$ char 'h')+ <|> (not . isHorizSpace <$ char 'H') <|> (isWordChar <$ char 'w') <|> (not . isWordChar <$ char 'W') let getPosixClass = do@@ -256,7 +405,8 @@ <|> ((\c -> isSpace c && c `notElem` ['\n','\r','\f','\v']) <$ string "blank") <|> (isControl <$ string "cntrl")- <|> ((\c -> isPrint c || isSpace c) <$ string "graph:")+ <|> (isDigit <$ string "digit")+ <|> ((\c -> isPrint c && not (isSpace c)) <$ string "graph") <|> (isLower <$ string "lower") <|> (isUpper <$ string "upper") <|> (isPrint <$ string "print")@@ -264,7 +414,7 @@ <|> (isSpace <$ string "space") <|> ((\c -> isAlphaNum c || generalCategory c == ConnectorPunctuation)- <$ string "word:")+ <$ string "word") <|> (isHexDigit <$ string "xdigit") _ <- string ":]" return $! if localNegated then not . res else res@@ -278,20 +428,36 @@ void $ A.string "\\Q" cs <- manyTill anyChar (A.string "\\E") return $! \c -> any (== c) cs- brack <- option [] $ [(==']')] <$ char ']'+ -- a ] in first position is a literal; it may also be the start of+ -- a range, as in []-a]:+ brack <- option [] $ do+ _ <- char ']'+ (do d <- char '-' *> getC+ return [\x -> x >= ']' && x <= d])+ <|> return [(== ']')] fs <- many (getQELiteral <|> getEscapedClass <|> getPosixClass <|> getCRange- <|> (A.string "\\p" *> pUnicodeCharClass))+ <|> (A.string "\\p" *> pUnicodeCharClass)+ <|> (A.string "\\P" *> ((not .) <$> pUnicodeCharClass))) void $ char ']' let f c = any ($ c) $ brack ++ fs+ -- for case-insensitive matching, a character matches (or, if+ -- negated, is excluded) if any of its case variants matches:+ let f' c | caseSensitive = f c+ | otherwise = f c || f (toLower c) || f (toUpper c) return $! MatchChar $ if negated- then not . f- else f+ then not . f'+ else f' --- character class \p{Lo}; we assume \p is already parsed+-- character class \p{Lo}, \p{^Lo}, or \pL; we assume \p is already+-- parsed pUnicodeCharClass :: Parser (Char -> Bool) pUnicodeCharClass = do- ds <- char '{' *> A.takeWhile (/= '}') <* char '}'- return $+ (negated, ds) <-+ (char '{' *> ((,) <$> option False (True <$ char '^')+ <*> (A.takeWhile (/= '}') <* char '}')))+ <|> ((,) False . T.singleton <$> satisfy isAlpha)+ let neg = if negated then (not .) else id+ return $ neg $ (case ds of "Lu" -> (== UppercaseLetter) "Ll" -> (== LowercaseLetter)@@ -343,6 +509,14 @@ _ -> const False) . generalCategory +-- PCRE's \h matches this fixed list of horizontal whitespace+-- characters (which is not the same as Unicode category Zs):+isHorizSpace :: Char -> Bool+isHorizSpace c =+ c == '\t' || c == ' ' || c == '\xA0' || c == '\x1680' || c == '\x180E' ||+ (c >= '\x2000' && c <= '\x200A') || c == '\x202F' || c == '\x205F' ||+ c == '\x3000'+ isSpecial :: Char -> Bool isSpecial '\\' = True isSpecial '?' = True@@ -350,7 +524,9 @@ isSpecial '+' = True -- isSpecial '{' = True -- this is okay except in suffixes isSpecial '[' = True-isSpecial ']' = True+-- an unmatched ] is treated as a literal (as in PCRE), so it is+-- not included here; the ] terminating a character class is consumed+-- by pRegexCharClass: isSpecial '%' = True isSpecial '(' = True isSpecial ')' = True
src/Regex/KDE/Match.hs view
@@ -5,13 +5,18 @@ {-# LANGUAGE BinaryLiterals #-} module Regex.KDE.Match ( matchRegex+ , matchRegexWithGroups+ , extractCapturingGroups ) where import qualified Data.ByteString as B import Data.ByteString (ByteString) import qualified Data.ByteString.UTF8 as U+import Data.Char (toLower) import qualified Data.Set as Set import Data.Set (Set)+import Data.Bits (shiftL, (.|.))+import Data.Word (Word8) import Regex.KDE.Regex import qualified Data.IntMap.Strict as M #if !MIN_VERSION_base(4,11,0)@@ -21,20 +26,72 @@ -- Note that all matches are from the beginning of the string. -- The ^ anchor is implicit at the beginning of the regex. +-- To reproduce PCRE's leftmost-first (backtracking) semantics in a+-- set-based matcher, every match carries a path recording the choices+-- made to reach it: 0 for taking the left branch of an alternation or+-- continuing a greedy repetition, 1 for the right branch or ending+-- the repetition (for lazy repetitions the loop codes are reversed).+-- Comparing paths lexicographically gives the order in which a+-- backtracking matcher like PCRE would find the matches, so the+-- preferred match is always the one with the smallest path.++-- A sequence of binary choices, packed into an Integer (most recent+-- choice in the least significant bit) together with its length.+-- Compared lexicographically as a bit sequence, with a proper prefix+-- ordered before its extensions.+data Path = Path !Integer !Int+ deriving (Show, Eq)++instance Ord Path where+ compare (Path i1 l1) (Path i2 l2) =+ compare (i1 `shiftL` max 0 (l2 - l1)) (i2 `shiftL` max 0 (l1 - l2))+ <> compare l1 l2++emptyPath :: Path+emptyPath = Path 0 0++pathSnoc :: Path -> Word8 -> Path+pathSnoc (Path i l) b = Path ((i `shiftL` 1) .|. fromIntegral b) (l + 1)+ data Match = Match { matchBytes :: !ByteString , matchOffset :: !Int , matchCaptures :: !(M.IntMap (Int, Int)) -- starting offset, length in bytes- } deriving (Show, Eq)+ , matchPath :: !Path+ } deriving (Show) --- preferred matches are <=+-- consistent with Ord (which ignores matchBytes, since all matches+-- in a given run share it):+instance Eq Match where+ m1 == m2 = compare m1 m2 == EQ++-- preferred matches are <=; the path (priority) is decisive, and the+-- other comparisons only make the order total: instance Ord Match where- m1 <= m2- | matchOffset m1 > matchOffset m2 = True- | matchOffset m1 < matchOffset m2 = False- | otherwise = matchCaptures m1 >= matchCaptures m2+ compare m1 m2 =+ compare (matchPath m1) (matchPath m2) <>+ compare (matchOffset m1) (matchOffset m2) <>+ compare (matchCaptures m1) (matchCaptures m2) +-- the state of a match, disregarding its priority+stateKey :: Match -> (Int, M.IntMap (Int, Int))+stateKey m = (matchOffset m, matchCaptures m)++-- append a choice to the path of every match+addChoice :: Word8 -> Set Match -> Set Match+addChoice !b = Set.map (\m -> m{ matchPath = pathSnoc (matchPath m) b })++-- Discard any match whose state coincides with that of a preferred+-- (smaller-path) match: their futures are identical, and a+-- backtracking matcher would explore the preferred one first.+dedup :: Set Match -> Set Match+dedup = snd . Set.foldl' step (Set.empty, Set.empty)+ where+ step (!seen, !out) m+ | stateKey m `Set.member` seen = (seen, out)+ | otherwise = (Set.insert (stateKey m) seen, Set.insert m out)+ mapMatching :: (Match -> Match) -> Set Match -> Set Match mapMatching f = Set.filter ((>= 0) . matchOffset) . Set.map f @@ -42,22 +99,28 @@ sizeLimit :: Int sizeLimit = 2000 --- prune matches if it gets out of hand+-- prune matches if it gets out of hand, keeping preferred matches prune :: Set Match -> Set Match prune ms = if Set.size ms > sizeLimit then Set.take sizeLimit ms else ms --- first argument is a map of capturing groups, needed for Subroutine.-exec :: M.IntMap Regex -> Direction -> Regex -> Set Match -> Set Match+-- first argument: the set of subroutine calls (group number, offset)+-- currently being evaluated -- used to prevent infinite recursion --+-- and a map of capturing groups, needed for Subroutine.+exec :: (Set (Int, Int), M.IntMap Regex)+ -> Direction -> Regex -> Set Match -> Set Match exec _ _ MatchNull = id-exec cgs dir (Lazy re) = -- note: the action is below under Concat- exec cgs dir (MatchConcat (Lazy re) MatchNull)+exec cgs dir (Lazy (MatchSome re)) = someLoop cgs dir re 1 0+exec cgs dir (Lazy re) = -- Lazy is only applied to MatchSome (see Compile)+ exec cgs dir re exec cgs dir (Possessive re) =- foldr- (\elt s -> case Set.lookupMin (exec cgs dir re (Set.singleton elt)) of- Nothing -> s- Just m -> Set.insert m s)+ -- commit to the first match (in backtracking order) of re; its+ -- internal choices are forgotten, so the path is reset:+ Set.foldl'+ (\s m -> case Set.lookupMin (exec cgs dir re (Set.singleton m)) of+ Nothing -> s+ Just m' -> Set.insert m'{ matchPath = matchPath m } s) mempty exec cgs dir (MatchDynamic n) = -- if this hasn't been replaced, match literal exec cgs dir (MatchChar (== '%') <>@@ -65,11 +128,16 @@ exec _ _ AssertEnd = Set.filter (\m -> matchOffset m == B.length (matchBytes m)) exec _ _ AssertBeginning = Set.filter (\m -> matchOffset m == 0) exec cgs _ (AssertPositive dir regex) =- Set.unions . Set.map- (\m -> Set.map (\m' -> -- we keep captures but not matches- m'{ matchBytes = matchBytes m,- matchOffset = matchOffset m })- $ exec cgs dir regex (Set.singleton m))+ -- assertions are atomic: only the captures of the first match (in+ -- backtracking order) of the assertion are kept, as in PCRE:+ Set.foldl'+ (\s m -> case Set.lookupMin (exec cgs dir regex (Set.singleton m)) of+ Nothing -> s+ Just m' -> Set.insert+ m'{ matchBytes = matchBytes m+ , matchOffset = matchOffset m+ , matchPath = matchPath m } s)+ mempty exec cgs _ (AssertNegative dir regex) = Set.filter (\m -> null (exec cgs dir regex (Set.singleton m))) exec _ _ AssertWordBoundary = Set.filter atWordBoundary@@ -94,22 +162,7 @@ _ -> m{ matchOffset = -1 } exec cgs dir (MatchConcat (MatchConcat r1 r2) r3) = exec cgs dir (MatchConcat r1 (MatchConcat r2 r3))-exec cgs Forward (MatchConcat (Lazy r1) r2) =- Set.foldl Set.union mempty . Set.map- (\m ->- let ms1 = exec cgs Forward r1 (Set.singleton m)- in if Set.null ms1- then ms1- else go ms1)- where- go ms = case Set.lookupMax ms of -- find shortest match- Nothing -> Set.empty- Just m' ->- let s' = exec cgs Forward r2 (Set.singleton m')- in if Set.null s'- then go (Set.delete m' ms)- else s'-exec cgs Forward (MatchConcat r1 r2) = -- TODO longest match first+exec cgs Forward (MatchConcat r1 r2) = \ms -> let ms1 = exec cgs Forward r1 ms in if Set.null ms1@@ -117,14 +170,9 @@ else exec cgs Forward r2 (prune ms1) exec cgs Backward (MatchConcat r1 r2) = exec cgs Backward r1 . exec cgs Backward r2-exec cgs dir (MatchAlt r1 r2) = \ms -> exec cgs dir r1 ms <> exec cgs dir r2 ms-exec cgs dir (MatchSome re) = go- where- go ms = case exec cgs dir re ms of- ms' | Set.null ms' -> Set.empty- | ms' == ms -> ms- | otherwise -> let ms'' = prune ms'- in ms'' <> go ms''+exec cgs dir (MatchAlt r1 r2) = \ms ->+ dedup $ exec cgs dir r1 (addChoice 0 ms) <> exec cgs dir r2 (addChoice 1 ms)+exec cgs dir (MatchSome re) = someLoop cgs dir re 0 1 exec cgs dir (MatchCapture i re) = Set.foldr Set.union Set.empty . Set.map (\m ->@@ -134,26 +182,69 @@ let len = matchOffset m' - matchOffset m in m'{ matchCaptures = M.insert i (matchOffset m, len) (matchCaptures m') }-exec _ dir (MatchCaptured n) = mapMatching matchCaptured+exec _ dir (MatchCaptured n caseSensitive) = mapMatching matchCaptured where matchCaptured m = case M.lookup n (matchCaptures m) of Just (offset, len) -> let capture = B.take len $ B.drop offset $ matchBytes m in case dir of- Forward | B.isPrefixOf capture- (B.drop (matchOffset m) (matchBytes m))+ Forward+ | caseSensitive+ , B.isPrefixOf capture+ (B.drop (matchOffset m) (matchBytes m)) -> m{ matchOffset = matchOffset m + B.length capture }- Backward | B.isSuffixOf capture- (B.take (matchOffset m) (matchBytes m))+ | not caseSensitive+ , Just len' <- ciPrefixLength (U.toString capture)+ (B.drop (matchOffset m) (matchBytes m))+ -> m{ matchOffset = matchOffset m + len' }+ Backward+ | caseSensitive+ , B.isSuffixOf capture+ (B.take (matchOffset m) (matchBytes m)) -> m{ matchOffset = matchOffset m - B.length capture }+ | not caseSensitive+ , Just off' <- ciSuffixOffset+ (reverse (U.toString capture))+ (matchBytes m) (matchOffset m)+ -> m{ matchOffset = off' } _ -> m{ matchOffset = -1 } Nothing -> m{ matchOffset = -1 }-exec cgs dir (Subroutine i) =+exec (active, cgs) dir (Subroutine i) = case M.lookup i cgs of Nothing -> id -- ignore references to nonexistent groups- Just re' -> exec cgs dir re'+ Just re' -> \ms ->+ -- A subroutine that calls itself again without having consumed+ -- any input can never make progress: block re-entry at the same+ -- offset so that zero-progress recursion (e.g. `x|(?R)`) fails+ -- instead of looping forever.+ dedup $ Set.unions+ [ exec (Set.insert (i, matchOffset m) active, cgs) dir re'+ (Set.singleton m)+ | m <- Set.toList ms+ , (i, matchOffset m) `Set.notMember` active ] +-- Match one or more repetitions of a regex. contB is the path code+-- appended when continuing with another repetition, stopB the one+-- appended when stopping: 0/1 for greedy, 1/0 for lazy repetitions,+-- so that the paths order the results the way a backtracking matcher+-- would find them.+someLoop :: (Set (Int, Int), M.IntMap Regex) -> Direction -> Regex+ -> Word8 -> Word8 -> Set Match -> Set Match+someLoop cgs dir re !contB !stopB = \ms0 ->+ let ms1 = dedup $ exec cgs dir re ms0 -- first, obligatory repetition+ in go (Set.map stateKey ms1) ms1+ where+ go !seen ms+ | Set.null ms = Set.empty+ | otherwise =+ let ms' = dedup $ prune $ exec cgs dir re (addChoice contB ms)+ -- Drop matches that revisit an already-seen state: they+ -- have no new futures, and this guarantees termination+ -- when an iteration can match the empty string.+ new = Set.filter (\m -> stateKey m `Set.notMember` seen) ms'+ in addChoice stopB ms <> go (seen <> Set.map stateKey new) new+ atWordBoundary :: Match -> Bool atWordBoundary m = case lastCharOffset (matchBytes m) (matchOffset m) of@@ -163,46 +254,86 @@ (cur:next:_) -> isWordChar cur /= isWordChar next _ -> True +-- If the characters of the first argument match the beginning of the+-- bytestring case-insensitively, return the length in bytes of the+-- matching prefix.+ciPrefixLength :: String -> ByteString -> Maybe Int+ciPrefixLength [] _ = Just 0+ciPrefixLength (c:cs) bs =+ case U.decode bs of+ Just (d, n) | toLower d == toLower c ->+ (n +) <$> ciPrefixLength cs (B.drop n bs)+ _ -> Nothing++-- If the characters of the first argument (reversed) match the+-- characters just before the given offset case-insensitively, return+-- the offset at which the match begins.+ciSuffixOffset :: String -> ByteString -> Int -> Maybe Int+ciSuffixOffset [] _ off = Just off+ciSuffixOffset (c:cs) bs off =+ case lastCharOffset bs off of+ Just off' | Just (d, _) <- U.decode (B.drop off' bs)+ , toLower d == toLower c -> ciSuffixOffset cs bs off'+ _ -> Nothing++-- Return the offset of the start of the (UTF-8 encoded) character+-- that ends at (i.e., whose last byte is just before) offset n. lastCharOffset :: ByteString -> Int -> Maybe Int lastCharOffset _ 0 = Nothing-lastCharOffset _ 1 = Just 0-lastCharOffset bs n =- case B.index bs (n - 2) of- w | w < 0b10000000 -> Just (n - 1)- | w >= 0b11000000 -> Just (n - 1)- | otherwise -> lastCharOffset bs (n - 1)+lastCharOffset bs n = go (n - 1)+ where+ go !k+ | k <= 0 = Just 0+ | isContinuationByte (B.index bs k) = go (k - 1)+ | otherwise = Just k+ isContinuationByte w = w >= 0b10000000 && w < 0b11000000 -- | Match a Regex against a (presumed UTF-8 encoded) ByteString, -- returning the matched text and a map of (offset, size) -- pairs for captures. Note that all matches are from the--- beginning of the string (a @^@ anchor is implicit). Note--- also that to avoid pathological performance in certain cases,--- the matcher is limited to considering 2000 possible matches--- at a time; when that threshold is reached, it discards--- smaller matches. Hence certain regexes may incorrectly fail to--- match: e.g. @a*a{3000}$@ on a string of 3000 @a@s.+-- beginning of the string (a @^@ anchor is implicit). As in+-- PCRE, the match returned is the first one that a backtracking+-- matcher would find (leftmost alternatives are preferred), which+-- is not necessarily the longest. Note also that to avoid+-- pathological performance in certain cases, the matcher is limited+-- to considering 2000 possible matches at a time; when that+-- threshold is reached, it discards lower-priority matches. Hence+-- certain regexes may incorrectly fail to match: e.g. @a*a{3000}$@+-- on a string of 3000 @a@s. matchRegex :: Regex -> ByteString -> Maybe (ByteString, M.IntMap (Int, Int))-matchRegex re bs =- let capturingGroups = extractCapturingGroups re- in toResult <$> Set.lookupMin- (exec capturingGroups Forward re- (Set.singleton (Match bs 0 M.empty)))+matchRegex re = matchRegexWithGroups (extractCapturingGroups re) re++-- | Like 'matchRegex', but takes the map of capturing groups (as+-- computed by 'extractCapturingGroups') as an argument, so that it+-- can be computed once per regex instead of once per match. (The+-- map is only consulted for regexes containing subroutine calls+-- like @(?1)@ or @(?R)@.)+matchRegexWithGroups :: M.IntMap Regex+ -> Regex+ -> ByteString+ -> Maybe (ByteString, M.IntMap (Int, Int))+matchRegexWithGroups capturingGroups re bs =+ toResult <$> Set.lookupMin+ (exec (Set.empty, capturingGroups) Forward re+ (Set.singleton (Match bs 0 M.empty emptyPath))) where toResult m = (B.take (matchOffset m) (matchBytes m), (matchCaptures m)) +-- | Extract the capturing groups of a regex, numbered as in the+-- regex, with the whole regex at key 0. extractCapturingGroups :: Regex -> M.IntMap Regex-extractCapturingGroups regex = M.singleton 0 regex <>- case regex of- MatchSome re -> extractCapturingGroups re- MatchAlt re1 re2 ->- extractCapturingGroups re1 <> extractCapturingGroups re2- MatchConcat re1 re2 ->- extractCapturingGroups re1 <> extractCapturingGroups re2- MatchCapture i re -> M.singleton i re- AssertPositive _ re -> extractCapturingGroups re- AssertNegative _ re -> extractCapturingGroups re- Possessive re -> extractCapturingGroups re- Lazy re -> extractCapturingGroups re- _ -> mempty+extractCapturingGroups regex = M.insert 0 regex (go regex)+ where+ -- Note: left-biased union means that with (?|...), which reuses+ -- group numbers, the first alternative's group wins.+ go (MatchSome re) = go re+ go (MatchAlt re1 re2) = go re1 <> go re2+ go (MatchConcat re1 re2) = go re1 <> go re2+ go (MatchCapture i re) = M.insert i re (go re)+ go (AssertPositive _ re) = go re+ go (AssertNegative _ re) = go re+ go (Possessive re) = go re+ go (Lazy re) = go re+ go _ = mempty
src/Regex/KDE/Regex.hs view
@@ -22,7 +22,7 @@ MatchAlt !Regex !Regex | MatchConcat !Regex !Regex | MatchCapture !Int !Regex |- MatchCaptured !Int |+ MatchCaptured !Int !Bool | -- group number, case sensitivity AssertWordBoundary | AssertBeginning | AssertEnd |@@ -43,7 +43,8 @@ ")" show (MatchCapture i re) = "(MatchCapture " <> show i <> " " <> show re <> ")"- show (MatchCaptured n) = "(MatchCaptured " <> show n <> ")"+ show (MatchCaptured n cs) = "(MatchCaptured " <> show n <> " " <>+ show cs <> ")" show AssertWordBoundary = "AssertWordBoundary" show AssertBeginning = "AssertBeginning" show AssertEnd = "AssertEnd"
src/Skylighting/Core.hs view
@@ -39,13 +39,17 @@ -- | Lookup a syntax by full name (case insensitive). syntaxByName :: SyntaxMap -> Text -> Maybe Syntax syntaxByName syntaxmap name =- Map.lookup (Text.toLower name) (Map.mapKeys Text.toLower syntaxmap)+ Map.lookup name syntaxmap `mplus` -- fast path for exact match+ listToMaybe [s | (k, s) <- Map.toList syntaxmap+ , Text.toLower k == lcname ]+ where lcname = Text.toLower name -- | Lookup a syntax by short name (case insensitive). syntaxByShortName :: SyntaxMap -> Text -> Maybe Syntax syntaxByShortName syntaxmap name = listToMaybe [s | s <- Map.elems syntaxmap- , Text.toLower (sShortname s) == Text.toLower name ]+ , Text.toLower (sShortname s) == lcname ]+ where lcname = Text.toLower name -- | Lookup syntax by (in order) full name (case insensitive), -- short name (case insensitive), extension.
src/Skylighting/Loader.hs view
@@ -64,7 +64,9 @@ -- SyntaxMap will be made up of only the files that could successfully be loaded -- and parsed. loadValidSyntaxesFromDir :: FilePath -> IO (LoadErrMap, SyntaxMap)-loadValidSyntaxesFromDir path = foldM go (mempty, mempty) =<< syntaxFiles path+loadValidSyntaxesFromDir path = do+ (errMap, sm) <- foldM go (mempty, mempty) =<< syntaxFiles path+ return (errMap, M.map (resolveKeywords sm) sm) where go (errMap, syntaxMap) file = loadSyntaxFromFile file >>= \case
src/Skylighting/Parser.hs view
@@ -80,7 +80,10 @@ _ -> defaultVal -- | Parses a file containing a Kate XML syntax definition--- into a 'Syntax' description.+-- into a 'Syntax' description. Note that the resulting 'Syntax'+-- must be processed with 'resolveKeywords' (once the full syntax+-- map is assembled) before it can be used for tokenizing; the+-- functions in Skylighting.Loader do this automatically. parseSyntaxDefinition :: FilePath -> IO (Either String Syntax) parseSyntaxDefinition fp = do bs <- BL.readFile fp@@ -146,7 +149,7 @@ let itemDatas = getItemData hlEl - let defKeywordAttr = getKeywordAttrs rootEl+ let defKeywordAttr = getKeywordAttrs casesensitive rootEl let contextEls = getElementsNamed "contexts" hlEl >>= getElementsNamed "context"@@ -154,7 +157,7 @@ let syntaxname = getAttrValue "name" rootEl contexts <- mapM- (getContext casesensitive syntaxname itemDatas lists defKeywordAttr)+ (getContext syntaxname itemDatas lists defKeywordAttr) contextEls startingContext <- case contexts of@@ -216,24 +219,35 @@ | otherwise -> (T.drop 2 y, x) getParser :: Monad m- => Bool -> Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr+ => Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr -> Text -> Element -> ExceptT String m Rule-getParser casesensitive syntaxname itemdatas lists kwattr cattr el = do+getParser syntaxname itemdatas lists kwattr cattr el = do let name = nameLocalName . elementName $ el let attribute = getAttrValue "attribute" el let context = getAttrValue "context" el let char0 = readChar $ getAttrValue "char" el let char1 = readChar $ getAttrValue "char1" el let str' = getAttrValue "String" el- let insensitive = vBool (not casesensitive) $ getAttrValue "insensitive" el+ -- rules default to case-sensitive matching; the language's+ -- casesensitive attribute applies only to keyword lists (as in KDE):+ let insensitive = vBool False $ getAttrValue "insensitive" el let includeAttrib = vBool False $ getAttrValue "includeAttrib" el let weakDelim = Set.fromList $ T.unpack $ getAttrValue "weakDeliminator" el+ let additionalDelim = Set.fromList $ T.unpack $+ getAttrValue "additionalDeliminator" el+ -- In KDE the word delimiters of a rule are the language's word+ -- delimiters (standard delimiters as modified by additionalDeliminator+ -- and weakDeliminator on general > keywords, which we get from+ -- kwattr), further modified by the additionalDeliminator and+ -- weakDeliminator attributes on the rule itself:+ let ruleDelims = Set.union (keywordDelims kwattr) additionalDelim+ Set.\\ weakDelim let lookahead = vBool False $ getAttrValue "lookAhead" el let firstNonSpace = vBool False $ getAttrValue "firstNonSpace" el let column' = getAttrValue "column" el let dynamic = vBool False $ getAttrValue "dynamic" el- children <- mapM (getParser casesensitive- syntaxname itemdatas lists kwattr attribute)+ let minimal = vBool False $ getAttrValue "minimal" el+ children <- mapM (getParser syntaxname itemdatas lists kwattr attribute) [e | NodeElement e <- elementNodes el ] let tildeRegex = name == "RegExpr" && T.take 1 str' == "^" let str = if tildeRegex then T.drop 1 str' else str'@@ -242,11 +256,13 @@ else either (\_ -> Nothing) (Just . fst) $ TR.decimal column' let re = RegExpr RE{ reString = TE.encodeUtf8 str- , reCaseSensitive = not insensitive }+ , reCaseSensitive = not insensitive+ , reMinimal = minimal }+ let contextSwitches = parseContextSwitches syntaxname context let (incsyntax, inccontext) =- case T.breakOn "##" context of- (_,x) | T.null x -> (syntaxname, context)- (cont, lang) -> (T.drop 2 lang, cont)+ case contextSwitches of+ (Push (s,c) : _) -> (s,c)+ _ -> error "IncludeRules doesn't specify a syntax and context" matcher <- case name of "DetectChar" -> return $ DetectChar char0 "Detect2Chars" -> return $ Detect2Chars char0 char1@@ -255,34 +271,50 @@ "StringDetect" -> return $ StringDetect str "WordDetect" -> return $ WordDetect str "RegExpr" -> return $ re- "keyword" -> return $ Keyword kwattr (Left str)+ -- an insensitive attribute on the keyword rule itself+ -- (if present) overrides the case sensitivity of the+ -- keyword list, and additionalDeliminator and+ -- weakDeliminator attributes adjust its delimiters+ -- (as in KDE):+ "keyword" -> return $+ let kwattr' = if M.member (String.fromString "insensitive")+ (elementAttributes el)+ then kwattr{ keywordCaseSensitive =+ not insensitive }+ else kwattr+ in Keyword kwattr'{ keywordDelims = ruleDelims }+ (Left str) "Int" -> return $ Int "Float" -> return $ Float "HlCOct" -> return $ HlCOct "HlCHex" -> return $ HlCHex "HlCStringChar" -> return $ HlCStringChar "HlCChar" -> return $ HlCChar- "LineContinue" -> return $ LineContinue+ -- KDE uses the first character of the char attribute,+ -- or backslash if it is absent or empty:+ "LineContinue" -> return $ LineContinue $+ case T.uncons (getAttrValue "char" el) of+ Just (c, _) -> c+ Nothing -> '\\' "IncludeRules" -> return $ IncludeRules (incsyntax, inccontext) "DetectSpaces" -> return $ DetectSpaces "DetectIdentifier" -> return $ DetectIdentifier _ -> throwError $ "Unknown element " ++ T.unpack name - let contextSwitch = if name == "IncludeRules"- then [] -- is this right?- else parseContextSwitch incsyntax inccontext return $ Rule{ rMatcher = matcher , rAttribute = fromMaybe NormalTok $ if T.null attribute then M.lookup cattr itemdatas else M.lookup attribute itemdatas , rIncludeAttribute = includeAttrib- , rWeakDeliminators = weakDelim+ , rWordDelimiters = ruleDelims , rDynamic = dynamic , rCaseSensitive = not insensitive , rChildren = children- , rContextSwitch = contextSwitch+ , rContextSwitch = if name == "IncludeRules"+ then []+ else contextSwitches , rLookahead = lookahead , rFirstNonspace = firstNonSpace , rColumn = column@@ -290,25 +322,22 @@ getContext :: Monad m- => Bool- -> Text+ => Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr -> Element -> ExceptT String m Context-getContext casesensitive syntaxname itemDatas lists kwattr el = do+getContext syntaxname itemDatas lists kwattr el = do let name = getAttrValue "name" el let attribute = getAttrValue "attribute" el let lineEmptyContext = getAttrValue "lineEmptyContext" el let lineEndContext = getAttrValue "lineEndContext" el- let lineBeginContext = getAttrValue "lineBeginContext" el let fallthrough = vBool False $ getAttrValue "fallthrough" el let fallthroughContext = getAttrValue "fallthroughContext" el let dynamic = vBool False $ getAttrValue "dynamic" el - parsers <- mapM (getParser casesensitive- syntaxname itemDatas lists kwattr attribute)+ parsers <- mapM (getParser syntaxname itemDatas lists kwattr attribute) [e | NodeElement e <- elementNodes el ] return $ Context {@@ -316,15 +345,19 @@ , cSyntax = syntaxname , cRules = parsers , cAttribute = fromMaybe NormalTok $ M.lookup attribute itemDatas+ -- lineEmptyContext defaults to lineEndContext when it is+ -- unspecified or #stay; this avoids skipping empty lines+ -- after a line continuation character (KDE context.cpp,+ -- Context::resolveContexts, see kde bug 405903): , cLineEmptyContext =- parseContextSwitch syntaxname lineEmptyContext+ case parseContextSwitches syntaxname lineEmptyContext of+ [] -> parseContextSwitches syntaxname lineEndContext+ cs -> cs , cLineEndContext =- parseContextSwitch syntaxname lineEndContext- , cLineBeginContext =- parseContextSwitch syntaxname lineBeginContext+ parseContextSwitches syntaxname lineEndContext , cFallthrough = fallthrough , cFallthroughContext =- parseContextSwitch syntaxname fallthroughContext+ parseContextSwitches syntaxname fallthroughContext , cDynamic = dynamic } @@ -334,33 +367,41 @@ | e <- (getElementsNamed "itemDatas" el >>= getElementsNamed "itemData") ] -getKeywordAttrs :: Element -> KeywordAttr-getKeywordAttrs el =+-- The default case sensitivity of keyword lists is given by the+-- casesensitive attribute on the language element, and may be+-- overridden by the casesensitive attribute on general > keywords:+getKeywordAttrs :: Bool -> Element -> KeywordAttr+getKeywordAttrs casesensitive el = case (getElementsNamed "general" el >>= getElementsNamed "keywords") of- [] -> defaultKeywordAttr+ [] -> defaultKeywordAttr{ keywordCaseSensitive = casesensitive } (x:_) -> let weakDelim = T.unpack $ getAttrValue "weakDeliminator" x additionalDelim = T.unpack $ getAttrValue "additionalDeliminator" x in KeywordAttr { keywordCaseSensitive =- vBool True $ getAttrValue "casesensitive" x+ vBool casesensitive $ getAttrValue "casesensitive" x , keywordDelims = Set.union standardDelims (Set.fromList additionalDelim) Set.\\ Set.fromList weakDelim } -parseContextSwitch :: Text -> Text -> [ContextSwitch]-parseContextSwitch syntaxname t =+parseContextSwitches :: Text -> Text -> [ContextSwitch]+parseContextSwitches syntaxname t = if T.null t || t == "#stay" then [] else case T.stripPrefix "#pop" t of- Just rest -> Pop : parseContextSwitch syntaxname rest- Nothing ->- let (othersyntax, contextname) =- splitContext (T.dropWhile (=='!') t)- syntaxname' = if T.null othersyntax- then syntaxname- else othersyntax- in [Push (syntaxname', contextname)]+ Just rest ->+ Pop : parseContextSwitches syntaxname rest+ Nothing ->+ -- a sequence of contexts separated by !; in+ -- A!B!C, C is the top of the stack.+ let cs = filter (not . T.null) $ T.split (== '!') t+ toContext x =+ let (othersyntax, contextname) = splitContext x+ syntaxname' = if T.null othersyntax+ then syntaxname+ else othersyntax+ in (syntaxname', contextname)+ in map (Push . toContext) cs type ItemData = M.Map Text TokenType
src/Skylighting/Regex.hs view
@@ -8,10 +8,11 @@ module Skylighting.Regex ( Regex(..) , RE- , pattern RE, reCaseSensitive, reString+ , pattern RE, reCaseSensitive, reMinimal, reString , compileRE , compileRegex , matchRegex+ , matchRegexWithGroups , testRegex , isWordChar ) where@@ -21,6 +22,7 @@ import qualified Data.ByteString.Base64 as Base64 import qualified Data.ByteString.Char8 as BS import Data.Data+import qualified Data.IntMap.Strict as M import qualified Data.Text as Text import qualified Data.Text.Encoding as TE #if !MIN_VERSION_base(4,13,0)@@ -34,25 +36,33 @@ data RE = RE'{ _reString :: BS.ByteString , _reCaseSensitive :: Bool- , _reCompiled :: Either String Regex+ , _reMinimal :: Bool+ , _reCompiled :: Either String (Regex, M.IntMap Regex) } deriving Typeable --- We define a smart constructor which also holds the compiled regex, to avoid--- recompiling each time we tokenize.+-- We define a smart constructor which also holds the compiled regex+-- and its capturing groups, to avoid recomputing them each time we+-- tokenize. {-# COMPLETE RE #-}-pattern RE :: BS.ByteString -> Bool -> RE-pattern RE {reString, reCaseSensitive} <- RE' reString reCaseSensitive _ where- RE str caseSensitive = RE' str caseSensitive (compileRegex caseSensitive str)+pattern RE :: BS.ByteString -> Bool -> Bool -> RE+pattern RE {reString, reCaseSensitive, reMinimal} <-+ RE' reString reCaseSensitive reMinimal _ where+ RE str caseSensitive minimal =+ RE' str caseSensitive minimal+ (fmap (\r -> (r, extractCapturingGroups r))+ (compileRegex caseSensitive minimal str)) -- Unfortunately this means we need to derive all the instances ourselves. instance Show RE where- showsPrec d (RE str caseSensitive) = showParen (d > 10) - $ showString "RE {reString = " + showsPrec d (RE str caseSensitive minimal) = showParen (d > 10)+ $ showString "RE {reString = " . showsPrec 11 str . showString ", reCaseSensitive = " . showsPrec 11 caseSensitive+ . showString ", reMinimal = "+ . showsPrec 11 minimal . showString "}" instance Read RE where@@ -66,11 +76,15 @@ Ident "reCaseSensitive" <- lexP Punc "=" <- lexP caseSensitive <- readPrec+ Punc "," <- lexP+ Ident "reMinimal" <- lexP+ Punc "=" <- lexP+ minimal <- readPrec Punc "}" <- lexP- pure (RE str caseSensitive)+ pure (RE str caseSensitive minimal) -toComparisonKey :: RE -> (BS.ByteString, Bool)-toComparisonKey (RE x y) = (x, y)+toComparisonKey :: RE -> (BS.ByteString, Bool, Bool)+toComparisonKey (RE x y z) = (x, y, z) instance Eq RE where x == y = toComparisonKey x == toComparisonKey y@@ -84,22 +98,24 @@ tyRE = mkDataType "Skylighting.Regex.RE" [conRE] instance Data RE where- gfoldl k z (RE s c) = z RE `k` s `k` c- gunfold k z _ = k (k (z RE))+ gfoldl k z (RE s c m) = z RE `k` s `k` c `k` m+ gunfold k z _ = k (k (k (z RE))) toConstr _ = conRE dataTypeOf _ = tyRE instance Binary RE where- put (RE x y) = put x >> put y- get = RE <$> get <*> get+ put (RE x y z) = put x >> put y >> put z+ get = RE <$> get <*> get <*> get instance ToJSON RE where toJSON re = object [ "reString" .= encodeToText (reString re)- , "reCaseSensitive" .= reCaseSensitive re ]+ , "reCaseSensitive" .= reCaseSensitive re+ , "reMinimal" .= reMinimal re ] instance FromJSON RE where parseJSON = withObject "RE" $ \v -> RE <$> ((v .: "reString") >>= decodeFromText) <*> v .: "reCaseSensitive"+ <*> v .:? "reMinimal" .!= False -- functions to marshall bytestrings to text @@ -109,5 +125,7 @@ decodeFromText :: (Monad m, MonadFail m) => Text.Text -> m BS.ByteString decodeFromText = either fail return . Base64.decode . TE.encodeUtf8 -compileRE :: RE -> Either String Regex+-- | The compiled regex and its capturing groups (cached in the+-- 'RE' by the smart constructor).+compileRE :: RE -> Either String (Regex, M.IntMap Regex) compileRE = _reCompiled
src/Skylighting/Tokenizer.hs view
@@ -34,7 +34,6 @@ 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@@ -56,6 +55,9 @@ , column :: Int , lineContinuation :: Bool , firstNonspaceColumn :: Maybe Int+ , loopCounter :: Int+ -- ^ number of consecutive rule-matching iterations without+ -- consuming any input; used to guard against endless loops } -- | Configuration options for 'tokenize'.@@ -137,20 +139,23 @@ z -> z) -- | Tokenize some text using 'Syntax'.+-- Note that the syntax definitions are assumed to have their+-- keyword lists already resolved into word sets (as is the case+-- for the bundled syntax definitions and for definitions loaded+-- with the functions in Skylighting.Loader). If you construct a+-- syntax map yourself from syntaxes parsed with+-- 'Skylighting.Parser.parseSyntaxDefinition', apply+-- 'Skylighting.Parser.resolveKeywords' to each syntax first. tokenize :: TokenizerConfig -> Syntax -> Text -> Either String [SourceLine] tokenize config syntax inp = eitherStack >>= \(!stack) ->- case runTokenizerM action- config{ syntaxMap = Map.map (resolveKeywords (syntaxMap config))- (syntaxMap config) }- (startingState stack) of+ case runTokenizerM action 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)- (resolveKeywords (syntaxMap config) syntax) of+ eitherStack = case lookupContext (sStartingContext syntax) syntax of Just c -> Right $ ContextStack ((c, Captures mempty) :| []) Nothing -> Left "No starting context specified" startingState stack =@@ -162,6 +167,7 @@ , column = 0 , lineContinuation = False , firstNonspaceColumn = Nothing+ , loopCounter = 0 } info :: String -> TokenizerM ()@@ -240,35 +246,86 @@ tokenizeLine :: (ByteString, Int) -> TokenizerM [Token] tokenizeLine (!ln, !linenum) = do- modify $ \st -> st{ input = ln, endline = BS.null ln, prevChar = '\n' }- cur <- currentContext- lineCont <- gets lineContinuation- if lineCont- then modify $ \st -> st{ lineContinuation = False }- else do- let !mbFirstNonspace = BS.findIndex (not . isSpace) $! ln- modify $ \st -> st{ column = 0- , firstNonspaceColumn = mbFirstNonspace }- doContextSwitches (cLineBeginContext cur)+ -- column and firstNonspaceColumn restart on every physical line;+ -- a line continuation only suppresses the previous line's+ -- lineEndContext (KDE abstracthighlighter.cpp, highlightLine).+ let !mbFirstNonspace = BS.findIndex (not . isSpace) $! ln+ modify $ \st -> st{ input = ln+ , endline = BS.null ln+ , prevChar = '\n'+ , lineContinuation = False+ , column = 0+ , firstNonspaceColumn = mbFirstNonspace+ , loopCounter = 0 } if BS.null ln- then doContextSwitches (cLineEmptyContext cur)- else doContextSwitches (cLineBeginContext cur)- ts <- normalizeHighlighting . catMaybes <$> many getToken- eol <- gets endline- if eol then do- currentContext >>= checkLineEnd- return ts- else do -- fail if we haven't consumed whole line- col <- gets column- throwError $ "Could not match anything at line " ++- show linenum ++ " column " ++ show col+ -- Empty lines get only the lineEmptyContext switches (which+ -- default to the lineEndContext switches), applied for+ -- successive top contexts until #stay; the lineEndContext is+ -- not applied separately (KDE abstracthighlighter.cpp).+ handleEmptyLine loopLimit+ return []+ else do+ ts <- normalizeHighlighting . catMaybes <$> many getToken+ eol <- gets endline+ if eol+ then do+ checkLineEnd+ return ts+ else do -- fail if we haven't consumed whole line+ col <- gets column+ throwError $ "Could not match anything at line " +++ show linenum ++ " column " ++ show col +-- | Limit on iterations that make no progress, to avoid endless+-- loops with broken syntax definitions, as in KDE's+-- abstracthighlighter.cpp.+loopLimit :: Int+loopLimit = 1024++-- | Apply line-empty context switches for successive top contexts+-- until a context with no switches (#stay) is on top, guarding+-- against endless loops (KDE abstracthighlighter.cpp, highlightLine).+handleEmptyLine :: Int -> TokenizerM ()+handleEmptyLine counter = do+ cur <- currentContext+ case cLineEmptyContext cur of+ [] -> return () -- #stay+ switches+ | counter <= 0 -> info $ "Endless switch context transitions " +++ "for line empty context, aborting highlighting of line."+ | otherwise -> do+ before <- gets (fmap fst . unContextStack . contextStack)+ doContextSwitches switches+ after <- gets (fmap fst . unContextStack . contextStack)+ -- if the stack is unchanged (e.g. #pop of the initial+ -- context), stop:+ when (before /= after) $ handleEmptyLine (counter - 1)+ getToken :: TokenizerM (Maybe Token) getToken = do inp <- gets input gets endline >>= guard . not !context <- currentContext+ counter <- gets loopCounter+ if counter > loopLimit+ -- too many iterations without consuming input (e.g. a cycle of+ -- context switches): abort highlighting of this line, giving+ -- the rest of it the context's attribute, as in KDE's+ -- abstracthighlighter.cpp.+ then do+ info "Endless state transitions, aborting highlighting of line."+ t <- decodeBS inp+ modify $ \st -> st{ input = BS.empty+ , endline = True+ , prevChar = Text.last t+ , column = column st + Text.length t }+ return $ Just (cAttribute context, t)+ else getToken' context inp counter++getToken' :: Context -> ByteString -> Int -> TokenizerM (Maybe Token)+getToken' context inp counter = do+ modify $ \st -> st{ loopCounter = counter + 1 } msum (map (\r -> tryRule r inp) (cRules context)) <|> case cFallthroughContext context of [] | cFallthrough context -> Nothing <$ doContextSwitches [Pop]@@ -289,7 +346,8 @@ modify $ \st -> st{ input = rest, endline = BS.null rest, prevChar = Text.last t,- column = column st + numchars }+ column = column st + numchars,+ loopCounter = 0 } -- input was consumed: progress return t tryRule :: Rule -> ByteString -> TokenizerM (Maybe Token)@@ -313,6 +371,7 @@ modify $ \st -> st{ captures = Captures mempty } let attr = rAttribute rule+ let delims = rWordDelimiters rule mbtok <- case rMatcher rule of DetectChar c -> withAttr attr $ detectChar (rDynamic rule) c inp Detect2Chars c d -> withAttr attr $@@ -320,12 +379,12 @@ AnyChar cs -> withAttr attr $ anyChar cs inp RangeDetect c d -> withAttr attr $ rangeDetect c d inp RegExpr re -> withAttr attr $ regExpr (rDynamic rule) re inp- Int -> withAttr attr $ parseInt inp- HlCOct -> withAttr attr $ parseOct inp- HlCHex -> withAttr attr $ parseHex inp+ Int -> withAttr attr $ parseInt delims inp+ HlCOct -> withAttr attr $ parseOct delims inp+ HlCHex -> withAttr attr $ parseHex delims inp HlCStringChar -> withAttr attr $ parseCStringChar inp HlCChar -> withAttr attr $ parseCChar inp- Float -> withAttr attr $ parseFloat inp+ Float -> withAttr attr $ parseFloat delims inp Keyword _kwattr (Left listname) -> throwError $ "Keyword with unresolved list " <> show listname Keyword kwattr (Right kws) ->@@ -335,8 +394,8 @@ s inp WordDetect s -> withAttr attr $ wordDetect (rCaseSensitive rule)- (rWeakDeliminators rule) s inp- LineContinue -> withAttr attr $ lineContinue inp+ delims s inp+ LineContinue c -> withAttr attr $ lineContinue c inp DetectSpaces -> withAttr attr $ detectSpaces inp DetectIdentifier -> withAttr attr $ detectIdentifier inp IncludeRules cname -> includeRules@@ -350,17 +409,23 @@ Nothing -> return Nothing Just (tt, s) | rLookahead rule -> do- (oldinput, oldendline, oldprevChar, oldColumn) <-+ (oldinput, oldendline, oldprevChar, oldColumn,+ oldLoopCounter) <- case oldstate of Nothing -> throwError "oldstate not saved with lookahead rule" Just st -> return (input st, endline st,- prevChar st, column st)+ prevChar st, column st,+ loopCounter st)+ -- restore loopCounter too: a lookahead match makes+ -- no progress, so it must not reset the+ -- endless-loop guard (takeChars reset it): modify $ \st -> st{ input = oldinput , endline = oldendline , prevChar = oldprevChar- , column = oldColumn }+ , column = oldColumn+ , loopCounter = oldLoopCounter } return Nothing | otherwise -> do case mbchildren of@@ -381,24 +446,34 @@ then return Nothing else return $ Just (tt, res) -wordDetect :: Bool -> Set.Set Char -> Text -> ByteString -> TokenizerM Text-wordDetect caseSensitive weakDelims s inp = do- -- Removed the next line because KDE seems to allow- -- \n<DOCTYPE! to match \b<DOCTYPE!/b:- -- wordBoundary weakDelims inp- t <- decodeBS $ UTF8.take (Text.length s) inp- -- we assume here that the case fold will not change length,- -- which is safe for ASCII keywords and the like...- guard $ if caseSensitive- then s == t- else mk s == mk t+wordDetect :: Bool -> Set.Set Char -> Text -> ByteString+ -> TokenizerM Text+wordDetect caseSensitive delims s inp = do+ t <- if caseSensitive+ then do -- fast path: compare bytes without decoding+ guard $ encodeUtf8 s `BS.isPrefixOf` inp+ return s+ else do+ t <- decodeBS $ UTF8.take (Text.length s) inp+ -- we assume here that the case fold will not change length,+ -- which is safe for ASCII keywords and the like...+ guard $ mk s == mk t+ return t guard $ not (Text.null t)+ let isDelim = (`Set.member` delims)+ -- KDE requires a word delimiter (or start of line) before the+ -- word, or as its first character (this is why \n<DOCTYPE!+ -- matches \b<DOCTYPE!/b):+ prev <- gets prevChar+ guard $ isDelim prev || isDelim (Text.head t) let c = Text.last t let rest = UTF8.drop (Text.length s) inp let d = case UTF8.uncons rest of Nothing -> '\n' Just (x,_) -> x- guard $ isWordBoundary weakDelims c d+ -- ... and a word delimiter (or end of line) after the word, or+ -- as its last character:+ guard $ isDelim d || isDelim c takeChars (Text.length t) stringDetect :: Bool -> Bool -> Text -> ByteString -> TokenizerM Text@@ -409,12 +484,14 @@ info $ "Dynamic string: " ++ show dynStr return dynStr else return s- t <- decodeBS $ UTF8.take (Text.length s') inp- -- we assume here that the case fold will not change length,- -- which is safe for ASCII keywords and the like...- guard $ if caseSensitive- then s' == t- else mk s' == mk t+ if caseSensitive+ then -- fast path: compare bytes without decoding+ guard $ encodeUtf8 s' `BS.isPrefixOf` inp+ else do+ t <- decodeBS $ UTF8.take (Text.length s') inp+ -- we assume here that the case fold will not change length,+ -- which is safe for ASCII keywords and the like...+ guard $ mk s' == mk t takeChars (Text.length s') subDynamicText :: Text -> TokenizerM Text@@ -463,17 +540,29 @@ (Just (NormalTok, xs), Just attr) -> Just (attr, xs) _ -> mbtok -checkLineEnd :: Context -> TokenizerM ()-checkLineEnd c = do- unless (null (cLineEndContext c)) $ do- eol <- gets endline- info $ "checkLineEnd for " ++ show (cName c) ++ " eol = " ++ show eol ++ " cLineEndContext = " ++ show (cLineEndContext c)- when eol $ do- lineCont' <- gets lineContinuation- unless lineCont' $ do- doContextSwitches (cLineEndContext c)- c' <- currentContext- unless (c == c') $ checkLineEnd c'+-- | Apply line-end context switches for successive top contexts+-- until a context with no switches (#stay) is on top, guarding+-- against endless loops (KDE abstracthighlighter.cpp, highlightLine).+checkLineEnd :: TokenizerM ()+checkLineEnd = do+ lineCont' <- gets lineContinuation+ unless lineCont' $ go loopLimit+ where+ go counter = do+ c <- currentContext+ unless (null (cLineEndContext c)) $+ if counter <= 0+ then info $ "Endless switch context transitions " +++ "for line end context, aborting highlighting of line."+ else do+ info $ "checkLineEnd for " ++ show (cName c) +++ " cLineEndContext = " ++ show (cLineEndContext c)+ before <- gets (fmap fst . unContextStack . contextStack)+ doContextSwitches (cLineEndContext c)+ after <- gets (fmap fst . unContextStack . contextStack)+ -- if the stack is unchanged (e.g. #pop of the initial+ -- context), stop:+ when (before /= after) $ go (counter - 1) detectChar :: Bool -> Char -> ByteString -> TokenizerM Text detectChar dynamic c inp = do@@ -500,9 +589,12 @@ d' <- if dynamic && d >= '0' && d <= '9' then getDynamicChar d else return d- if (encodeUtf8 (Text.pack [c',d'])) `BS.isPrefixOf` inp- then takeChars 2- else mzero+ case UTF8.uncons inp of+ Just (x, rest) | x == c' ->+ case UTF8.uncons rest of+ Just (y, _) | y == d' -> takeChars 2+ _ -> mzero+ _ -> mzero rangeDetect :: Char -> Char -> ByteString -> TokenizerM Text rangeDetect c d inp = do@@ -534,9 +626,9 @@ not (isAlphaNum d || d == '_')) t) _ -> mzero -lineContinue :: ByteString -> TokenizerM Text-lineContinue inp = do- if inp == "\\"+lineContinue :: Char -> ByteString -> TokenizerM Text+lineContinue c inp = do+ if inp == UTF8.fromString [c] then do modify $ \st -> st{ lineContinuation = True } takeChars 1@@ -552,16 +644,20 @@ regExpr dynamic re inp = do -- return $! traceShowId $! (reStr, inp) let reStr = reString re- when (BS.take 2 reStr == "\\b") $ wordBoundary mempty inp- regex <- case compileRE re of+ when (BS.take 2 reStr == "\\b") $ wordBoundary inp+ (regex, groups) <- case compileRE re of Right r -> return r Left e -> throwError $ "Error compiling regex " ++ UTF8.toString reStr ++ ": " ++ e- regex' <- if dynamic- then subDynamic regex- else return regex- case matchRegex regex' inp of+ mbmatch <- if dynamic+ then do+ regex' <- subDynamic regex+ -- the capturing groups have to be recomputed after+ -- dynamic substitution (matchRegex does this):+ return $ matchRegex regex' inp+ else return $ matchRegexWithGroups groups regex inp+ case mbmatch of Just (matchedBytes, capts) -> do unless (null capts) $ modify $ \st -> st{ captures = Captures $@@ -572,19 +668,27 @@ toSlice :: ByteString -> (Int, Int) -> ByteString toSlice bs (off, len) = BS.take len $ BS.drop off bs -wordBoundary :: Set.Set Char -> ByteString -> TokenizerM ()-wordBoundary weakDelims inp = do+wordBoundary :: ByteString -> TokenizerM ()+wordBoundary inp = do case UTF8.uncons inp of Nothing -> return () Just (d, _) -> do c <- gets prevChar- guard $ isWordBoundary weakDelims c d+ guard $ isWordBoundary c d -isWordBoundary :: Set.Set Char -> Char -> Char -> Bool-isWordBoundary weakDelims c d =- (isWordChar c || c `Set.member` weakDelims) /=- (isWordChar d || d `Set.member` weakDelims)+isWordBoundary :: Char -> Char -> Bool+isWordBoundary c d = isWordChar c /= isWordChar d +-- In KDE, Int, Float, HlCOct, and HlCHex rules match only if the+-- preceding character is a word delimiter (or we are at the start+-- of the line, which we detect via prevChar == '\n', since '\n'+-- is always a delimiter). Nothing is required of the character+-- following the match.+precededByWordDelim :: Set.Set Char -> TokenizerM ()+precededByWordDelim delims = do+ c <- gets prevChar+ guard $ c `Set.member` delims+ decodeBS :: ByteString -> TokenizerM Text decodeBS bs = case decodeUtf8' bs of Left _ -> throwError ("ByteString " ++@@ -661,74 +765,65 @@ pCStringChar <|> () <$ A.satisfy (\c -> c /= '\'' && c /= '\\') () <$ A.char '\'' -parseInt :: ByteString -> TokenizerM Text-parseInt inp = do- wordBoundary mempty inp- case A.parseOnly (A.match (pHex <|> pOct <|> pDec)) inp of+-- Like KDE's Int rule: a sequence of one or more decimal digits.+-- No sign, and no hex or octal forms.+parseInt :: Set.Set Char -> ByteString -> TokenizerM Text+parseInt delims inp = do+ precededByWordDelim delims+ case A.parseOnly (A.match (void $ A.takeWhile1 (A.inClass "0-9"))) inp of Left _ -> mzero Right (r,_) -> takeChars (BS.length r) -- assumes ascii -pDec :: A.Parser ()-pDec = do- mbMinus- void $ A.takeWhile1 (A.inClass "0-9")--parseOct :: ByteString -> TokenizerM Text-parseOct inp = do- wordBoundary mempty inp- case A.parseOnly (A.match pHex) inp of+-- Like KDE's HlCOct rule: a C-style octal, 0 followed by one or+-- more octal digits. No sign, and no "0o" prefix.+parseOct :: Set.Set Char -> ByteString -> TokenizerM Text+parseOct delims inp = do+ precededByWordDelim delims+ case A.parseOnly (A.match pOct) inp of Left _ -> mzero Right (r,_) -> takeChars (BS.length r) -- assumes ascii pOct :: A.Parser () pOct = do- mbMinus _ <- A.char '0'- _ <- A.satisfy (A.inClass "Oo") _ <- A.takeWhile1 (A.inClass "0-7") return () -parseHex :: ByteString -> TokenizerM Text-parseHex inp = do- wordBoundary mempty inp+-- Like KDE's HlCHex rule: 0x or 0X followed by one or more hex+-- digits. No sign.+parseHex :: Set.Set Char -> ByteString -> TokenizerM Text+parseHex delims inp = do+ precededByWordDelim delims case A.parseOnly (A.match pHex) inp of Left _ -> mzero Right (r,_) -> takeChars (BS.length r) -- assumes ascii pHex :: A.Parser () pHex = do- mbMinus _ <- A.char '0' _ <- A.satisfy (A.inClass "Xx") _ <- A.takeWhile1 (A.inClass "0-9a-fA-F") return () -mbMinus :: A.Parser ()-mbMinus = (() <$ A.char '-') <|> return ()--mbPlusMinus :: A.Parser ()-mbPlusMinus = () <$ A.satisfy (A.inClass "+-") <|> return ()--parseFloat :: ByteString -> TokenizerM Text-parseFloat inp = do- wordBoundary mempty inp+-- Like KDE's Float rule: optional digits, a mandatory '.', and+-- optional digits (at least one digit is required on one side of+-- the dot), followed by an optional exponent (e or E, an optional+-- sign, and digits); if the exponent is not complete, the match+-- ends before the e/E. No leading sign, and "5e2" is not a Float.+parseFloat :: Set.Set Char -> ByteString -> TokenizerM Text+parseFloat delims inp = do+ precededByWordDelim delims case A.parseOnly (A.match pFloat) inp of Left _ -> mzero Right (r,_) -> takeChars (BS.length r) -- assumes all ascii where pFloat :: A.Parser () pFloat = do- let digits = A.takeWhile1 (A.inClass "0-9")- mbPlusMinus- before <- A.option False $ True <$ digits- dot <- A.option False $ True <$ A.satisfy (A.inClass ".")- after <- A.option False $ True <$ digits- e <- A.option False $ True <$ (A.satisfy (A.inClass "Ee") >>- mbPlusMinus >> digits)- mbnext <- A.peekChar- case mbnext of- Nothing -> return ()- Just c -> guard (not $ A.inClass "." c)- guard $ (before && not dot && e) -- 5e2- || (before && dot && (after || not e)) -- 5.2e2 or 5.2 or 5.- || (not before && dot && after) -- .23 or .23e2+ before <- A.takeWhile (A.inClass "0-9")+ _ <- A.char '.'+ after <- A.takeWhile (A.inClass "0-9")+ guard $ not (BS.null before && BS.null after)+ A.option () $ do+ _ <- A.satisfy (A.inClass "Ee")+ _ <- A.option '+' (A.satisfy (A.inClass "+-"))+ void $ A.takeWhile1 (A.inClass "0-9")
src/Skylighting/Types.hs view
@@ -109,7 +109,7 @@ | HlCHex | HlCStringChar | HlCChar- | LineContinue+ | LineContinue !Char | IncludeRules !ContextName | DetectSpaces | DetectIdentifier@@ -130,7 +130,7 @@ rMatcher :: !Matcher , rAttribute :: !TokenType , rIncludeAttribute :: !Bool- , rWeakDeliminators :: Set.Set Char+ , rWordDelimiters :: Set.Set Char , rDynamic :: !Bool , rCaseSensitive :: !Bool , rChildren :: ![Rule]@@ -178,7 +178,6 @@ , cAttribute :: !TokenType , cLineEmptyContext :: ![ContextSwitch] , cLineEndContext :: ![ContextSwitch]- , cLineBeginContext :: ![ContextSwitch] , cFallthrough :: !Bool , cFallthroughContext :: ![ContextSwitch] , cDynamic :: !Bool
test/expected/abc.haskell.native view
@@ -103,7 +103,9 @@ , ( OtherTok , "=" ) , ( NormalTok , " " ) , ( FunctionTok , "mapM_" )- , ( NormalTok , " (\\w " )+ , ( NormalTok , " (" )+ , ( OperatorTok , "\\" )+ , ( NormalTok , "w " ) , ( OtherTok , "->" ) , ( NormalTok , " " ) , ( FunctionTok , "print" )
test/test-skylighting.hs view
@@ -103,12 +103,14 @@ testCase ("regex " <> (Text.unpack $ TE.decodeUtf8 regex) <> " in " <> sFilename syn)- $ case compileRegex True regex of+ $ case compileRegex True False regex of Right _ -> assertBool "regex does not compile" True Left e -> assertFailure ("regex does not compile: " <> show e)) $ getRegexesFromSyntax syn)) syntaxes , testGroup "Regex module" $ map regexTest regexTests+ , testGroup "Regex module compile errors" $+ map regexErrorTest regexErrorTests , testGroup "Regression tests" $ let perl = maybe (error "could not find Perl syntax") id (lookupSyntax "Perl" sMap)@@ -119,7 +121,21 @@ bash = maybe (error "could not find bash syntax") id (lookupSyntax "bash" sMap) c = maybe (error "could not find C syntax") id- (lookupSyntax "c" sMap) in+ (lookupSyntax "c" sMap)+ dosbat = maybe (error "could not find MS-DOS Batch syntax") id+ (lookupSyntax "MS-DOS Batch" sMap)+ cmake = maybe (error "could not find CMake syntax") id+ (lookupSyntax "CMake" sMap)+ lua = maybe (error "could not find Lua syntax") id+ (lookupSyntax "Lua" sMap)+ awk = maybe (error "could not find AWK syntax") id+ (lookupSyntax "AWK" sMap)+ glsl = maybe (error "could not find GLSL syntax") id+ (lookupSyntax "GLSL" sMap)+ makefile = maybe (error "could not find Makefile syntax") id+ (lookupSyntax "Makefile" sMap)+ markdown = maybe (error "could not find Markdown syntax") id+ (lookupSyntax "Markdown" sMap) in [ testCase "perl NUL case" $ Right [[(OtherTok,"s\NULb\NUL") ,(StringTok,"c")@@ -195,6 +211,40 @@ @=? tokenize defConfig bash "f() {\n echo > f\n}\n" + , testCase "LineContinue with char attribute (dosbat ^)" $ Right+ [ [ ( BuiltInTok , "echo" )+ , ( NormalTok , " foo " )+ , ( SpecialCharTok , "^" ) ]+ , [ ( NormalTok , "bar" ) ] ]+ @=? tokenize defConfig dosbat "echo foo ^\nbar"++ , testCase "keyword rule insensitive attribute (cmake)" $ Right+ [ [ ( ControlFlowTok , "if" )+ , ( NormalTok , "(" )+ , ( OtherTok , "YES" )+ , ( NormalTok , ")" ) ]+ , [ ( ControlFlowTok , "if" )+ , ( NormalTok , "(" )+ , ( OtherTok , "yes" )+ , ( NormalTok , ")" ) ] ]+ @=? tokenize defConfig cmake "if(YES)\nif(yes)"++ , testCase "keyword rule additionalDeliminator attribute (lua)" $ Right+ [ [ ( VariableTok , "a" )+ , ( NormalTok , " " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( KeywordTok , "nil" )+ , ( OperatorTok , "." )+ , ( VariableTok , "x" ) ] ]+ @=? tokenize defConfig lua "a = nil.x"++ , testCase "Int respects general weakDeliminator (awk)" $ Right+ [ [ ( NormalTok , "x" )+ , ( OperatorTok , "@" )+ , ( NormalTok , "5" ) ] ]+ @=? tokenize defConfig awk "x@5"+ , testCase "C floating-point literal (#174)" $ Right [ [ ( DataTypeTok , "double") , ( NormalTok , " x " )@@ -205,9 +255,104 @@ @=? tokenize defConfig c "double x = 0.5;\n" + -- HlCOct matches C-style octals (0 followed by octal digits);+ -- HlCHex matches 0x followed by hex digits:+ , testCase "HlCOct and HlCHex rules (glsl)" $ Right+ [ [ ( NormalTok , "x " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( BaseNTok , "0755" )+ , ( OperatorTok , ";" ) ]+ , [ ( NormalTok , "y " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( BaseNTok , "0x1F" )+ , ( OperatorTok , ";" ) ] ]+ @=? tokenize defConfig glsl "x = 0755;\ny = 0x1F;"++ -- As in KDE, the Float rule requires a '.', so 5e2 is matched+ -- by Int (leaving e2 unmatched), and an incomplete exponent is+ -- excluded from the match:+ , testCase "Float rule requires dot; exponent all-or-nothing (glsl)" $+ Right+ [ [ ( NormalTok , "x " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( DecValTok , "5" )+ , ( NormalTok , "e2" )+ , ( OperatorTok , ";" ) ]+ , [ ( NormalTok , "y " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( FloatTok , "1.5" )+ , ( NormalTok , "e" )+ , ( OperatorTok , "+;" ) ] ]+ @=? tokenize defConfig glsl "x = 5e2;\ny = 1.5e+;"++ -- As in KDE, Int and Float rules do not consume a leading sign:+ , testCase "Int does not include leading minus (glsl)" $ Right+ [ [ ( NormalTok , "x " )+ , ( OperatorTok , "=" )+ , ( NormalTok , " " )+ , ( OperatorTok , "-" )+ , ( DecValTok , "15" )+ , ( OperatorTok , ";" ) ] ]+ @=? tokenize defConfig glsl "x = -15;"++ -- As in KDE, column and firstNonspaceColumn restart on every+ -- physical line; a line continuation only suppresses the+ -- previous line's lineEndContext. So the column="0" Target+ -- rule applies to "bar" on the continuation line:+ , testCase "column restarts after LineContinue (makefile)" $ Right+ [ [ ( DecValTok , "foo " )+ , ( CharTok , "\\" ) ]+ , [ ( DecValTok , "bar:" )+ , ( DataTypeTok , " baz" ) ] ]+ @=? tokenize defConfig makefile "foo \\\nbar: baz"++ -- As in KDE, an empty line applies the lineEmptyContext+ -- switches of successive top contexts until #stay (and+ -- lineEmptyContext defaults to lineEndContext). Here the empty+ -- line pops blockquote and then enters Normal Text's+ -- lineEmptyContext (find-code-block), so the indented line+ -- becomes a code block:+ , testCase "empty line applies successive lineEmptyContexts (markdown)" $+ Right+ [ [ ( AttributeTok , "> quote" ) ]+ , []+ , [ ( InformationTok , " code" ) ] ]+ @=? tokenize defConfig markdown "> quote\n\n code"++ -- A zero-progress cycle of context switches driven by a+ -- lookahead rule must trigger the endless-loop guard (as in+ -- KDE), aborting the line instead of hanging; in particular a+ -- lookahead match must not reset the loop counter:+ , testCase "zero-progress lookahead loop aborts line" $+ Right [ [ ( NormalTok, "xy" ) ] ]+ @=? tokenize defConfig{ syntaxMap =+ addSyntaxDefinition loopSyntax (syntaxMap defConfig) }+ loopSyntax "xy" ] ] +-- | A syntax definition with a zero-progress loop: a lookahead rule+-- pushes a context that immediately pops back via fallthrough.+loopSyntax :: Syntax+loopSyntax = either error id $ parseSyntaxDefinitionFromText "loop.xml" $+ "<language name=\"Loop\" version=\"1\" kateversion=\"5.0\""+ <> " section=\"Other\" extensions=\"\">"+ <> "<highlighting><contexts>"+ <> "<context name=\"start\" attribute=\"Normal Text\""+ <> " lineEndContext=\"#stay\">"+ <> "<AnyChar lookAhead=\"1\" context=\"other\" String=\"x\"/>"+ <> "</context>"+ <> "<context name=\"other\" attribute=\"Normal Text\""+ <> " lineEndContext=\"#stay\" fallthroughContext=\"#pop\">"+ <> "</context>"+ <> "</contexts><itemDatas>"+ <> "<itemData name=\"Normal Text\" defStyleNum=\"dsNormal\"/>"+ <> "</itemDatas></highlighting></language>"+ compareValues :: FilePath -> Text -> Text -> IO (Maybe String) compareValues referenceFile expected actual = if expected == actual@@ -301,7 +446,8 @@ , ("abc|ab$", "abd", Nothing) , ("[\\x50-\\x51]*", "PQR", Just ("PQ", [])) , ("[\\x{2019}]*", "\x2019PQR", Just ("\x2019", []))- , ("(?:ab)*|a.*", "abababa", Just ("abababa", []))+ , ("(?:ab)*|a.*", "abababa", Just ("ababab", []))+ -- leftmost-first: first alternative matches, so second is never tried , ("a[b-e]*", "abcdefg", Just ("abcde", [])) , ("a[b-e\\n-]*", "abcde\nb-bcfg", Just ("abcde\nb-bc", [])) , ("^\\s+\\S+\\s+$", " abc ", Just (" abc ", []))@@ -344,11 +490,226 @@ , ("([abc](?1)*)", "abcd", Just ("abc", [(1,"abc")])) , ("(x(?1)*)", "xxxxy", Just ("xxxx", [(1,"xxxx")])) , ("a|\\((?0)\\)", "(((a)))", Just ("(((a)))", []))- , ("([abc](x(?1))*)", "axbxcc", Just ("axbxc", [(1,"axbxc"),(2,"xc")]))- -- note: pcre gives insetad (2, "xbxc") -- I don't understand why+ , ("([abc](x(?1))*)", "axbxcc", Just ("axbxc", [(1,"axbxc"),(2,"xbxc")]))+ -- group 2's last iteration is "xbxc": the recursion (?1) inside it+ -- matches "bxc", and inner iterations' captures are overwritten , ("[\\p{Nd}]", "33", Just ("3", [])) , ("\\p{N}", "33", Just ("3", []))+ -- {m,n} with m > n is a compile error (see regexErrorTests; it+ -- used to send the compiler into an infinite loop, and later was+ -- treated as a literal)+ -- lazy quantifiers in lookbehinds used to hang the matcher:+ , ("ab(?<=a+?b)c", "abc", Just ("abc", []))+ , ("ab(?<=a+?)c", "abc", Nothing)+ -- recursive subroutine calls that consume no input used to hang;+ -- now re-entering a subroutine at the same offset just fails:+ , ("x|(?R)", "x", Just ("x", []))+ , ("a|(?R)(?R)", "aa", Just ("a", []))+ -- leftmost-first: the first alternative succeeds on "a"+ -- backward matching (lookbehind, \b) after multibyte characters+ -- used to land inside a UTF-8 sequence:+ , ("\x00e9(?<=\x00e9)x", "\x00e9x", Just ("\x00e9x", []))+ , ("\x00e9\\bx", "\x00e9x", Nothing)+ , ("\x2019(?<=\x2019)x", "\x2019x", Just ("\x2019x", []))+ , ("\x00e9(?<!\x00e9)x", "\x00e9x", Nothing)+ -- (?i:...) is scoped to the group; it used to leak to the rest+ -- of the pattern:+ , ("(?i:a)b", "Ab", Just ("Ab", []))+ , ("(?i:a)b", "AB", Nothing)+ , ("x(?i:a(?-i:b)c)y", "xAbCy", Just ("xAbCy", []))+ , ("x(?i:a(?-i:b)c)y", "xABCy", Nothing)+ -- [[:graph:]] and [[:word:]] used to be unparseable (and graph+ -- meant "print"):+ , ("[[:graph:]]+", "ab cd", Just ("ab", []))+ , ("[[:word:]]+", "a_b-c", Just ("a_b", []))+ , ("[^[:graph:]]", " a", Just (" ", []))+ , ("[[:alpha:][:digit:]]+", "ab1 x", Just ("ab1", []))+ -- subroutine calls to groups nested inside other groups used to+ -- be silently ignored (matching the empty string):+ , ("((a)b)(?2)", "aba", Just ("aba", [(1,"ab"),(2,"a")]))+ , ("((a)b)(?2)", "abx", Nothing)+ -- character classes, escaped literals, and backreferences used+ -- to ignore case-insensitivity:+ , ("(?i:[abc]+)d", "aBcd", Just ("aBcd", []))+ , ("(?i:[a-z]+)!", "aBcD!", Just ("aBcD!", []))+ , ("(?i:[^a]+)", "xA", Just ("x", []))+ , ("(?i:\\x61+)", "aA", Just ("aA", []))+ , ("(?i:(ab)\\1)", "abAB", Just ("abAB", [(1,"ab")]))+ , ("(ab)\\1", "abAB", Nothing)+ -- {m,n} expansion is now linear in n; behavior is unchanged:+ , ("a{0,3}b", "aaab", Just ("aaab", []))+ , ("a{0,3}b", "aaaab", Nothing)+ , ("a{2,4}c", "aaaac", Just ("aaaac", []))+ , ("a{2,4}c", "aaaaac", Nothing)+ , ("[ab]{0,800}", replicate 800 'a', Just (replicate 800 'a', []))+ -- repeat counts over 65535 are compile errors (see+ -- regexErrorTests)+ -- an unmatched ] outside a character class is a literal, as in+ -- PCRE (used, e.g., by mermaid.xml and apparmor.xml):+ , ("a]b", "a]b", Just ("a]b", []))+ , ("\\d{1,3}]", "42]x", Just ("42]", []))+ , ("[ab]]", "b]", Just ("b]", []))+ -- a class is terminated by the first unescaped ] even if that+ -- yields a stray ] later (as in PCRE):+ , ("[^|{}[]", "a", Just ("a", []))+ , ("[^|{}[]", "[", Nothing)+ -- \0 takes up to two further octal digits, as in PCRE+ -- (\041 = '!', \042 = '"'); it is octal, not a backreference:+ , ("[\\041-\\043]", "\"", Just ("\"", []))+ , ("\\041", "!!", Just ("!", []))+ , ("a\\0b", "a\NULb", Just ("a\NULb", []))+ , ("[\\0]", "\NULx", Just ("\NUL", []))+ -- a third digit is not consumed (\0101 is \b followed by 1):+ , ("\\0101", "\b1", Just ("\b1", []))+ -- \G asserts the position where the match attempt started;+ -- since our matches are anchored, a leading \G is always true+ -- and a \G after consuming input always fails:+ , ("\\G\\d{4}-\\d{2}", "2024-01x", Just ("2024-01", []))+ , ("a\\Gb", "ab", Nothing)+ -- \g1 and \g{1} are PCRE syntax for backreferences:+ , ("(ab)\\g1", "ababx", Just ("abab", [(1,"ab")]))+ , ("(a)(b)\\g2\\g1", "abba", Just ("abba", [(1,"a"),(2,"b")]))+ , ("(ab)c\\g{1}", "abcabx", Just ("abcab", [(1,"ab")]))+ , ("([_*]{1,2})x\\g1", "**x**", Just ("**x**", [(1,"**")]))+ , ("([_*]{1,2})x\\g1", "**x*", Nothing)+ -- inline modifiers without a colon, like (?i), apply from that+ -- point to the end of the enclosing group (as in PCRE):+ , ("(?i)ab", "AB", Just ("AB", []))+ , ("A(?i)B", "aB", Nothing)+ , ("A(?i)B", "Ab", Just ("Ab", []))+ , ("x(?:(?i)a)Y", "xAY", Just ("xAY", []))+ , ("x(?:(?i)a)Y", "xAy", Nothing)+ , ("(a(?i)b|c)", "C", Just ("C", [(1,"C")]))+ , ("(?i)A(?-i)B", "aB", Just ("aB", []))+ , ("(?i)A(?-i)B", "Ab", Nothing)+ -- \h and \H match horizontal whitespace (and its complement):+ , ("a\\hb", "a b", Just ("a b", []))+ , ("a\\hb", "a\tb", Just ("a\tb", []))+ , ("a\\hb", "a\xa0\&b", Just ("a\xa0\&b", []))+ , ("\\h", "\x180e", Just ("\x180e", []))+ , ("a\\hb", "a\nb", Nothing)+ , ("a\\Hb", "axb", Just ("axb", []))+ , ("a\\Hb", "a b", Nothing)+ , ("[\\h]", "\xa0", Just ("\xa0", []))+ , ("[^\\h]+", "ab cd", Just ("ab", []))+ -- \A asserts the start of the subject:+ , ("\\Aab", "abc", Just ("ab", []))+ , ("a\\Ab", "ab", Nothing)+ -- an empty first alternative matches the empty string:+ , ("(?:|abc)x", "x", Just ("x", []))+ , ("(?:|abc)x", "abcx", Just ("abcx", []))+ , ("(?:\\d\\d(?:|[DT]\\d\\d))y", "12y", Just ("12y", []))+ , ("(?:\\d\\d(?:|[DT]\\d\\d))y", "12T34y", Just ("12T34y", []))+ , ("(?<=|)z\\d", "z4", Just ("z4", []))+ -- inside a character class, \b means backspace:+ , ("[\\b]", "\b", Just ("\b", []))+ , ("[\\b+-]x", "\bx", Just ("\bx", []))+ , ("[\\b+-]x", "+x", Just ("+x", []))+ , ("[\\b+-]x", "bx", Nothing)+ -- atomic groups (?>...):+ , ("(?>ab|a)c", "abc", Just ("abc", []))+ , ("(?>ab|a)c", "ac", Just ("ac", []))+ , ("(?>a+)ab", "aaab", Nothing)+ , ("x(?>)y", "xy", Just ("xy", []))+ , ("(?>a|ab)c", "abc", Nothing)+ , ("(?>(a|ab)c)", "abc", Just ("abc", [(1,"ab")]))+ -- alternation is leftmost-first, not longest-match (as in PCRE):+ , ("a|ab", "ab", Just ("a", []))+ , ("(a|ab)c?", "abc", Just ("a", [(1,"a")]))+ , ("(?=(a|ab))", "ab", Just ("", [(1,"a")]))+ -- lazy quantifiers match as little as possible:+ , ("a+?b", "aaab", Just ("aaab", []))+ , ("a*?b", "aaab", Just ("aaab", []))+ , ("(a+?)ab", "aaab", Just ("aaab", [(1,"aa")]))+ -- subroutine calls to groups with multi-digit numbers:+ , ("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)x(?12)", "abcdefghijklxl",+ Just ("abcdefghijklxl",+ [(1,"a"),(2,"b"),(3,"c"),(4,"d"),(5,"e"),(6,"f"),(7,"g"),+ (8,"h"),(9,"i"),(10,"j"),(11,"k"),(12,"l")]))+ , ("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)x(?12)", "abcdefghijklxa", Nothing)+ -- numbering after (?|...) resumes after the highest group number+ -- used in any alternative:+ , ("(?|(a)(b)|(c))(d)\\2", "abdb",+ Just ("abdb", [(1,"a"),(2,"b"),(3,"d")]))+ , ("(?|(a)(b)|(c))(d)\\2", "cdd", Nothing)+ -- a ] in first position in a character class is a literal, and+ -- may be the start of a range:+ , ("[]-a]+", "^_`", Just ("^_`", []))+ , ("[]-a]+", "b", Nothing)+ , ("[]-]+", "]-]", Just ("]-]", []))+ , ("[]-]+", "^", Nothing)+ , ("[^]-a]+", "bz!", Just ("bz!", []))+ , ("[^]-a]+", "^", Nothing)+ , ("[]a-]+", "a]-", Just ("a]-", []))+ -- \pL is short for \p{L}; \P is the complement of \p:+ , ("\\pL+", "ab\x3a3\&9", Just ("ab\x3a3", []))+ , ("\\pN", "9", Just ("9", []))+ , ("\\pN", "a", Nothing)+ , ("\\PL+", "9!", Just ("9!", []))+ , ("\\P{L}+", "9!a", Just ("9!", []))+ , ("\\p{^L}+", "9!a", Just ("9!", []))+ , ("[\\pL]+", "ab9", Just ("ab", []))+ , ("[\\PL]+", "9!a", Just ("9!", []))+ , ("[\\P{N}]+", "a!9", Just ("a!", []))+ , ("[^\\PL]+", "ab9", Just ("ab", []))+ -- {,n} is a quantifier (as in PCRE 10.43+), but {,} and {b} are+ -- literal:+ , ("a{,2}", "aaa", Just ("aa", []))+ , ("a{,}", "a{,}", Just ("a{,}", []))+ , ("a{b}", "a{b}", Just ("a{b}", []))+ -- (?s) and (?m) are accepted (and are no-ops on our single-line+ -- subjects):+ , ("(?s)a.b", "axb", Just ("axb", []))+ , ("(?m)^ab", "ab", Just ("ab", []))+ , ("(?ims)ab", "AB", Just ("AB", []))+ -- (?U) makes quantifiers minimal by default and ? makes them+ -- greedy (PCRE's UNGREEDY option, QRegularExpression's+ -- InvertedGreedinessOption, minimal="1" in KDE syntax files):+ , ("(?U)a+", "aaa", Just ("a", []))+ , ("(?U)a+?", "aaa", Just ("aaa", []))+ , ("(?U)a*b", "aabb", Just ("aab", []))+ , ("(?U)a?", "a", Just ("", []))+ , ("(?U)a{2,4}", "aaaaa", Just ("aa", []))+ , ("(?U)a{2,4}?", "aaaaa", Just ("aaaa", []))+ , ("(?U)a{2}", "aaa", Just ("aa", []))+ , ("(?U)a*+b", "aab", Just ("aab", [])) -- possessive is unaffected+ , ("(?U)<(.*)>", "<x><y>", Just ("<x>", [(1, "x")]))+ , ("(?U:a+)a", "aaa", Just ("aa", []))+ , ("((?U)a+)(a+)", "aaaa", Just ("aaaa", [(1, "a"), (2, "aaa")]))+ , ("(?iU)ab+", "ABBB", Just ("AB", []))+ , ("(?U)(?-U)a+", "aaa", Just ("aaa", [])) ]++-- these should fail to compile, as they do in PCRE ("quantifier does+-- not follow a repeatable item", "numbers out of order in {}+-- quantifier", "number too big in {} quantifier", or an unsupported+-- inline flag):+regexErrorTests :: [String]+regexErrorTests =+ [ "{2}"+ , "({2})"+ , "a|{2}"+ , "a{2}{3}"+ , "a+{2}"+ , "{,2}"+ , "a{3,1}"+ , "x{70000}"+ , "a{2,70000}"+ , "^{2}"+ , "^*a"+ , "a$*"+ , "\\b+a"+ , "(?x)a b"+ , "(?n)(a)b"+ , "(?u)a"+ ]++regexErrorTest :: String -> TestTree+regexErrorTest re =+ testCase ("/" ++ re ++ "/") $+ case compileRegex True False (TE.encodeUtf8 (Text.pack re)) of+ Left _ -> return ()+ Right _ -> assertFailure "regex compiled, but an error was expected" vividize :: Diff Text -> Text
+ xml/abnf.xml view
@@ -0,0 +1,175 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY rulename "[[:alpha:]_][-\w]*">+]>+<!--+ SPDX-FileCopyrightText: 2026 Jonathan Poelen <jonathan.poelen@gmail.com>+ SPDX-License-Identifier: MIT++ https://www.rfc-editor.org/rfc/rfc5234 (Augmented BNF for Syntax Specifications: ABNF)+ https://www.rfc-editor.org/rfc/rfc7405 (Case-Sensitive String Support in ABNF)+-->+<language+ name="ABNF"+ section="Sources"+ version="1"+ kateversion="5.79"+ extensions="*.abnf"+ mimetype="text/x-abnf"+ author="Jonathan Poelen (jonathan.poelen@gmail.com)"+ indenter="normal"+ license="MIT"+>+ <highlighting>++ <list name="core rules">+ <item>ALPHA</item>+ <item>BIT</item>+ <item>CHAR</item>+ <item>CR</item>+ <item>CRLF</item>+ <item>CTL</item>+ <item>DIGIT</item>+ <item>DQUOTE</item>+ <item>HEXDIG</item>+ <item>HTAB</item>+ <item>LF</item>+ <item>LWSP</item>+ <item>OCTET</item>+ <item>SP</item>+ <item>VCHAR</item>+ <item>WSP</item>+ </list>++ <contexts>+ <context attribute="Normal Text" name="Normal" fallthroughContext="Elements">+ <DetectSpaces/>++ <StringDetect String=";" attribute="Comment" context="Comment"/>+ <StringDetect String="=" attribute="New Rule Operator" context="Elements"/>+ <RegExpr attribute="New Rule" String="&rulename;(?=\s*=)" context="SetRule"/>+ </context>++ <context attribute="Normal Text" name="SetRule">+ <DetectSpaces/>+ <StringDetect String="=" attribute="New Rule Operator" context="#pop!Elements"/>+ </context>++ <context attribute="Normal Text" name="Elements" lineEndContext="#pop">+ <DetectSpaces/>++ <AnyChar String="/" attribute="Alternation"/>+ <!-- other than '*' as extension -->+ <AnyChar String="*+?!#$&@^~" attribute="Operator"/>++ <StringDetect String=";" attribute="Comment" context="#pop!Comment"/>++ <AnyChar String="()" attribute="Group"/>+ <AnyChar String="[]" attribute="Option"/>++ <!-- do not use <Int> to colorize %b012DIGIT+ ~~~~ special char+ ~ Integer+ ~~~~~ Rule+ -->+ <AnyChar String="0123456789" attribute="Integer"/>++ <DetectChar attribute="String" context="DQuote" char="""/>++ <StringDetect String="%b" attribute="Numeric Base" context="NumBin"/>+ <StringDetect String="%d" attribute="Numeric Base" context="NumDec"/>+ <StringDetect String="%x" attribute="Numeric Base" context="NumHex"/>++ <StringDetect String="%i" attribute="Case Sensitivity"/>+ <StringDetect String="%s" attribute="Case Sensitivity"/>++ <DetectChar char="<" attribute="Prose" context="Prose"/>++ <keyword attribute="Core Rule" String="core rules" weakDeliminator="-"/>+ <RegExpr attribute="Rule Name" String="&rulename;"/>++ <!-- extension -->+ <DetectChar lookAhead="1" context="Escape" char="\"/>+ </context>+++ <!-- ;... -->+ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>+++ <!-- "..." -->+ <context name="DQuote" attribute="String">+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+++ <!-- %b### -->+ <context name="NumBin" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Numeric Value" String="01"/>+ <IncludeRules context="NumCommon"/>+ </context>+ <!-- %d### -->+ <context name="NumDec" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Numeric Value" String="0123456789"/>+ <IncludeRules context="NumCommon"/>+ </context>+ <!-- %h### -->+ <context name="NumHex" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar attribute="Numeric Value" String="0123456789abcdefABCDEF"/>+ <IncludeRules context="NumCommon"/>+ </context>++ <context name="NumCommon" attribute="Numeric Value">+ <AnyChar attribute="Concatenation" String="."/>+ <AnyChar attribute="Range" String="-"/>+ </context>+++ <!-- <...> -->+ <context name="Prose" attribute="Prose" lineEndContext="#pop">+ <DetectChar char=">" attribute="Prose" context="#pop"/>+ </context>+++ <!-- \w, etc -->+ <context attribute="String" lineEndContext="#stay" name="Escape">+ <HlCStringChar attribute="String Char" context="#pop"/>+ <RegExpr attribute="String Char" context="#pop" String="\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\[a-zA-Z]\b"/>+ <DetectChar context="#pop" char="\"/>+ </context>++ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Alternation" defStyleNum="dsControlFlow" spellChecking="0"/>+ <itemData name="Comment" defStyleNum="dsComment" spellChecking="1"/>+ <itemData name="New Rule" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="New Rule Operator" defStyleNum="dsVariable" spellChecking="0"/>+ <itemData name="Integer" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Rule Name" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Core Rule" defStyleNum="dsPreprocessor" spellChecking="0"/>+ <itemData name="Operator" defStyleNum="dsOperator" bold="true" spellChecking="0"/>+ <itemData name="Group" defStyleNum="dsInformation" spellChecking="0"/>+ <itemData name="Option" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Case Sensitivity" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Numeric Base" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Numeric Value" defStyleNum="dsSpecialString" spellChecking="0"/>+ <itemData name="String" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="Prose" defStyleNum="dsDataType" spellChecking="1"/>+ <itemData name="Concatenation" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Range" defStyleNum="dsFunction" spellChecking="0"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start=";"/>+ </comments>+ <folding indentationsensitive="true"/>+ </general>+</language>+<!-- kate: replace-tabs on; indent-width 2; -->
+ xml/asciidoc.xml view
@@ -0,0 +1,640 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!-- alphabetic -->+ <!ENTITY alp "a-zA-Z">+ <!-- alphanumeric -->+ <!ENTITY aln "&alp;0-9">+ <!ENTITY id "\w[\w-]+">+ <!-- percent symbol, needs to be encoded inside an entity definition -->+ <!ENTITY perc "%">++ <!ENTITY admonition_names "CAUTION|IMPORTANT|NOTE|TIP|WARNING">++ <!-- regular expression parts to identify anchors -->+ <!ENTITY anchor_mid "&id;(?:,.+?)?">+ <!ENTITY anchor_phrase "#\S(?:.*?\S)?#">++ <!-- block delimiters -->+ <!ENTITY block_dels_comment "/{4,}">+ <!ENTITY block_dels_normal "={4,}|_{4,}|\*{4,}|-{2}|"{2}">+ <!ENTITY block_dels_pass "\+{4,}">+ <!ENTITY block_dels_verbatim "`{3}|-{4,}|\.{4,}">+ <!-- postfix/trailing part of block name -->+ <!ENTITY block_name_post "(?:[#&perc;].+)?\s*(?:,.*)?\]\s*$">+ <!-- block end delimiter, dynamic matching: "^%1\s*$" -->+ <!ENTITY block_end_del "^&perc;1\s*$">++ <!-- unicode character reference, decimal and hexadecimal -->+ <!ENTITY char_ref "&#(?:\d{2,4}|x[\da-fA-F]{2,4});">++ <!-- email - inline -->+ <!ENTITY email "\w[\w.&perc;+-]*@[&aln;][&aln;.-]*\.[&alp;]{2,4}\b">++ <!-- link macro and mailto: -->+ <!ENTITY link_mailto "(?:link|mailto):[^:\s\[][^\s\[]*\[(?:\]|.*?[^\\]\])">++ <!-- macro -->+ <!ENTITY macro "(?:anchor|xref):&id;\[.*?\]|(?:btn|footnote(?:ref)?|kbd):\[.*?\]|pass:\w*\[.*?\]|(?:icon|image|menu):[^:].*?\[.*?\]|toc::\[\]">++ <!ENTITY list_marker "(?:\S.+::(?=\s|$)|(?:(?:\.+|\d+\.)|(?:-|\*+)(?:\s+\[[*x ]\])?)(?=\s+\S))">++ <!ENTITY table_option_delimiter "(?:(?:\d*\.)?\d+\+|\d+\*)?(?:[<>^]?\.?[<>^])?[adehlmsv]?\|">++ <!-- parts to build regular expressions to identify quoted (formatted) text+ E.g. emphasized, marked, strong. -->+ <!-- prefix/leading part -->+ <!ENTITY quoted_pre "(?<=^|[^\w;:}])">+ <!ENTITY quoted_pre_pass "(?<=^|\W)">+ <!-- central part -->+ <!ENTITY quoted "\S(?:.*?\S)??">+ <!-- postfix/trailing part -->+ <!ENTITY quoted_post "(?=\W|$)">+]>+<language author="Andreas Gratzer" extensions="*.ad;*.adoc;*.asciidoc" kateversion="5.0" mimetype="text/asciidoc" name="AsciiDoc" license="MIT" section="Markup" version="9">+ <highlighting>+ <list name="macro">+ <item>anchor</item>+ <item>btn</item>+ <item>footnote</item>+ <item>footnoteref</item>+ <item>icon</item>+ <item>image</item>+ <item>indexterm</item>+ <item>indexterm2</item>+ <item>kbd</item>+ <item>menu</item>+ <item>pass</item>+ <item>toc</item>+ <item>xref</item>+ </list>++ <contexts>+ <context name="start" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <!-- section title level 0 to 5 -->+ <RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section main title" column="0"/>+ <IncludeRules context="R section inline"/>+ </context>++ <!-- attribute value definition, may span multiple lines -->+ <context name="attribute value" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">+ <!-- line with continuation -->+ <RegExpr String=".*?(?=\s+(?:\+\s+)?\\\s*$)" attribute="Attribute Value" context="continuation"/>+ <!-- line without continuation, terminates value definition -->+ <RegExpr String=".*" attribute="Attribute Value" context="#pop"/>+ </context>+ <!-- inline attribute value definition -->+ <context name="attribute value inline" attribute="Attribute Value" lineEndContext="#stay">+ <!-- the leading `:` is part of the definition syntax and should not be highlighted as value -->+ <DetectChar char=":" attribute="Attribute" context="attribute value inline L2"/>+ <DetectChar char="}" attribute="Attribute" context="#pop"/>+ </context>+ <context name="attribute value inline L2" attribute="Attribute Value" lineEndContext="#stay">+ <DetectChar char="}" attribute="Attribute" context="#pop#pop"/>+ </context>++ <!-- backlash, may function as an escape -->+ <context name="backlash" attribute="Normal" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">+ <!-- attribute usage+ formatted/quoted text+ replacement of apostrophe+ table separator (default)+ anchor, consuming leading char will make anchor matches fail+ cross reference+ indexterm, consuming leading char will make matches fail+ -->+ <!-- replacement (besides apostrophe -->+ <Detect2Chars char="<" char1="-" attribute="Normal" context="#pop"/>+ <Detect2Chars char="<" char1="=" attribute="Normal" context="#pop"/>+ <AnyChar String="_#`+*~^'|{[<(" attribute="Normal" context="#pop"/>+ <Detect2Chars char="-" char1="-" attribute="Normal" context="#pop"/>+ <Detect2Chars char="-" char1=">" attribute="Normal" context="#pop"/>+ <Detect2Chars char="=" char1=">" attribute="Normal" context="#pop"/>+ <StringDetect String="..." attribute="Normal" context="#pop"/>+ <!-- email - inline, needs to be ordered after mailto: -->+ <!-- link and mailto macros, note that ftp, irc, http(s) don't match with leading `\` anyway -->+ <RegExpr String="&email;|&link_mailto;|&char_ref;" attribute="Normal" context="#pop"/>+ <!-- macro -->+ <keyword String="macro" attribute="Normal" context="#pop"/>+ </context>++ <context name="block title" attribute="Block Title" lineEndContext="#pop">+ <IncludeRules context="R title"/>+ </context>++ <context name="comment" attribute="Comment" lineEndContext="#stay" lineEmptyContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="#pop!comment delimited" beginRegion="comment" column="0"/>+ <IncludeRules context="R anchor"/>+ <IncludeRules context="R block title"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier attribute="Comment"/>+ </context>+ <context name="comment delimited" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces attribute="Comment"/>+ <RegExpr String="&block_end_del;" dynamic="true" attribute="Comment" context="#pop" endRegion="comment" column="0"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier attribute="Comment"/>+ </context>+ <context name="comment single-line" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier attribute="Comment"/>+ </context>++ <!-- continuation, both for normal text and attribute value definition+ The allowed pattern must already by validated.+ Here only the possible characters are highlighted. -->+ <context name="continuation" attribute="Normal" lineEndContext="#pop">+ <AnyChar String="+\" attribute="Control"/>+ </context>++ <context name="main title" attribute="Main Title" lineEndContext="#pop!section L0">+ <IncludeRules context="R title"/>+ </context>++ <context name="normal" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">+ <RegExpr String="^(-{2}|&block_dels_normal;)\s*$" attribute="Delimiter" context="#pop!normal delimited" beginRegion="block" column="0"/>+ <IncludeRules context="R block title"/>+ <!-- shared rules includes anchor rules, so we do not need to include that separately -->+ <IncludeRules context="R shared"/>+ <IncludeRules context="R normal"/>+ </context>+ <context name="normal delimited" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>+ <IncludeRules context="R admonition"/>+ <IncludeRules context="R block"/>+ <!-- shared rules includes anchor rules, so we do not need to include that separately -->+ <IncludeRules context="R shared"/>+ <IncludeRules context="R normal"/>+ </context>++ <context name="passthrough" attribute="Passthrough" lineEndContext="#stay" lineEmptyContext="#pop">+ <DetectSpaces attribute="Passthrough"/>+ <IncludeRules context="R include"/>+ <DetectIdentifier attribute="Passthrough"/>+ <RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="#pop!passthrough delimited" beginRegion="block" column="0"/>+ <IncludeRules context="R anchor"/>+ <IncludeRules context="R block title"/>+ </context>+ <context name="passthrough delimited" attribute="Passthrough" lineEndContext="#stay">+ <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>+ <IncludeRules context="R include"/>+ </context>++ <context name="dispatch section main title" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L1-5"/>+ <!-- main title, first level 0 section title -->+ <AnyChar String="=#" attribute="Main Title" context="#pop!main title" beginRegion="section" column="0"/>+ </context>++ <context name="dispatch section title L0-5" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L1-5"/>+ <AnyChar String="=#" attribute="Section Title" context="#pop!section title L0" beginRegion="section" endRegion="section" column="0"/>+ </context>+ <context name="dispatch section title L1-5" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L2-5"/>+ <Detect2Chars char="=" char1="=" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>+ <Detect2Chars char="#" char1="#" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>+ </context>+ <context name="dispatch section title L2-5" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L3-5"/>+ <StringDetect String="===" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>+ <StringDetect String="###" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>+ </context>+ <context name="dispatch section title L3-5" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L4-5"/>+ <StringDetect String="====" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>+ <StringDetect String="####" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>+ </context>+ <context name="dispatch section title L4-5" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="dispatch section title L5"/>+ <StringDetect String="=====" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>+ <StringDetect String="#####" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>+ </context>+ <context name="dispatch section title L5" attribute="Normal" lineEndContext="#stay">+ <StringDetect String="======" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>+ <StringDetect String="######" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>+ </context>++ <context name="section L0" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L0-5" column="0"/>+ <IncludeRules context="section L5"/>+ </context>++ <context name="section L1" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={3,6}|#{3,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L2-5" column="0"/>+ <IncludeRules context="section L5"/>+ </context>++ <context name="section L2" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={4,6}|#{4,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L3-5" column="0"/>+ <IncludeRules context="section L5"/>+ </context>++ <context name="section L3" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={5,6}|#{5,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L4-5" column="0"/>+ <IncludeRules context="section L5"/>+ </context>++ <context name="section L4" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={6}|#{6})\s+(?=\S)" lookAhead="1" context="dispatch section title L5" column="0"/>+ <IncludeRules context="section L5"/>+ </context>++ <context name="section L5" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">+ <RegExpr String="^(?:={1,6}|#{1,6})\s+\S" lookAhead="1" context="#pop" endRegion="section" column="0"/>+ <IncludeRules context="R section inline"/>+ </context>++ <context name="section title L0" attribute="Section Title" lineEndContext="#pop">+ <IncludeRules context="R title"/>+ </context>++ <context name="section title L1" attribute="Section Title" lineEndContext="#pop!section L1">+ <IncludeRules context="R title"/>+ </context>++ <context name="section title L2" attribute="Section Title" lineEndContext="#pop!section L2">+ <IncludeRules context="R title"/>+ </context>++ <context name="section title L3" attribute="Section Title" lineEndContext="#pop!section L3">+ <IncludeRules context="R title"/>+ </context>++ <context name="section title L4" attribute="Section Title" lineEndContext="#pop!section L4">+ <IncludeRules context="R title"/>+ </context>++ <context name="section title L5" attribute="Section Title" lineEndContext="#pop!section L5">+ <IncludeRules context="R title"/>+ </context>++ <context name="table" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>+ <!-- `|` with prefix for alignment, style etc. -->+ <RegExpr String="(?<=^|\s)&table_option_delimiter;" attribute="Delimiter"/>+ <!-- simple `|` without alignment, style etc. -->+ <DetectChar char="|" attribute="Delimiter"/>+ <IncludeRules context="R shared"/>+ <IncludeRules context="R normal"/>+ </context>++ <context name="verbatim" attribute="Verbatim" lineEndContext="#stay">+ <RegExpr String="^(-{2}|&block_dels_verbatim;)\s*$" attribute="Delimiter" context="#pop!verbatim delimited" beginRegion="block" column="0"/>+ <IncludeRules context="R anchor"/>+ <RegExpr String="^(\[\w+[^,\]]*(,[^,\]]*)*\]\s*)+$" attribute="Preprocessor" column="0"/>+ <IncludeRules context="R block title"/>+ <IncludeRules context="R comment"/>+ <IncludeRules context="R include"/>+ <RegExpr String="^.*" attribute="Verbatim" context="#pop!verbatim paragraph" column="0"/>+ </context>+ <context name="verbatim delimited" attribute="Verbatim" lineEndContext="#stay">+ <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>+ <IncludeRules context="R include"/>+ </context>+ <context name="verbatim paragraph" attribute="Verbatim" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="R include"/>+ </context>++ <!-- contexts to be used for IncludeRules only -->++ <context name="R normal" attribute="Normal" lineEndContext="#stay">+ <!-- Regex which allows to quickly consume text that is not+ - macro+ - continuation+ - index term+ - link+ - replacement+ - preprocessor+ - formatted text+ - table delimiter++ maanchor:anchor-id[Macro Anchor]+ ^ Normal+ ^ Macro++ bla__bla__bla+ ^ Normal+ ^ Emphasized+ ^ Normal++ For some reason, Asciidoctor recognizes emails with leading : or / but does not render them as link++ /example@mail.com+ ^ Normal++ example@mail.com+ ^ Link+ -->+ <RegExpr String="([:/]&email;|(?!¯o;|link:|mailto:|(?:ftp|https?|irc)://|&char_ref;|indexterm2?:\[.+?\]|[\\+|\[{~^]|__|##|\([CR]\)|\(TM\)|\.\.\.|<[-=<]|--|->|=>|``\*?_?|\*\*_?|\(\(|\s+[[+]|\s&table_option_delimiter;|(?<=[^&alp;;:}])_|"ed_pre;(`\*?_?|\*_?|#)|(?<=[&alp;])'(?=[&alp;])|&email;).)++" attribute="Normal"/>+ </context>++ <context name="R admonition" attribute="Normal" lineEndContext="#stay">+ <!-- admonition - simple form, block form is part of block rules -->+ <RegExpr String="^(?:&admonition_names;):(?=\s+\S)" attribute="Preprocessor" context="normal" column="0"/>+ </context>++ <context name="R anchor" attribute="Normal" lineEndContext="#stay">+ <!-- shorthand form at line start -->+ <!-- bibliographic anchor -->+ <!-- normal form -->+ <!-- shorthand form inline -->+ <RegExpr String="^\[#&anchor_mid;\](?:&anchor_phrase;|\s*$)|\[{3}&anchor_mid;\]{3}|\[{2}&anchor_mid;\]{2}|(?<=\S\s)\s*\[\s*#&anchor_mid;\s*\]&anchor_phrase;" attribute="Anchor"/>+ </context>++ <context name="R attribute" attribute="Normal" lineEndContext="#stay">+ <!-- attribute definition without value / unset attribute -->+ <RegExpr String="^:!?&id;!?:$" attribute="Attribute" column="0"/>+ <!-- attribute definition with value -->+ <RegExpr String="^:!?&id;!?:\s(?=\S)" attribute="Attribute" context="attribute value" column="0"/>+ <!-- attribute inline definition -->+ <RegExpr String="\{set:&id;(?=(?::.*)?\})" minimal="true" attribute="Attribute" context="attribute value inline"/>+ <IncludeRules context="R attribute usage"/>+ </context>++ <context name="R attribute usage" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="\{&id;\}" attribute="Attribute"/>+ </context>++ <context name="R block" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="R block title"/>+ <IncludeRules context="R block without title"/>+ </context>++ <context name="R block without title" attribute="Normal" lineEndContext="#stay">+ <!-- name matching -->+ <RegExpr String="^\[(?:&admonition_names;)&block_name_post;|^\[(?:example|quote|sidebar|verse)&block_name_post;" attribute="Preprocessor" context="normal" column="0"/>+ <RegExpr String="^\[(?:pass|stem)&block_name_post;" attribute="Preprocessor" context="passthrough" column="0"/>+ <RegExpr String="^\[(?:listing|literal|source)&block_name_post;" attribute="Preprocessor" context="verbatim" column="0"/>++ <!-- delimiter matching -->+ <RegExpr String="^(&block_dels_normal;)\s*$" attribute="Delimiter" context="normal delimited" beginRegion="block" column="0"/>+ <RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="passthrough delimited" beginRegion="block" column="0"/>+ <RegExpr String="^(\|={3,})\s*$" attribute="Delimiter" context="table" beginRegion="block" column="0"/>+ <RegExpr String="^(&block_dels_verbatim;)\s*$" attribute="Delimiter" context="verbatim delimited" beginRegion="block" column="0"/>+ </context>++ <context name="R block title" attribute="Normal" lineEndContext="#stay">+ <!-- not more than 3 leading dots followed by a non-dot, otherwise it would conflict with the delimited literal block -->+ <RegExpr String="^\.{1,3}(?=[^\.\s])" attribute="Block Title" context="block title" column="0"/>+ </context>++ <context name="R comment" attribute="Normal" lineEndContext="#stay">+ <!-- comment - multi-line, named block -->+ <RegExpr String="^\[comment&block_name_post;" attribute="Preprocessor" context="comment" column="0"/>+ <!-- comment - multi-line, delimited block -->+ <RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="comment delimited" beginRegion="comment" column="0"/>+ <!-- comment - single line -->+ <RegExpr String="^/{2}(?:[^/]|$)" attribute="Comment" context="comment single-line" column="0"/>+ </context>++ <context name="R formatted" attribute="Normal" lineEndContext="#stay">+ <!-- custom style, e.g. [underline]#underlined text# -->+ <RegExpr String="(?<=^|\W)\[[^\]]+?\]([#_`*]{1,2})"ed;\g1"ed_post;" attribute="Preprocessor"/>++ <!-- combined highlighting must be ordered before simple highlighting -->++ <!-- emphasized monospaced strong unconstrained - must be ordered before constrained -->+ <!-- emphasized monospaced strong - constrained must be ordered after unconstrained -->+ <RegExpr String="`{2}\*_.*?_\*`{2}|"ed_pre;`\*_"ed;_\*`"ed_post;" attribute="Emphasized Monospaced Strong"/>++ <!-- emphasized strong unconstrained - must be ordered before constrained -->+ <!-- emphasized strong constrained - must be ordered after unconstrained -->+ <RegExpr String="\*{2}_.*?_\*{2}|"ed_pre;\*_"ed;_\*"ed_post;" attribute="Emphasized Strong"/>++ <!-- monospaced strong unconstrained - must be ordered before constrained -->+ <!-- monospaced strong constrained - must be ordered after unconstrained -->+ <RegExpr String="`{2}\*.*?\*`{2}|"ed_pre;`\*"ed;\*`"ed_post;" attribute="Monospaced Strong"/>++ <!-- emphasized monospaced unconstrained - must be ordered before constrained -->+ <!-- emphasized monospaced constrained - must be ordered after unconstrained -->+ <RegExpr String="`{2}_.*?_`{2}|"ed_pre;`_"ed;_`"ed_post;" attribute="Emphasized Monospaced"/>++ <!-- strong unconstrained - must be ordered before constrained -->+ <!-- strong constrained - must be ordered after unconstrained -->+ <RegExpr String="\*{2}[^*].*?\*{2}|"ed_pre;\*"ed;\*"ed_post;" attribute="Strong"/>++ <!-- emphasized unconstrained - must be ordered before constrained -->+ <!-- emphasized constrained - must be ordered after unconstrained+ Can't use "ed_pre; as that excludes \w which excludes `_` too. -->+ <RegExpr String="_{2}[^_].*?_{2}|(?<=^|[^&alp;;:}])_"ed;_"ed_post;" attribute="Emphasized"/>++ <IncludeRules context="R marked"/>+ <IncludeRules context="R monospaced"/>++ <!-- subscript -->+ <RegExpr String="~\S+~" minimal="true" attribute="Subscript"/>+ <!-- superscript -->+ <RegExpr String="\^\S+\^" minimal="true" attribute="Superscript"/>+ </context>++ <context name="R include" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^include::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>+ </context>++ <context name="R macro" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="¯o;" attribute="Preprocessor"/>+ </context>++ <context name="R marked" attribute="Normal" lineEndContext="#stay">+ <!-- marked unconstrained - must be ordered before constrained -->+ <!-- marked constrained - must be ordered after unconstrained -->+ <RegExpr String="#{2}.+?#{2}|"ed_pre;#"ed;#"ed_post;" attribute="Marked"/>+ </context>++ <context name="R monospaced" attribute="Normal" lineEndContext="#stay">+ <!-- monospaced unconstrained - must be ordered before constrained -->+ <!-- monospaced constrained - must be ordered after unconstrained -->+ <RegExpr String="`{2}[^`].*?`{2}|"ed_pre;`"ed;`"ed_post;" attribute="Monospaced"/>+ </context>++ <!-- replacements -->+ <context name="R replacement" attribute="Normal" lineEndContext="#stay">+ <!-- copyright -->+ <StringDetect String="(C)" attribute="Replacement"/>+ <!-- registered -->+ <StringDetect String="(R)" attribute="Replacement"/>+ <!-- trademark -->+ <StringDetect String="(TM)" attribute="Replacement"/>+ <!-- apostrophe, only when between alphabetic characters -->+ <RegExpr String="(?<=[&alp;])'(?=[&alp;])" attribute="Replacement"/>+ <!-- ellipses -->+ <StringDetect String="..." attribute="Replacement"/>+ <!-- mdash -->+ <Detect2Chars char="-" char1="-" attribute="Replacement"/>+ <!-- left single arrow -->+ <Detect2Chars char="<" char1="-" attribute="Replacement"/>+ <!-- right single arrow -->+ <Detect2Chars char="-" char1=">" attribute="Replacement"/>+ <!-- left double arrow -->+ <Detect2Chars char="<" char1="=" attribute="Replacement"/>+ <!-- right double arrow -->+ <Detect2Chars char="=" char1=">" attribute="Replacement"/>+ <!-- unicode character reference -->+ <RegExpr String="&char_ref;" attribute="Replacement"/>+ </context>++ <context name="R section inline" attribute="Normal" lineEndContext="#stay">+ <!-- literal paragraph started by a line with leading spaces -->+ <RegExpr String="^\s+(?!&list_marker;)\S.*" attribute="Verbatim" context="verbatim paragraph" column="0"/>+ <IncludeRules context="R block"/>+ <IncludeRules context="R anchor"/>+ <IncludeRules context="R comment"/>+ <IncludeRules context="R media"/>+ <IncludeRules context="R preprocessor"/>+ <IncludeRules context="R horizontal rules and page break"/>+ </context>++ <!-- first line of a section block -->+ <context name="R section block" attribute="Normal" lineEndContext="#pop!section block continuation" lineEmptyContext="#pop">+ <IncludeRules context="R callout"/>+ <RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>+ <IncludeRules context="R admonition"/>+ <IncludeRules context="R block"/>+ <IncludeRules context="R shared"/>+ <IncludeRules context="R empty"/>+ <IncludeRules context="R normal"/>+ </context>++ <!-- callout as being used below a source code block -->+ <context name="R callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">+ <RegExpr String="^<(?:\.|\d+)>(?=\s+\S)" attribute="Callout" context="#pop!callout" column="0"/>+ </context>+ <context name="callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="R callout"/>+ <IncludeRules context="section block continuation"/>+ </context>++ <!-- line 2 and following of a section block -->+ <context name="section block continuation" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">+ <RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>+ <IncludeRules context="R block without title"/>+ <IncludeRules context="R shared"/>+ <IncludeRules context="R empty"/>+ <IncludeRules context="R normal"/>+ </context>++ <context name="R empty" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^\s+$" attribute="Normal" context="#pop" column="0"/>+ </context>++ <context name="R shared" attribute="Normal" lineEndContext="#stay">+ <!-- the escaped forms must be ordered before the not escaped forms -->+ <DetectChar char="\" attribute="Normal" context="backlash"/>++ <!-- passthrough - inline, must be ordered before other rules+ The macro form pass: is part of "R macro" context -->+ <RegExpr String=""ed_pre_pass;(\+{1,3})"ed;\g1"ed_post;" attribute="Passthrough"/>++ <IncludeRules context="R anchor"/>+ <IncludeRules context="R attribute"/>+ <IncludeRules context="R comment"/>+ <IncludeRules context="R include"/>+ <IncludeRules context="R macro"/>++ <!-- counter and counter2 -->+ <RegExpr String="\{counter2?:\s*&id;\s*(?::\s*(?:\d+|[&alp;])\s*)?\}" minimal="true" attribute="Attribute"/>++ <!-- horizontal rules and page break -->+ <!-- to enable highlighting of the horizontal rules using "- - -" or "* * *",+ keep this before the checklist and unnumbered list definition -->+ <IncludeRules context="R horizontal rules and page break"/>++ <!-- cross reference -->+ <RegExpr String="<<[^<\s].*?>>" attribute="Link"/>++ <!-- index term -->+ <RegExpr String="\({3}.+?\){3}|\({2}.+?\){2}|indexterm2?:\[.+?\]" attribute="Preprocessor"/>++ <!-- marker for description list -->+ <!-- marker for numbered list -->+ <!-- marker for checklist and bulleted/unnumbered list+ To enable highlighting of the horizontal rules using "- - -" or "* * *",+ keep this after the horizontal rules definition -->+ <RegExpr String="^\s*&list_marker;" attribute="List Marker" column="0"/>++ <!-- media - block format -->+ <IncludeRules context="R media"/>++ <!-- links -->+ <RegExpr String="(?<=^|[\s\[\]();<>])(?:ftp|https?|irc)://[^\s\[]*?(?:\[\]|\[.*?[^\\]\]|(?=(?:[\[\]]|[\.,;:]??(?:\s|$))))|&link_mailto;|&email;" attribute="Link"/>++ <!-- preprocessor -->+ <!-- general meta data attribute list - must be ordered after other rules matching for lines of the form of [some content] -->+ <IncludeRules context="R preprocessor"/>++ <!-- continuation `+`, both at end of line and on a line on its own -->+ <RegExpr String="(?:^|\s)\s*\+\s*$" lookAhead="true" attribute="Normal" context="continuation"/>++ <!-- formatted/quoted must be ordered after unnumbered list -->+ <IncludeRules context="R formatted"/>+ <!-- replacements are done only if nothing else matched -->+ <IncludeRules context="R replacement"/>+ </context>++ <context name="R media" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^(?:audio|image|video)::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>+ </context>++ <context name="R preprocessor" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^ifn?def::&id;(?:[,\+]&id;)*\[.*\]|^ifeval::\[.*\]|^endif::(?:&id;)?\[\]|^\[[^\s\[].*\](?=\s*$)" attribute="Preprocessor" column="0"/>+ </context>++ <context name="R horizontal rules and page break" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^(?:'{3}|-{3}|\*{3}|- - -|\* \* \*|<{3})\s*$" attribute="Control" column="0"/>+ </context>++ <!-- common rules for main title, section title, block title -->+ <context name="R title" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <!-- the escaped forms must be ordered before the not escaped forms -->+ <DetectChar char="\" attribute="Section Title" context="backlash"/>+ <IncludeRules context="R anchor"/>+ <IncludeRules context="R attribute usage"/>+ <IncludeRules context="R marked"/>+ <IncludeRules context="R monospaced"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Anchor" defStyleNum="dsFunction"/>+ <itemData name="Attribute" defStyleNum="dsVariable"/>+ <itemData name="Attribute Value" defStyleNum="dsVariable" italic="true"/>+ <itemData name="Block Title" defStyleNum="dsString" italic="true"/>+ <itemData name="Callout" defStyleNum="dsNormal" bold="true" underline="true"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Control" defStyleNum="dsControlFlow" bold="true" underline="true"/>+ <itemData name="Delimiter" defStyleNum="dsPreprocessor" bold="true"/>+ <itemData name="Emphasized" defStyleNum="dsNormal" italic="true"/>+ <itemData name="Emphasized Monospaced" defStyleNum="dsDocumentation" italic="true"/>+ <itemData name="Emphasized Monospaced Strong" defStyleNum="dsDocumentation" bold="true" italic="true"/>+ <itemData name="Emphasized Strong" defStyleNum="dsNormal" bold="true" italic="true"/>+ <itemData name="Link" defStyleNum="dsVariable" underline="true"/>+ <itemData name="List Marker" defStyleNum="dsNormal" bold="true"/>+ <itemData name="Main Title" defStyleNum="dsNormal" bold="true"/>+ <itemData name="Marked" defStyleNum="dsFloat"/>+ <itemData name="Monospaced" defStyleNum="dsDocumentation"/>+ <itemData name="Monospaced Strong" defStyleNum="dsDocumentation" bold="true"/>+ <itemData name="Normal" defStyleNum="dsNormal"/>+ <itemData name="Passthrough" defStyleNum="dsSpecialString"/>+ <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>+ <itemData name="Replacement" defStyleNum="dsNormal" bold="true" underline="true"/>+ <itemData name="Section Title" defStyleNum="dsString" bold="true"/>+ <itemData name="Strong" defStyleNum="dsNormal" bold="true"/>+ <itemData name="Subscript" defStyleNum="dsNormal" underline="true"/>+ <itemData name="Superscript" defStyleNum="dsNormal" bold="true" underline="true"/>+ <itemData name="Verbatim" defStyleNum="dsDocumentation"/>+ </itemDatas>+ </highlighting>++ <general>+ <comments>+ <comment name="singleLine" start="//"/>+ <comment name="multiLine" start="////" end="////" region="comment"/>+ </comments>+ <keywords casesensitive="1"/>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
xml/bash.xml view
@@ -71,11 +71,11 @@ <language name="Bash"- version="54"+ version="58" kateversion="5.79" section="Scripts"- extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD"- mimetype="application/x-shellscript"+ extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;.envrc;PKGBUILD;APKBUILD"+ mimetype="application/x-shellscript;text/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL"@@ -669,10 +669,12 @@ <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/> <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/> <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>+ <!-- The old format $[exp] is undocumented, deprecated+ and will be removed in upcoming versions of bash. --> </context> <context attribute="Command" lineEndContext="#pop#pop" name="DispatchStringVariables"> <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>- <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="""/>+ <Detect2Chars attribute="String Transl." context="#pop!StringTrDQ" char="$" char1="""/> </context> <context attribute="Command" lineEndContext="#pop#pop" name="DispatchVarnameVariables"> <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[*@#?$!0-9-])"/>@@ -1227,7 +1229,7 @@ <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables"> <IncludeRules context="DispatchSubstVariables"/> <IncludeRules context="DispatchVarnameVariables"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>+ <DetectChar context="#pop" char="$"/> </context> <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape"> <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="""/>@@ -1235,9 +1237,19 @@ <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/> <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/> <LineContinue attribute="String Escape" context="#pop"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>+ <DetectChar context="#pop" char="\"/> </context> + <!-- StringTrDQ consumes anything till $", substitutes vars and expressions -->+ <context attribute="String Transl." lineEndContext="#stay" name="StringTrDQ">+ <DetectSpaces attribute="String Transl."/>+ <DetectIdentifier attribute="String Transl."/>+ <DetectChar attribute="String Transl." context="#pop" char="""/>+ <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>+ <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ </context>+ <!-- RegularBackq consumes anything till ` --> <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command"> <DetectChar attribute="Backquote" context="#pop" char="`"/>@@ -1276,15 +1288,15 @@ </context> <!-- VarBraceStart is called as soon as ${ is encoutered -->- <context attribute="Variable" lineEndContext="SubstBraceCommand" name="VarBraceStart" fallthroughContext="#pop!VarBrace">+ <context attribute="Variable" lineEndContext="#pop!SubstBraceCommand" name="VarBraceStart" fallthroughContext="#pop!VarBrace"> <!-- '${!}' as process ID variable, not a Parameter Expansion --> <StringDetect context="#pop!VarBrace" String="!}" lookAhead="1"/> <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefix" char="!"/> <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBrace" char="#"/> <!-- Bash-5.3: ${ cmd; } -->- <DetectSpaces attribute="Normal Text" context="SubstBraceCommand"/>+ <DetectSpaces attribute="Normal Text" context="#pop!SubstBraceCommand"/> <!-- Bash-5.3: ${|cmd;} -->- <DetectChar attribute="Control" context="SubstBraceCommand" char="|"/>+ <DetectChar attribute="Control" context="#pop!SubstBraceCommand" char="|"/> </context> <!-- SubstBraceCommand is called after a '${ ' are '${|' are encountered -->@@ -1934,7 +1946,7 @@ </highlighting> <general> <comments>- <comment name="singleLine" start="#"/>+ <comment name="singleLine" start="#" position="afterwhitespace"/> </comments> <keywords casesensitive="1" weakDeliminator="_&weakDeliminatorSymbols;" additionalDeliminator="`"/> </general>
+ xml/cabal.xml view
@@ -0,0 +1,398 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY version "(?<![-+@$\w.])[0-9]+(\.[0-9]+)*">+ <!ENTITY noversion "[0-9.]+">+]>+<language name="Cabal" section="Configuration" version="1" kateversion="5.62"+ extensions="*.cabal;cabal.config;cabal.project;cabal.project.freeze;cabal.project.local"+ author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+ <highlighting>++<list name="conditional">+ <item>if</item>+ <item>elif</item>+ <item>else</item>+</list>++<list name="function">+ <item>os</item>+ <item>arche</item>+ <item>impl</item>+ <item>flag</item>+</list>++<list name="category">+ <item>executable</item>+ <item>library</item>+ <item>benchmark</item>+ <item>test-suite</item>+ <item>source-repository</item>+ <item>flag</item>+ <item>foreign-library</item>+ <item>custom-setup</item>+ <item>common</item>+</list>++<list name="constant">+ <item>True</item>+ <item>False</item>+</list>++<list name="stmt">+ <item>asm-options</item>+ <item>asm-sources</item>+ <item>author</item>+ <item>autogen-includes</item>+ <item>autogen-modules</item>+ <item>branch</item>+ <item>bug-reports</item>+ <item>build-depends</item>+ <item>build-tool-depends</item>+ <item>build-tools</item>+ <item>build-type</item>+ <item>buildable</item>+ <item>c-sources</item>+ <item>cabal-version</item>+ <item>category</item>+ <item>cc-options</item>+ <item>cmm-options</item>+ <item>cmm-sources</item>+ <item>copyright</item>+ <item>cpp-options</item>+ <item>cxx-options</item>+ <item>cxx-sources</item>+ <item>data-dir</item>+ <item>data-files</item>+ <item>default-extensions</item>+ <item>default-language</item>+ <item>default</item>+ <item>description</item>+ <item>executable</item>+ <item>exposed-modules</item>+ <item>exposed</item>+ <item>extensions</item>+ <item>extra-bundled-libraries</item>+ <item>extra-doc-files</item>+ <item>extra-dynamic-library-flavours</item>+ <item>extra-framework-dirs</item>+ <item>extra-ghci-libraries</item>+ <item>extra-lib-dirs-static</item>+ <item>extra-lib-dirs</item>+ <item>extra-libraries-static</item>+ <item>extra-libraries</item>+ <item>extra-library-flavours</item>+ <item>extra-source-files</item>+ <item>extra-tmp-files</item>+ <item>frameworks</item>+ <item>ghc-options</item>+ <item>ghc-prof-options</item>+ <item>ghc-shared-options</item>+ <item>ghcjs-options</item>+ <item>ghcjs-prof-options</item>+ <item>ghcjs-shared-options</item>+ <item>homepage</item>+ <item>hs-source-dir</item>+ <item>hs-source-dirs</item>+ <item>hugs-options</item>+ <item>import</item>+ <item>include-dirs</item>+ <item>includes</item>+ <item>install-includes</item>+ <item>js-sources</item>+ <item>ld-options</item>+ <item>lib-version-info</item>+ <item>lib-version-linux</item>+ <item>license-file</item>+ <item>license</item>+ <item>location</item>+ <item>main-is</item>+ <item>maintainer</item>+ <item>manual</item>+ <item>mixins</item>+ <item>mod-def-file</item>+ <item>module</item>+ <item>name</item>+ <item>nhc98-options</item>+ <item>options</item>+ <item>other-extensions</item>+ <item>other-language</item>+ <item>other-languages</item>+ <item>other-modules</item>+ <item>package-url</item>+ <item>pkgconfig-depends</item>+ <item>reexported-modules</item>+ <item>scope</item>+ <item>setup-depends</item>+ <item>signatures</item>+ <item>stability</item>+ <item>subdir</item>+ <item>synopsis</item>+ <item>tag</item>+ <item>test-module</item>+ <item>tested-with</item>+ <item>type</item>+ <item>version</item>+ <item>virtual-modules</item>+</list>++<list name="language">+ <item>Haskell98</item>+ <item>Haskell2010</item>+</list>++<list name="compiler">+ <item>ghc</item>+ <item>nhc</item>+ <item>yhc</item>+ <item>hugs</item>+ <item>hbc</item>+ <item>helium</item>+ <item>jhc</item>+ <item>lhc</item>+</list>++<list name="build-type">+ <item>simple</item>+ <item>custom</item>+ <item>configure</item>+</list>++<list name="default-extensions">+ <include>language_pragmas##Haskell</include>+</list>++<contexts>+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ <WordDetect attribute="Statement" context="stmtVersion" String="version" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtVersion" String="cabal-version" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtBuildType" String="build-type" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtTestWith" String="tested-with" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtLicenseFile" String="license-file" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtLicense" String="license" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtMaintainer" String="maintainer" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtAuthor" String="author" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtName" String="name" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtDescription" String="description" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtCopyright" String="copyright" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtHomepage" String="homepage" insensitive="1"/>+ <WordDetect attribute="Statement" context="stmtBugReports" String="bug-reports" insensitive="1"/>+ <keyword attribute="Statement" context="stmt" String="stmt"/>+ <keyword attribute="Category" context="category" String="category"/>+ <keyword attribute="Conditional" context="conditional" String="conditional"/>+ <RegExpr attribute="Other Statement" context="stmt" String="[-\w]+"/>+ </context>++ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier attribute="Comment"/>+ </context>++ <context name="category" attribute="Category Title" lineEndContext="#pop">+ <StringDetect attribute="Comment" context="#pop!Comment" String="--"/>+ </context>++ <context name="stmt" attribute="Normal Text" lineEndContext="#pop!stmt2" fallthroughContext="#pop!stmt2">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!stmt2"/>+ </context>+ <context name="stmt2" attribute="Normal Text" lineEndContext="stmtContinuation">+ <IncludeRules context="findStmt"/>+ <RegExpr attribute="Normal Text" String="[-\w.]+\s*"/>+ </context>++ <context name="findOperator" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect attribute="Operator" String="!"/>+ <StringDetect attribute="Operator" String="||"/>+ <StringDetect attribute="Operator" String="&&"/>+ </context>++ <context name="findStmt" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces attribute="Normal Text"/>+ <IncludeRules context="findOperator"/>+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ <StringDetect attribute="Version Operator" String="==" context="versionOp"/>+ <StringDetect attribute="Version Operator" String=">=" context="versionOp"/>+ <StringDetect attribute="Version Operator" String="<=" context="versionOp"/>+ <StringDetect attribute="Version Operator" String="^>=" context="versionOp"/>+ <AnyChar attribute="Version Operator" String="<>" context="versionOp"/>+ <AnyChar String="=^" context="versionOp" lookAhead="1"/>+ <keyword attribute="Constant" String="constant"/>+ <keyword attribute="Language" String="language"/>+ </context>++ <context name="versionOp" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <AnyChar attribute="Error" String="=^!<>"/>+ <DetectChar attribute="Normal Text" context="#pop!versionOpList" char="{"/>+ <RegExpr attribute="Version" String="&version;" context="#pop"/>+ <RegExpr attribute="Error" String="&noversion;" context="#pop"/>+ </context>+ <context name="versionOpList" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Normal Text" char=","/>+ <DetectChar attribute="Normal Text" context="#pop" char="}"/>+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ <IncludeRules context="findVersion"/>+ </context>+ <context name="findVersion" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="Version" String="&version;"/>+ <RegExpr attribute="Error" String="&noversion;"/>+ </context>++ <context name="stmtContinuation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">+ <RegExpr attribute="Normal Text" String="^\s*[a-zA-Z]+[-0-9a-zA-Z]*\s*:|^\s*(if|else|elif|executable|library|benchmark|test-suite|source-repository|flag|foreign-library|custom-setup|common)(?![-\w])" lookAhead="1" context="#pop#pop" insensitive="1"/>+ </context>++ <context name="stmtVersion" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!version">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Symbol Separator" char=":" context="#pop!version"/>+ </context>+ <context name="version" attribute="Normal Text" lineEndContext="stmtContinuation">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ <IncludeRules context="findVersion"/>+ </context>++ <context name="stmtBuildType" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="stmtContinuation">+ <DetectSpaces attribute="Normal Text"/>+ <DetectChar attribute="Symbol Separator" char=":"/>+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ <keyword attribute="Built Type" String="build-type"/>+ </context>++ <context name="stmtTestWith" attribute="Normal Text" lineEndContext="#pop!testWith" fallthroughContext="#pop!testWith">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!testWith"/>+ </context>+ <context name="testWith" attribute="Normal Text" lineEndContext="stmtContinuation">+ <IncludeRules context="findStmt"/>+ <keyword attribute="Compiler" String="compiler"/>+ <RegExpr attribute="Error" String="[-\w.]+"/>+ </context>++ <context name="stmtLicense" attribute="License" lineEndContext="#pop!license" fallthroughContext="#pop!license">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!license"/>+ </context>+ <context name="license" attribute="License" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtLicenseFile" attribute="License File" lineEndContext="#pop!licenseFile" fallthroughContext="#pop!licenseFile">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!licenseFile"/>+ </context>+ <context name="licenseFile" attribute="License File" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtMaintainer" attribute="Maintainer" lineEndContext="#pop!maintainer" fallthroughContext="#pop!maintainer">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!maintainer"/>+ </context>+ <context name="maintainer" attribute="Maintainer" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtAuthor" attribute="Author" lineEndContext="#pop!author" fallthroughContext="#pop!author">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!author"/>+ </context>+ <context name="author" attribute="Author" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtName" attribute="Name" lineEndContext="#pop!name" fallthroughContext="#pop!name">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!name"/>+ </context>+ <context name="name" attribute="Name" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtDescription" attribute="Description" lineEndContext="#pop!description" fallthroughContext="#pop!description">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!description"/>+ </context>+ <context name="description" attribute="Description" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtCopyright" attribute="Copyright" lineEndContext="#pop!copyright" fallthroughContext="#pop!copyright">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!copyright"/>+ </context>+ <context name="copyright" attribute="Copyright" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtHomepage" attribute="Homepage" lineEndContext="#pop!homepage" fallthroughContext="#pop!homepage">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!homepage"/>+ </context>+ <context name="homepage" attribute="Homepage" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="stmtBugReports" attribute="Bug Reports" lineEndContext="#pop!bugReports" fallthroughContext="#pop!bugReports">+ <DetectSpaces attribute="Normal Text"/>+ <StringDetect attribute="Symbol Separator" String=":" context="#pop!bugReports"/>+ </context>+ <context name="bugReports" attribute="Bug Reports" lineEndContext="stmtContinuation">+ <StringDetect attribute="Comment" context="Comment" String="--"/>+ </context>++ <context name="conditional" attribute="Normal Text" lineEndContext="#pop">+ <DetectSpaces attribute="Normal Text"/>+ <AnyChar attribute="Symbol" String="()"/>+ <IncludeRules context="findOperator"/>+ <StringDetect attribute="Comment" context="#pop!Comment" String="--"/>+ <keyword attribute="Function" String="function" insensitive="0"/>+ <keyword attribute="Constant" String="constant"/>+ <DetectIdentifier attribute="Normal Text"/>+ </context>++</contexts>++<itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Category" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Category Title" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Statement" defStyleNum="dsDataType" spellChecking="0"/>+ <itemData name="Other Statement" defStyleNum="dsPreprocessor" spellChecking="0"/>+ <itemData name="Name" defStyleNum="dsVerbatimString" spellChecking="0"/>+ <itemData name="Author" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Homepage" defStyleNum="dsSpecialString" spellChecking="0"/>+ <itemData name="Description" defStyleNum="dsVerbatimString" spellChecking="0"/>+ <itemData name="Maintainer" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Bug Reports" defStyleNum="dsSpecialString" spellChecking="0"/>+ <itemData name="Copyright" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="License" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="License File" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Built Type" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>+ <itemData name="Version Operator" defStyleNum="dsOperator" spellChecking="0"/>+ <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Symbol Separator" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Version" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Language" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Conditional" defStyleNum="dsControlFlow" spellChecking="0"/>+ <itemData name="Compiler" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>+</itemDatas>++ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="--"/>+ </comments>+ <keywords casesensitive="0" weakDeliminator="-"/>+ </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
xml/cmake.xml view
@@ -7,15 +7,15 @@ <!ENTITY tgt_name_re "[A-Za-z0-9_\.\+\-]+"> ]> <!--- This file is part of KDE's kate project.+ This file is part of KDE's kate project. - SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>- SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>- SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>- SPDX-FileCopyrightText: 2013-2015, 2017-2025 Alex Turbov <i.zaufi@gmail.com>+ SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>+ SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>+ SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>+ SPDX-FileCopyrightText: 2013-2015, 2017-2025 Alex Turbov <i.zaufi@gmail.com> - SPDX-License-Identifier: LGPL-2.0-or-later- -->+ SPDX-License-Identifier: LGPL-2.0-or-later+--> <!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT ***** $ cd data/generators@@ -24,7 +24,7 @@ <language name="CMake"- version="54"+ version="61" kateversion="5.62" section="Other" extensions="CMakeLists.txt;*.cmake;*.cmake.in"@@ -38,6 +38,7 @@ <list name="commands"> <item>block</item> <item>break</item>+ <item>cmake_diagnostic</item> <item>cmake_host_system_information</item> <item>cmake_language</item> <item>cmake_minimum_required</item>@@ -101,8 +102,10 @@ <item>aux_source_directory</item> <item>build_command</item> <item>cmake_file_api</item>+ <item>cmake_instrumentation</item> <item>create_test_sourcelist</item> <item>define_property</item>+ <item>discover_tests</item> <item>enable_language</item> <item>enable_testing</item> <item>export</item>@@ -155,9 +158,33 @@ <item>SCOPE_FOR</item> </list> <list name="block_sargs">+ <item>DIAGNOSTICS</item> <item>POLICIES</item> <item>VARIABLES</item> </list>+ <list name="cmake_diagnostic_nargs">+ <item>DEMOTE</item>+ <item>GET</item>+ <item>NO_RECURSE</item>+ <item>POP</item>+ <item>PROMOTE</item>+ <item>PUSH</item>+ <item>RECURSE</item>+ <item>SET</item>+ </list>+ <list name="cmake_diagnostic_sargs">+ <item>CMD_AUTHOR</item>+ <item>CMD_DEPRECATED</item>+ <item>CMD_EXPERIMENTAL</item>+ <item>CMD_INSTALL_ABSOLUTE_DESTINATION</item>+ <item>CMD_POLICY</item>+ <item>CMD_UNINITIALIZED</item>+ <item>CMD_UNUSED_CLI</item>+ <item>FATAL_ERROR</item>+ <item>IGNORE</item>+ <item>SEND_ERROR</item>+ <item>WARN</item>+ </list> <list name="cmake_host_system_information_nargs"> <item>ERROR_VARIABLE</item> <item>QUERY</item>@@ -193,6 +220,7 @@ <item>HOST</item> <item>HOSTNAME</item> <item>IS_64BIT</item>+ <item>LOCALE_CHARSET</item> <item>MSYSTEM_PREFIX</item> <item>NUMBER_OF_LOGICAL_CORES</item> <item>NUMBER_OF_PHYSICAL_CORES</item>@@ -215,6 +243,7 @@ <item>DIRECTORY</item> <item>EVAL</item> <item>EXIT</item>+ <item>EXPAND</item> <item>GET_CALL</item> <item>GET_CALL_IDS</item> <item>GET_MESSAGE_LOG_LEVEL</item>@@ -222,6 +251,7 @@ <item>ID_VAR</item> <item>SET_DEPENDENCY_PROVIDER</item> <item>SUPPORTED_METHODS</item>+ <item>TRACE</item> </list> <list name="cmake_language_sargs"> <item>FETCHCONTENT_MAKEAVAILABLE_SERIAL</item>@@ -232,6 +262,7 @@ <item>VERSION</item> </list> <list name="cmake_parse_arguments_nargs">+ <item>PARSE_ARGN</item> <item>PARSE_ARGV</item> </list> <list name="cmake_path_nargs">@@ -281,13 +312,18 @@ <list name="cmake_pkg_config_nargs"> <item>ALLOW_SYSTEM_INCLUDES</item> <item>ALLOW_SYSTEM_LIBS</item>+ <item>BIND_PC_REQUIRES</item> <item>DISABLE_UNINSTALLED</item> <item>ENV_MODE</item> <item>EXACT</item> <item>EXTRACT</item>+ <item>IMPORT</item>+ <item>NAME</item> <item>PC_LIBDIR</item> <item>PC_PATH</item> <item>PC_SYSROOT_DIR</item>+ <item>POPULATE</item>+ <item>PREFIX</item> <item>QUIET</item> <item>REQUIRED</item> <item>STRICTNESS</item>@@ -334,6 +370,7 @@ <item>AND</item> <item>COMMAND</item> <item>DEFINED</item>+ <item>DIAGNOSTIC</item> <item>EQUAL</item> <item>EXISTS</item> <item>GREATER</item>@@ -373,6 +410,8 @@ <item>ECHO_ERROR_VARIABLE</item> <item>ECHO_OUTPUT_VARIABLE</item> <item>ENCODING</item>+ <item>ENVIRONMENT</item>+ <item>ENVIRONMENT_MODIFICATION</item> <item>ERROR_FILE</item> <item>ERROR_QUIET</item> <item>ERROR_STRIP_TRAILING_WHITESPACE</item>@@ -505,6 +544,7 @@ <item>STATUS</item> <item>STRINGS</item> <item>TARGET</item>+ <item>THREADS</item> <item>TIMEOUT</item> <item>TIMESTAMP</item> <item>TLS_CAINFO</item>@@ -528,6 +568,7 @@ <item>BZip2</item> <item>CRLF</item> <item>DOS</item>+ <item>Deflate</item> <item>FILE</item> <item>FUNCTION</item> <item>GROUP_EXECUTE</item>@@ -536,11 +577,14 @@ <item>GZip</item> <item>IGNORED</item> <item>LF</item>+ <item>LZMA</item>+ <item>LZMA2</item> <item>None</item> <item>OPTIONAL</item> <item>OWNER_EXECUTE</item> <item>OWNER_READ</item> <item>OWNER_WRITE</item>+ <item>PPMd</item> <item>PROCESS</item> <item>REQUIRED</item> <item>SETGID</item>@@ -684,6 +728,7 @@ <item>CACHE</item> <item>DEFINED</item> <item>DIRECTORY</item>+ <item>FILE_SET</item> <item>FULL_DOCS</item> <item>GLOBAL</item> <item>INSTALL</item>@@ -696,6 +741,7 @@ <item>VARIABLE</item> </list> <list name="include_nargs">+ <item>NO_DIAGNOSTIC_SCOPE</item> <item>NO_POLICY_SCOPE</item> <item>OPTIONAL</item> <item>RESULT_VARIABLE</item>@@ -706,8 +752,10 @@ </list> <list name="list_nargs"> <item>APPEND</item>+ <item>APPLY</item> <item>AT</item> <item>CASE</item>+ <item>COMPARATOR</item> <item>COMPARE</item> <item>EXCLUDE</item> <item>FILTER</item>@@ -723,6 +771,7 @@ <item>OUTPUT_VARIABLE</item> <item>POP_BACK</item> <item>POP_FRONT</item>+ <item>PREDICATE</item> <item>PREPEND</item> <item>REGEX</item> <item>REMOVE_AT</item>@@ -791,6 +840,7 @@ <item>APPEND_STRING</item> <item>CACHE</item> <item>DIRECTORY</item>+ <item>FILE_SET</item> <item>GLOBAL</item> <item>INSTALL</item> <item>PROPERTY</item>@@ -827,6 +877,7 @@ <item>FIND</item> <item>GENEX_STRIP</item> <item>GET</item>+ <item>GET_RAW</item> <item>GREATER</item> <item>GREATER_EQUAL</item> <item>HEX</item>@@ -843,7 +894,9 @@ <item>NAME</item> <item>NAMESPACE</item> <item>NOTEQUAL</item>+ <item>PARTIAL_EQUAL</item> <item>PREPEND</item>+ <item>QUOTE</item> <item>RANDOM</item> <item>RANDOM_SEED</item> <item>REGEX</item>@@ -861,6 +914,7 @@ <item>SHA3_384</item> <item>SHA3_512</item> <item>SHA512</item>+ <item>STRING_ENCODE</item> <item>STRIP</item> <item>SUBSTRING</item> <item>TIMESTAMP</item>@@ -960,6 +1014,20 @@ <item>QUERY</item> <item>TOOLCHAINS</item> </list>+ <list name="cmake_instrumentation_nargs">+ <item>API_VERSION</item>+ <item>CALLBACK</item>+ <item>CUSTOM_CONTENT</item>+ <item>DATA_VERSION</item>+ <item>HOOKS</item>+ <item>OPTIONS</item>+ </list>+ <list name="cmake_instrumentation_sargs">+ <item>BOOL</item>+ <item>JSON</item>+ <item>LIST</item>+ <item>STRING</item>+ </list> <list name="create_test_sourcelist_nargs"> <item>EXTRA_INCLUDE</item> <item>FUNCTION</item>@@ -977,6 +1045,17 @@ <item>TEST</item> <item>VARIABLE</item> </list>+ <list name="discover_tests_nargs">+ <item>COMMAND</item>+ <item>COMMAND_EXPAND_LISTS</item>+ <item>CONFIGURATIONS</item>+ <item>DISCOVERY_ARGS</item>+ <item>DISCOVERY_MATCH</item>+ <item>DISCOVERY_PROPERTIES</item>+ <item>TEST_ARGS</item>+ <item>TEST_NAME</item>+ <item>TEST_PROPERTIES</item>+ </list> <list name="enable_language_nargs"> <item>OPTIONAL</item> </list>@@ -986,6 +1065,7 @@ <item>ASM_MARMASM</item> <item>ASM_MASM</item> <item>ASM_NASM</item>+ <item>ASM_POASM</item> <item>C</item> <item>CSharp</item> <item>CUDA</item>@@ -1002,16 +1082,34 @@ <list name="export_nargs"> <item>ANDROID_MK</item> <item>APPEND</item>+ <item>APPENDIX</item> <item>AUTO</item>+ <item>COMPAT_VERSION</item>+ <item>CXX_MODULES_DIRECTORY</item>+ <item>DEFAULT_CONFIGURATIONS</item>+ <item>DEFAULT_LICENSE</item>+ <item>DEFAULT_TARGETS</item>+ <item>DESCRIPTION</item> <item>ENABLED</item> <item>EXPORT</item> <item>EXPORT_LINK_INTERFACE_LIBRARIES</item> <item>FILE</item>+ <item>FORMAT</item>+ <item>HOMEPAGE_URL</item>+ <item>LICENSE</item>+ <item>LOWER_CASE_FILE</item> <item>NAMESPACE</item>+ <item>NO_PROJECT_METADATA</item> <item>PACKAGE_DEPENDENCY</item>+ <item>PACKAGE_INFO</item>+ <item>PACKAGE_URL</item>+ <item>PROJECT</item>+ <item>SBOM</item> <item>SETUP</item> <item>TARGET</item> <item>TARGETS</item>+ <item>VERSION</item>+ <item>VERSION_SCHEMA</item> <item>XCFRAMEWORK_LOCATION</item> </list> <list name="get_source_file_property_nargs">@@ -1032,11 +1130,18 @@ <item>TYPE</item> </list> <list name="install_nargs">+ <item>APPENDIX</item> <item>ARCHIVE</item> <item>BUNDLE</item> <item>CODE</item>+ <item>COMPAT_VERSION</item> <item>COMPONENT</item> <item>CONFIGURATIONS</item>+ <item>CXX_MODULES_DIRECTORY</item>+ <item>DEFAULT_CONFIGURATIONS</item>+ <item>DEFAULT_LICENSE</item>+ <item>DEFAULT_TARGETS</item>+ <item>DESCRIPTION</item> <item>DESTINATION</item> <item>DIRECTORIES</item> <item>DIRECTORY</item>@@ -1052,17 +1157,24 @@ <item>FILES_MATCHING</item> <item>FILE_PERMISSIONS</item> <item>FILE_SET</item>+ <item>FORMAT</item> <item>FRAMEWORK</item>+ <item>HOMEPAGE_URL</item> <item>IMPORTED_RUNTIME_ARTIFACTS</item> <item>INCLUDES</item> <item>LIBRARY</item>+ <item>LICENSE</item>+ <item>LOWER_CASE_FILE</item> <item>MESSAGE_NEVER</item> <item>NAMELINK_COMPONENT</item> <item>NAMELINK_ONLY</item> <item>NAMELINK_SKIP</item> <item>NAMESPACE</item>+ <item>NO_PROJECT_METADATA</item> <item>OBJECTS</item> <item>OPTIONAL</item>+ <item>PACKAGE_INFO</item>+ <item>PACKAGE_URL</item> <item>PATTERN</item> <item>PERMISSIONS</item> <item>POST_EXCLUDE_FILES</item>@@ -1073,6 +1185,7 @@ <item>PRE_INCLUDE_REGEXES</item> <item>PRIVATE_HEADER</item> <item>PROGRAMS</item>+ <item>PROJECT</item> <item>PUBLIC_HEADER</item> <item>REGEX</item> <item>RENAME</item>@@ -1080,10 +1193,13 @@ <item>RUNTIME</item> <item>RUNTIME_DEPENDENCIES</item> <item>RUNTIME_DEPENDENCY_SET</item>+ <item>SBOM</item> <item>SCRIPT</item> <item>TARGETS</item> <item>TYPE</item> <item>USE_SOURCE_PERMISSIONS</item>+ <item>VERSION</item>+ <item>VERSION_SCHEMA</item> </list> <list name="install_sargs"> <item>BIN</item>@@ -1127,14 +1243,17 @@ <item>READ_WITH_PREFIX</item> </list> <list name="project_nargs">+ <item>COMPAT_VERSION</item> <item>DESCRIPTION</item> <item>HOMEPAGE_URL</item> <item>LANGUAGES</item>+ <item>SPDX_LICENSE</item> <item>VERSION</item> </list> <list name="project_sargs"> <item>ASM</item> <item>ASM-ATT</item>+ <item>ASM_MARMASM</item> <item>ASM_MASM</item> <item>ASM_NASM</item> <item>C</item>@@ -1285,6 +1404,7 @@ <list name="target_sources_sargs"> <item>CXX_MODULES</item> <item>HEADERS</item>+ <item>SOURCES</item> </list> <list name="try_compile_nargs"> <item>BINARY_DIR</item>@@ -1338,6 +1458,9 @@ <item>FLAGS</item> <item>NUMBER_ERRORS</item> <item>NUMBER_WARNINGS</item>+ <item>PARALLEL_LEVEL</item>+ <item>PRESET</item>+ <item>PRESETS_FILE</item> <item>PROJECT_NAME</item> <item>RETURN_VALUE</item> <item>TARGET</item>@@ -1347,6 +1470,8 @@ <item>BUILD</item> <item>CAPTURE_CMAKE_ERROR</item> <item>OPTIONS</item>+ <item>PRESET</item>+ <item>PRESETS_FILE</item> <item>QUIET</item> <item>RETURN_VALUE</item> <item>SOURCE</item>@@ -1362,6 +1487,7 @@ <list name="ctest_memcheck_nargs"> <item>APPEND</item> <item>BUILD</item>+ <item>CAPTURE_CMAKE_ERROR</item> <item>DEFECT_COUNT</item> <item>END</item> <item>EXCLUDE</item>@@ -1371,11 +1497,17 @@ <item>EXCLUDE_LABEL</item> <item>INCLUDE</item> <item>INCLUDE_LABEL</item>+ <item>OUTPUT_JUNIT</item> <item>PARALLEL_LEVEL</item>+ <item>PRESET</item>+ <item>PRESETS_FILE</item> <item>QUIET</item>+ <item>REPEAT</item>+ <item>RESOURCE_SPEC_FILE</item> <item>RETURN_VALUE</item> <item>SCHEDULE_RANDOM</item> <item>START</item>+ <item>STOP_ON_FAILURE</item> <item>STOP_TIME</item> <item>STRIDE</item> <item>TEST_LOAD</item>@@ -1416,9 +1548,13 @@ <item>INCLUDE</item> <item>INCLUDE_FROM_FILE</item> <item>INCLUDE_LABEL</item>+ <item>OUTPUT_JUNIT</item> <item>PARALLEL_LEVEL</item>+ <item>PRESET</item>+ <item>PRESETS_FILE</item> <item>QUIET</item> <item>REPEAT</item>+ <item>RESOURCE_SPEC_FILE</item> <item>RETURN_VALUE</item> <item>SCHEDULE_RANDOM</item> <item>START</item>@@ -1433,9 +1569,12 @@ <item>UNTIL_PASS</item> </list> <list name="ctest_update_nargs">+ <item>CAPTURE_CMAKE_ERROR</item> <item>QUIET</item> <item>RETURN_VALUE</item> <item>SOURCE</item>+ <item>VERSION_ONLY</item>+ <item>VERSION_OVERRIDE</item> </list> <list name="ctest_upload_nargs"> <item>CAPTURE_CMAKE_ERROR</item>@@ -1494,6 +1633,7 @@ <list name="check_type_size_nargs"> <item>BUILTIN_TYPES_ONLY</item> <item>LANGUAGE</item>+ <item>RESULT_VARIABLE</item> </list> <list name="cmake_add_fortran_subdirectory_nargs"> <item>ARCHIVE_DIR</item>@@ -1520,8 +1660,11 @@ <list name="write_basic_package_version_file_sargs"> <item>AnyNewerVersion</item> <item>ExactVersion</item>+ <item>SameFullVersion</item> <item>SameMajorVersion</item> <item>SameMinorVersion</item>+ <item>SamePatchVersion</item>+ <item>SemanticVersion</item> </list> <list name="generate_apple_platform_selection_file_nargs"> <item>INSTALL_DESTINATION</item>@@ -1662,6 +1805,15 @@ <item>TARBALL</item> <item>TARBALL_COMPRESSION</item> </list>+ <list name="ctest_coverage_collect_gcov_sargs">+ <item>BZIP2</item>+ <item>FROM_EXT</item>+ <item>GZIP</item>+ <item>LZMA</item>+ <item>LZMA2</item>+ <item>XZ</item>+ <item>ZSTD</item>+ </list> <list name="ExternalData_Add_Target_nargs"> <item>SHOW_PROGRESS</item> </list>@@ -1676,6 +1828,8 @@ <item>CMAKE_CACHE_ARGS</item> <item>CMAKE_CACHE_DEFAULT_ARGS</item> <item>CMAKE_COMMAND</item>+ <item>CMAKE_EP_GIT_CLONE_RETRY_COUNT</item>+ <item>CMAKE_EP_GIT_CLONE_RETRY_DELAY</item> <item>CMAKE_GENERATOR</item> <item>CMAKE_GENERATOR_INSTANCE</item> <item>CMAKE_GENERATOR_PLATFORM</item>@@ -1981,6 +2135,7 @@ <item>ENTRY_POINT</item> <item>GENERATE_NATIVE_HEADERS</item> <item>INCLUDE_JARS</item>+ <item>INCLUDE_MODULES</item> <item>INSTALL</item> <item>MANIFEST</item> <item>NAMESPACE</item>@@ -2035,15 +2190,18 @@ <item>WINDOWTITLE</item> </list> <list name="swig_add_library_nargs">+ <item>DEBUG_POSTFIX</item> <item>LANGUAGE</item>- <item>MODULE</item> <item>NO_PROXY</item> <item>OUTFILE_DIR</item> <item>OUTPUT_DIR</item>- <item>SHARED</item> <item>SOURCES</item>- <item>STATIC</item> <item>TYPE</item>+ </list>+ <list name="swig_add_library_sargs">+ <item>MODULE</item>+ <item>SHARED</item>+ <item>STATIC</item> <item>USE_BUILD_SHARED_LIBS</item> </list> <list name="squish_add_test_nargs">@@ -2156,6 +2314,7 @@ <item>MODULE</item> <item>SHARED</item> <item>STATIC</item>+ <item>USE_SABI</item> <item>WITH_SOABI</item> </list> <list name="Subversion_WC_INFO_nargs">@@ -2213,6 +2372,7 @@ <item>Boost_USE_MULTITHREADED</item> <item>Boost_USE_RELEASE_LIBS</item> <item>Boost_USE_STATIC_LIBS</item>+ <item>Boost_USE_STATIC_RUNTIME</item> <item>Boost_USE_STLPORT</item> <item>Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS</item> <item>Boost_VERSION_COUNT</item>@@ -2257,6 +2417,9 @@ <item>CMAKE_AR</item> <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item> <item>CMAKE_ARGC</item>+ <item>CMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG</item>+ <item>CMAKE_AUTOGEN_COMMAND_LINE_LENGTH_MAX</item>+ <item>CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY</item> <item>CMAKE_AUTOGEN_ORIGIN_DEPENDS</item> <item>CMAKE_AUTOGEN_PARALLEL</item> <item>CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE</item>@@ -2264,6 +2427,8 @@ <item>CMAKE_AUTOMOC</item> <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item> <item>CMAKE_AUTOMOC_EXECUTABLE</item>+ <item>CMAKE_AUTOMOC_INCLUDE_DIRECTORIES</item>+ <item>CMAKE_AUTOMOC_MACRO_NAMES</item> <item>CMAKE_AUTOMOC_MOC_OPTIONS</item> <item>CMAKE_AUTOMOC_PATH_PREFIX</item> <item>CMAKE_AUTORCC</item>@@ -2276,7 +2441,6 @@ <item>CMAKE_BINARY_DIR</item> <item>CMAKE_BUILD_RPATH</item> <item>CMAKE_BUILD_RPATH_USE_ORIGIN</item>- <item>CMAKE_BUILD_TOOL</item> <item>CMAKE_BUILD_TYPE</item> <item>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</item> <item>CMAKE_BUILD_WITH_INSTALL_RPATH</item>@@ -2322,13 +2486,18 @@ <item>CMAKE_CURRENT_LIST_FILE</item> <item>CMAKE_CURRENT_LIST_LINE</item> <item>CMAKE_CURRENT_SOURCE_DIR</item>+ <item>CMAKE_CXX_COMPILE_BMI</item> <item>CMAKE_CXX_COMPILE_FEATURES</item> <item>CMAKE_CXX_EXTENSIONS</item> <item>CMAKE_CXX_LINK_NO_PIE_SUPPORTED</item> <item>CMAKE_CXX_LINK_PIE_SUPPORTED</item>+ <item>CMAKE_CXX_MODULE_BMI_ONLY_FLAG</item>+ <item>CMAKE_CXX_MODULE_MAP_FLAG</item>+ <item>CMAKE_CXX_MODULE_MAP_FORMAT</item> <item>CMAKE_CXX_SCAN_FOR_MODULES</item> <item>CMAKE_CXX_STANDARD</item> <item>CMAKE_CXX_STANDARD_REQUIRED</item>+ <item>CMAKE_CXX_STDLIB_MODULES_JSON</item> <item>CMAKE_C_COMPILE_FEATURES</item> <item>CMAKE_C_EXTENSIONS</item> <item>CMAKE_C_LINK_NO_PIE_SUPPORTED</item>@@ -2370,6 +2539,7 @@ <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item> <item>CMAKE_FIND_APPBUNDLE</item> <item>CMAKE_FIND_DEBUG_MODE</item>+ <item>CMAKE_FIND_DEBUG_MODE_NO_IMPLICIT_CONFIGURE_LOG</item> <item>CMAKE_FIND_FRAMEWORK</item> <item>CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS</item> <item>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</item>@@ -2384,6 +2554,7 @@ <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item> <item>CMAKE_FIND_PACKAGE_TARGETS_GLOBAL</item> <item>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</item>+ <item>CMAKE_FIND_REQUIRED</item> <item>CMAKE_FIND_ROOT_PATH</item> <item>CMAKE_FIND_ROOT_PATH_MODE_INCLUDE</item> <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item>@@ -2505,6 +2676,7 @@ <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS</item> <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP</item> <item>CMAKE_INSTALL_UCRT_LIBRARIES</item>+ <item>CMAKE_INTERMEDIATE_DIR_STRATEGY</item> <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item> <item>CMAKE_ISPC_HEADER_DIRECTORY</item> <item>CMAKE_ISPC_HEADER_SUFFIX</item>@@ -2613,11 +2785,13 @@ <item>CMAKE_POSITION_INDEPENDENT_CODE</item> <item>CMAKE_PREFIX_PATH</item> <item>CMAKE_PROGRAM_PATH</item>+ <item>CMAKE_PROJECT_COMPAT_VERSION</item> <item>CMAKE_PROJECT_DESCRIPTION</item> <item>CMAKE_PROJECT_HOMEPAGE_URL</item> <item>CMAKE_PROJECT_INCLUDE</item> <item>CMAKE_PROJECT_INCLUDE_BEFORE</item> <item>CMAKE_PROJECT_NAME</item>+ <item>CMAKE_PROJECT_SPDX_LICENSE</item> <item>CMAKE_PROJECT_TOP_LEVEL_INCLUDES</item> <item>CMAKE_PROJECT_VERSION</item> <item>CMAKE_PROJECT_VERSION_MAJOR</item>@@ -2633,6 +2807,7 @@ <item>CMAKE_REQUIRED_LINK_OPTIONS</item> <item>CMAKE_REQUIRED_QUIET</item> <item>CMAKE_ROOT</item>+ <item>CMAKE_RULE_MESSAGES</item> <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item> <item>CMAKE_SCRIPT_MODE_FILE</item> <item>CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS</item>@@ -2647,6 +2822,7 @@ <item>CMAKE_SKIP_INSTALL_ALL_DEPENDENCY</item> <item>CMAKE_SKIP_INSTALL_RPATH</item> <item>CMAKE_SKIP_INSTALL_RULES</item>+ <item>CMAKE_SKIP_LINTING</item> <item>CMAKE_SKIP_RPATH</item> <item>CMAKE_SKIP_TEST_ALL_DEPENDENCY</item> <item>CMAKE_SOURCE_DIR</item>@@ -2679,7 +2855,10 @@ <item>CMAKE_Swift_LANGUAGE_VERSION</item> <item>CMAKE_Swift_MODULE_DIRECTORY</item> <item>CMAKE_Swift_NUM_THREADS</item>+ <item>CMAKE_Swift_SEPARATE_MODULE_EMISSION</item>+ <item>CMAKE_TARGET_MESSAGES</item> <item>CMAKE_TASKING_TOOLSET</item>+ <item>CMAKE_TEST_BUILD_DEPENDS</item> <item>CMAKE_TEST_LAUNCHER</item> <item>CMAKE_THREAD_LIBS_INIT</item> <item>CMAKE_THREAD_PREFER_PTHREAD</item>@@ -2691,12 +2870,15 @@ <item>CMAKE_TWEAK_VERSION</item> <item>CMAKE_UNITY_BUILD</item> <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item>+ <item>CMAKE_UNITY_BUILD_RELOCATABLE</item>+ <item>CMAKE_UNITY_BUILD_UNIQUE_ID</item> <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item> <item>CMAKE_USE_PTHREADS_INIT</item> <item>CMAKE_USE_SPROC_INIT</item> <item>CMAKE_USE_WIN32_THREADS_INIT</item> <item>CMAKE_VERBOSE_MAKEFILE</item> <item>CMAKE_VERIFY_INTERFACE_HEADER_SETS</item>+ <item>CMAKE_VERIFY_PRIVATE_HEADER_SETS</item> <item>CMAKE_VERSION</item> <item>CMAKE_VISIBILITY_INLINES_HIDDEN</item> <item>CMAKE_VS_DEBUGGER_COMMAND</item>@@ -2734,7 +2916,6 @@ <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item> <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM</item> <item>CMAKE_VS_WINRT_BY_DEFAULT</item>- <item>CMAKE_WARN_DEPRECATED</item> <item>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item> <item>CMAKE_WATCOM_RUNTIME_LIBRARY</item> <item>CMAKE_WIN32_EXECUTABLE</item>@@ -2771,10 +2952,26 @@ <item>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</item> <item>CMAKE_XCODE_XCCONFIG</item> <item>CPACK_ABSOLUTE_DESTINATION_FILES</item>+ <item>CPACK_APPIMAGE_COMPRESSOR</item>+ <item>CPACK_APPIMAGE_DESKTOP_FILE</item>+ <item>CPACK_APPIMAGE_EXCLUDE_FILE</item>+ <item>CPACK_APPIMAGE_GUESS_UPDATE_INFORMATION</item>+ <item>CPACK_APPIMAGE_MKSQUASHFS_OPTIONS</item>+ <item>CPACK_APPIMAGE_NO_APPSTREAM</item>+ <item>CPACK_APPIMAGE_PATCHELF_EXECUTABLE</item>+ <item>CPACK_APPIMAGE_RUNTIME_FILE</item>+ <item>CPACK_APPIMAGE_SIGN</item>+ <item>CPACK_APPIMAGE_SIGN_KEY</item>+ <item>CPACK_APPIMAGE_TOOL_EXECUTABLE</item>+ <item>CPACK_APPIMAGE_UPDATE_INFORMATION</item> <item>CPACK_ARCHIVE_COMPONENT_INSTALL</item>+ <item>CPACK_ARCHIVE_COMPRESSION_LEVEL</item>+ <item>CPACK_ARCHIVE_ENCODING</item> <item>CPACK_ARCHIVE_FILE_EXTENSION</item> <item>CPACK_ARCHIVE_FILE_NAME</item>+ <item>CPACK_ARCHIVE_GID</item> <item>CPACK_ARCHIVE_THREADS</item>+ <item>CPACK_ARCHIVE_UID</item> <item>CPACK_BUILD_SOURCE_DIRS</item> <item>CPACK_BUNDLE_APPLE_CERT_APP</item> <item>CPACK_BUNDLE_APPLE_CODESIGN_FILES</item>@@ -2794,12 +2991,14 @@ <item>CPACK_COMPONENTS_ALL</item> <item>CPACK_COMPONENTS_GROUPING</item> <item>CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY</item>+ <item>CPACK_COMPRESSION_LEVEL</item> <item>CPACK_CREATE_DESKTOP_LINKS</item> <item>CPACK_CUSTOM_INSTALL_VARIABLES</item> <item>CPACK_CYGWIN_BUILD_SCRIPT</item> <item>CPACK_CYGWIN_PATCH_FILE</item> <item>CPACK_CYGWIN_PATCH_NUMBER</item> <item>CPACK_DEBIAN_ARCHIVE_TYPE</item>+ <item>CPACK_DEBIAN_COMPRESSION_LEVEL</item> <item>CPACK_DEBIAN_COMPRESSION_TYPE</item> <item>CPACK_DEBIAN_DEBUGINFO_PACKAGE</item> <item>CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS</item>@@ -2937,6 +3136,7 @@ <item>CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION</item> <item>CPACK_NSIS_COMPRESSOR</item> <item>CPACK_NSIS_CONTACT</item>+ <item>CPACK_NSIS_CRC_CHECK</item> <item>CPACK_NSIS_CREATE_ICONS_EXTRA</item> <item>CPACK_NSIS_DELETE_ICONS_EXTRA</item> <item>CPACK_NSIS_DISPLAY_NAME</item>@@ -2951,6 +3151,7 @@ <item>CPACK_NSIS_FINISH_TITLE</item> <item>CPACK_NSIS_FINISH_TITLE_3LINES</item> <item>CPACK_NSIS_HELP_LINK</item>+ <item>CPACK_NSIS_IGNORE_COMPONENTS_PAGE</item> <item>CPACK_NSIS_IGNORE_LICENSE_PAGE</item> <item>CPACK_NSIS_INSTALLED_ICON_NAME</item> <item>CPACK_NSIS_INSTALLER_MUI_ICON_CODE</item>@@ -2994,6 +3195,7 @@ <item>CPACK_NUGET_PACKAGE_TAGS</item> <item>CPACK_NUGET_PACKAGE_TFMS</item> <item>CPACK_NUGET_PACKAGE_TITLE</item>+ <item>CPACK_NUGET_SYMBOL_PACKAGE</item> <item>CPACK_OBJCOPY_EXECUTABLE</item> <item>CPACK_OBJDUMP_EXECUTABLE</item> <item>CPACK_OUTPUT_CONFIG_FILE</item>@@ -3072,6 +3274,7 @@ <item>CPACK_RPM_PACKAGE_CONFLICTS</item> <item>CPACK_RPM_PACKAGE_DEBUG</item> <item>CPACK_RPM_PACKAGE_DESCRIPTION</item>+ <item>CPACK_RPM_PACKAGE_ENHANCES</item> <item>CPACK_RPM_PACKAGE_EPOCH</item> <item>CPACK_RPM_PACKAGE_GROUP</item> <item>CPACK_RPM_PACKAGE_LICENSE</item>@@ -3089,6 +3292,7 @@ <item>CPACK_RPM_PACKAGE_SOURCES</item> <item>CPACK_RPM_PACKAGE_SUGGESTS</item> <item>CPACK_RPM_PACKAGE_SUMMARY</item>+ <item>CPACK_RPM_PACKAGE_SUPPLEMENTS</item> <item>CPACK_RPM_PACKAGE_URL</item> <item>CPACK_RPM_PACKAGE_VENDOR</item> <item>CPACK_RPM_PACKAGE_VERSION</item>@@ -3145,12 +3349,14 @@ <item>CTEST_BINARY_DIRECTORY</item> <item>CTEST_BUILD_COMMAND</item> <item>CTEST_BUILD_NAME</item>+ <item>CTEST_BUILD_PRESET</item> <item>CTEST_BZR_COMMAND</item> <item>CTEST_BZR_UPDATE_OPTIONS</item> <item>CTEST_CHANGE_ID</item> <item>CTEST_CHECKOUT_COMMAND</item> <item>CTEST_CONFIGURATION_TYPE</item> <item>CTEST_CONFIGURE_COMMAND</item>+ <item>CTEST_CONFIGURE_PRESET</item> <item>CTEST_COVERAGE_COMMAND</item> <item>CTEST_COVERAGE_EXTRA_FLAGS</item> <item>CTEST_CURL_OPTIONS</item>@@ -3198,16 +3404,21 @@ <item>CTEST_P4_COMMAND</item> <item>CTEST_P4_OPTIONS</item> <item>CTEST_P4_UPDATE_OPTIONS</item>+ <item>CTEST_PRESET</item>+ <item>CTEST_PRESETS_FILE</item> <item>CTEST_RESOURCE_SPEC_FILE</item> <item>CTEST_RUN_CURRENT_SCRIPT</item> <item>CTEST_SITE</item> <item>CTEST_SOURCE_DIRECTORY</item> <item>CTEST_SUBMIT_INACTIVITY_TIMEOUT</item>+ <item>CTEST_SUBMIT_PARTS</item> <item>CTEST_SUBMIT_URL</item> <item>CTEST_SVN_COMMAND</item> <item>CTEST_SVN_OPTIONS</item> <item>CTEST_SVN_UPDATE_OPTIONS</item>+ <item>CTEST_TEST_COVERAGE_TOOL</item> <item>CTEST_TEST_LOAD</item>+ <item>CTEST_TEST_PRESET</item> <item>CTEST_TEST_TIMEOUT</item> <item>CTEST_TLS_VERIFY</item> <item>CTEST_TLS_VERSION</item>@@ -3246,6 +3457,7 @@ <item>ExternalData_CUSTOM_LOCATION</item> <item>ExternalData_HTTPHEADERS</item> <item>ExternalData_LINK_CONTENT</item>+ <item>ExternalData_LINK_MODE</item> <item>ExternalData_NO_SYMLINKS</item> <item>ExternalData_OBJECT_STORES</item> <item>ExternalData_SERIES_MATCH</item>@@ -3254,6 +3466,7 @@ <item>ExternalData_SERIES_PARSE_PREFIX</item> <item>ExternalData_SERIES_PARSE_SUFFIX</item> <item>ExternalData_SOURCE_ROOT</item>+ <item>ExternalData_STATE_ROOT</item> <item>ExternalData_TIMEOUT_ABSOLUTE</item> <item>ExternalData_TIMEOUT_INACTIVITY</item> <item>ExternalData_URL_TEMPLATES</item>@@ -3401,6 +3614,7 @@ <item>LTTNGUST_HAS_TRACEF</item> <item>LTTNGUST_HAS_TRACELOG</item> <item>LUALATEX_COMPILER</item>+ <item>LibXml2_USE_STATIC_LIBS</item> <item>Libinput_COMPILE_OPTIONS</item> <item>MAKEINDEX_COMPILER</item> <item>MATLAB_ADDITIONAL_VERSIONS</item>@@ -3514,11 +3728,13 @@ <item>PNG_DEFINITIONS</item> <item>PNG_LIBRARY</item> <item>PROJECT_BINARY_DIR</item>+ <item>PROJECT_COMPAT_VERSION</item> <item>PROJECT_DESCRIPTION</item> <item>PROJECT_HOMEPAGE_URL</item> <item>PROJECT_IS_TOP_LEVEL</item> <item>PROJECT_NAME</item> <item>PROJECT_SOURCE_DIR</item>+ <item>PROJECT_SPDX_LICENSE</item> <item>PROJECT_VERSION</item> <item>PROJECT_VERSION_MAJOR</item> <item>PROJECT_VERSION_MINOR</item>@@ -3576,6 +3792,7 @@ <item>Python3_FIND_STRATEGY</item> <item>Python3_FIND_UNVERSIONED_NAMES</item> <item>Python3_FIND_VIRTUALENV</item>+ <item>Python3_FREE_THREADED</item> <item>Python3_INTERPRETER</item> <item>Python3_INTERPRETER_ID</item> <item>Python3_LINK_OPTIONS</item>@@ -3667,7 +3884,6 @@ <item>wxWidgets_DEFINITIONS_DEBUG</item> <item>wxWidgets_EXCLUDE_COMMON_LIBRARIES</item> <item>wxWidgets_USE_DEBUG</item>- <item>wxWidgets_USE_FILE</item> <item>wxWidgets_USE_STATIC</item> <item>wxWidgets_USE_UNICODE</item> <item>wxWidgets_USE_UNIVERSAL</item>@@ -3676,24 +3892,31 @@ <list name="deprecated-or-internal-variables"> <item>CMAKE_AUTOMOC_RELAXED_MODE</item> <item>CMAKE_BACKWARDS_COMPATIBILITY</item>+ <item>CMAKE_BUILD_TOOL</item> <item>CMAKE_COMPILER_IS_GNUCC</item> <item>CMAKE_COMPILER_IS_GNUCXX</item> <item>CMAKE_COMPILER_IS_GNUG77</item> <item>CMAKE_ENABLE_EXPORTS</item>+ <item>CMAKE_ERROR_DEPRECATED</item> <item>CMAKE_EXTRA_GENERATOR</item> <item>CMAKE_FILES_DIRECTORY</item> <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item> <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item>+ <item>CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY</item> <item>CMAKE_HOME_DIRECTORY</item> <item>CMAKE_INTERNAL_PLATFORM_ABI</item> <item>CMAKE_IOS_INSTALL_COMBINED</item> <item>CMAKE_NOT_USING_CONFIG_FLAGS</item>+ <item>CMAKE_OBJCOPY</item> <item>CMAKE_OBJDUMP</item>+ <item>CMAKE_READELF</item>+ <item>CMAKE_STRIP</item> <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item> <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item> <item>CMAKE_SYSTEM_ARCH</item> <item>CMAKE_USE_RELATIVE_PATHS</item> <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>+ <item>CMAKE_WARN_DEPRECATED</item> <item>CPACK_INSTALL_PREFIX</item> <item>CPACK_INSTALL_SCRIPT</item> <item>CPACK_PACKAGE_CONTACT</item>@@ -3703,6 +3926,8 @@ <item>CTEST_CVS_CHECKOUT</item> <item>CTEST_SCP_COMMAND</item> <item>CTEST_TRIGGER_SITE</item>+ <item>LIBXML2_FOUND</item>+ <item>LIBXML2_VERSION_STRING</item> <item>MSVC10</item> <item>MSVC11</item> <item>MSVC12</item>@@ -3712,6 +3937,7 @@ <item>MSVC71</item> <item>MSVC80</item> <item>MSVC90</item>+ <item>wxWidgets_USE_FILE</item> </list> <list name="environment-variables">@@ -3721,12 +3947,14 @@ <item>CFLAGS</item> <item>CMAKE_APPBUNDLE_PATH</item> <item>CMAKE_APPLE_SILICON_PROCESSOR</item>+ <item>CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY</item> <item>CMAKE_BUILD_PARALLEL_LEVEL</item> <item>CMAKE_BUILD_TYPE</item> <item>CMAKE_COLOR_DIAGNOSTICS</item> <item>CMAKE_CONFIGURATION_TYPES</item> <item>CMAKE_CONFIG_TYPE</item> <item>CMAKE_CROSSCOMPILING_EMULATOR</item>+ <item>CMAKE_DISABLE_PRECOMPILE_HEADERS</item> <item>CMAKE_EXPORT_BUILD_DATABASE</item> <item>CMAKE_EXPORT_COMPILE_COMMANDS</item> <item>CMAKE_FRAMEWORK_PATH</item>@@ -3737,6 +3965,7 @@ <item>CMAKE_INCLUDE_PATH</item> <item>CMAKE_INSTALL_MODE</item> <item>CMAKE_INSTALL_PREFIX</item>+ <item>CMAKE_INTERMEDIATE_DIR_STRATEGY</item> <item>CMAKE_LIBRARY_PATH</item> <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item> <item>CMAKE_MSVCIDE_RUN_PATH</item>@@ -3896,6 +4125,7 @@ <item>AUTOMOC_COMPILER_PREDEFINES</item> <item>AUTOMOC_DEPEND_FILTERS</item> <item>AUTOMOC_EXECUTABLE</item>+ <item>AUTOMOC_INCLUDE_DIRECTORIES</item> <item>AUTOMOC_MACRO_NAMES</item> <item>AUTOMOC_MOC_OPTIONS</item> <item>AUTOMOC_PATH_PREFIX</item>@@ -3986,6 +4216,11 @@ <item>IMPORTED</item> <item>IMPORTED_COMMON_LANGUAGE_RUNTIME</item> <item>IMPORTED_CONFIGURATIONS</item>+ <item>IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS</item>+ <item>IMPORTED_CXX_MODULES_COMPILE_FEATURES</item>+ <item>IMPORTED_CXX_MODULES_COMPILE_OPTIONS</item>+ <item>IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES</item>+ <item>IMPORTED_CXX_MODULES_LINK_LIBRARIES</item> <item>IMPORTED_GLOBAL</item> <item>IMPORTED_IMPLIB</item> <item>IMPORTED_LIBNAME</item>@@ -4002,6 +4237,8 @@ <item>IMPORT_SUFFIX</item> <item>INCLUDE_DIRECTORIES</item> <item>INSTALL_NAME_DIR</item>+ <item>INSTALL_OBJECT_NAME_STRATEGY</item>+ <item>INSTALL_OBJECT_ONLY_USE_DESTINATION</item> <item>INSTALL_REMOVE_ENVIRONMENT_RPATH</item> <item>INSTALL_RPATH</item> <item>INSTALL_RPATH_USE_LINK_PATH</item>@@ -4089,6 +4326,7 @@ <item>PRECOMPILE_HEADERS_REUSE_FROM</item> <item>PREFIX</item> <item>PRIVATE_HEADER</item>+ <item>PRIVATE_HEADER_SETS_TO_VERIFY</item> <item>PROJECT_LABEL</item> <item>PUBLIC_HEADER</item> <item>RESOURCE</item>@@ -4098,9 +4336,11 @@ <item>RUNTIME_OUTPUT_DIRECTORY</item> <item>RUNTIME_OUTPUT_NAME</item> <item>SKIP_BUILD_RPATH</item>+ <item>SKIP_LINTING</item> <item>SOURCES</item> <item>SOURCE_DIR</item> <item>SOVERSION</item>+ <item>SPDX_LICENSE</item> <item>STATIC_LIBRARY_FLAGS</item> <item>STATIC_LIBRARY_OPTIONS</item> <item>SUFFIX</item>@@ -4110,6 +4350,8 @@ <item>Swift_LANGUAGE_VERSION</item> <item>Swift_MODULE_DIRECTORY</item> <item>Swift_MODULE_NAME</item>+ <item>Swift_PACKAGE_NAME</item>+ <item>Swift_SEPARATE_MODULE_EMISSION</item> <item>TEST_LAUNCHER</item> <item>TRANSITIVE_COMPILE_PROPERTIES</item> <item>TRANSITIVE_LINK_PROPERTIES</item>@@ -4118,9 +4360,11 @@ <item>UNITY_BUILD_BATCH_SIZE</item> <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item> <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>+ <item>UNITY_BUILD_FILENAME_PREFIX</item> <item>UNITY_BUILD_MODE</item> <item>UNITY_BUILD_UNIQUE_ID</item> <item>VERIFY_INTERFACE_HEADER_SETS</item>+ <item>VERIFY_PRIVATE_HEADER_SETS</item> <item>VERSION</item> <item>VISIBILITY_INLINES_HIDDEN</item> <item>VS_CONFIGURATION_TYPE</item>@@ -4200,6 +4444,56 @@ <item>XCODE_XCCONFIG</item> <item>XCTEST</item> </list>+ <list name="fileset-properties">+ <item>BASE_DIRS</item>+ <item>COMPILE_DEFINITIONS</item>+ <item>COMPILE_OPTIONS</item>+ <item>CXX_SCAN_FOR_MODULES</item>+ <item>INCLUDE_DIRECTORIES</item>+ <item>INDEPENDENT_FILES</item>+ <item>INTERFACE_COMPILE_DEFINITIONS</item>+ <item>INTERFACE_COMPILE_OPTIONS</item>+ <item>INTERFACE_INCLUDE_DIRECTORIES</item>+ <item>INTERFACE_SOURCES</item>+ <item>JOB_POOL_COMPILE</item>+ <item>SCOPE</item>+ <item>SKIP_LINTING</item>+ <item>SKIP_PRECOMPILE_HEADERS</item>+ <item>SKIP_UNITY_BUILD_INCLUSION</item>+ <item>SOURCES</item>+ <item>TYPE</item>+ </list>+ <list name="test-properties">+ <item>ATTACHED_FILES</item>+ <item>ATTACHED_FILES_ON_FAIL</item>+ <item>COST</item>+ <item>DEPENDS</item>+ <item>DISABLED</item>+ <item>ENVIRONMENT</item>+ <item>ENVIRONMENT_MODIFICATION</item>+ <item>FAIL_REGULAR_EXPRESSION</item>+ <item>FIXTURES_CLEANUP</item>+ <item>FIXTURES_REQUIRED</item>+ <item>FIXTURES_SETUP</item>+ <item>GENERATED_RESOURCE_SPEC_FILE</item>+ <item>LABELS</item>+ <item>MEASUREMENT</item>+ <item>PASS_REGULAR_EXPRESSION</item>+ <item>PROCESSORS</item>+ <item>PROCESSOR_AFFINITY</item>+ <item>REQUIRED_FILES</item>+ <item>RESOURCE_GROUPS</item>+ <item>RESOURCE_LOCK</item>+ <item>RUN_SERIAL</item>+ <item>SKIP_REGULAR_EXPRESSION</item>+ <item>SKIP_RETURN_CODE</item>+ <item>TIMEOUT</item>+ <item>TIMEOUT_AFTER_MATCH</item>+ <item>TIMEOUT_SIGNAL_GRACE_PERIOD</item>+ <item>TIMEOUT_SIGNAL_NAME</item>+ <item>WILL_FAIL</item>+ <item>WORKING_DIRECTORY</item>+ </list> <list name="source-properties"> <item>ABSTRACT</item> <item>AUTORCC_OPTIONS</item>@@ -4214,12 +4508,15 @@ <item>GENERATED</item> <item>HEADER_FILE_ONLY</item> <item>INCLUDE_DIRECTORIES</item>+ <item>INSTALL_OBJECT_NAME</item>+ <item>JOB_POOL_COMPILE</item> <item>KEEP_EXTENSION</item> <item>LABELS</item> <item>LANGUAGE</item> <item>LOCATION</item> <item>MACOSX_PACKAGE_LOCATION</item> <item>OBJECT_DEPENDS</item>+ <item>OBJECT_NAME</item> <item>OBJECT_OUTPUTS</item> <item>SKIP_AUTOGEN</item> <item>SKIP_AUTOMOC</item>@@ -4254,37 +4551,6 @@ <item>XCODE_FILE_ATTRIBUTES</item> <item>XCODE_LAST_KNOWN_FILE_TYPE</item> </list>- <list name="test-properties">- <item>ATTACHED_FILES</item>- <item>ATTACHED_FILES_ON_FAIL</item>- <item>COST</item>- <item>DEPENDS</item>- <item>DISABLED</item>- <item>ENVIRONMENT</item>- <item>ENVIRONMENT_MODIFICATION</item>- <item>FAIL_REGULAR_EXPRESSION</item>- <item>FIXTURES_CLEANUP</item>- <item>FIXTURES_REQUIRED</item>- <item>FIXTURES_SETUP</item>- <item>GENERATED_RESOURCE_SPEC_FILE</item>- <item>LABELS</item>- <item>MEASUREMENT</item>- <item>PASS_REGULAR_EXPRESSION</item>- <item>PROCESSORS</item>- <item>PROCESSOR_AFFINITY</item>- <item>REQUIRED_FILES</item>- <item>RESOURCE_GROUPS</item>- <item>RESOURCE_LOCK</item>- <item>RUN_SERIAL</item>- <item>SKIP_REGULAR_EXPRESSION</item>- <item>SKIP_RETURN_CODE</item>- <item>TIMEOUT</item>- <item>TIMEOUT_AFTER_MATCH</item>- <item>TIMEOUT_SIGNAL_GRACE_PERIOD</item>- <item>TIMEOUT_SIGNAL_NAME</item>- <item>WILL_FAIL</item>- <item>WORKING_DIRECTORY</item>- </list> <list name="cache-properties"> <item>ADVANCED</item> <item>HELPSTRING</item>@@ -4310,13 +4576,17 @@ <item>AND</item> <item>OR</item> <item>NOT</item>- <item>STREQUAL</item> <item>EQUAL</item> <item>VERSION_LESS</item> <item>VERSION_GREATER</item> <item>VERSION_EQUAL</item> <item>VERSION_LESS_EQUAL</item> <item>VERSION_GREATER_EQUAL</item>+ <item>STREQUAL</item>+ <item>STRLESS</item>+ <item>STRGREATER</item>+ <item>STRLESS_EQUAL</item>+ <item>STRGREATER_EQUAL</item> <item>LOWER_CASE</item> <item>UPPER_CASE</item> <item>MAKE_C_IDENTIFIER</item>@@ -4365,12 +4635,29 @@ <item>LINK_ONLY</item> <item>DEVICE_LINK</item> <item>HOST_LINK</item>+ <item>C_COMPILER_LINKER_ID</item>+ <item>CXX_COMPILER_LINKER_ID</item>+ <item>CUDA_COMPILER_LINKER_ID</item>+ <item>OBJC_COMPILER_LINKER_ID</item>+ <item>OBJCXX_COMPILER_LINKER_ID</item>+ <item>Fortran_COMPILER_LINKER_ID</item>+ <item>HIP_COMPILER_LINKER_ID</item>+ <item>C_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>CXX_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>CUDA_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>OBJC_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>OBJCXX_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>Fortran_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>HIP_COMPILER_LINKER_FRONTEND_VARIANT</item>+ <item>SOURCE_EXISTS</item>+ <item>SOURCE_PROPERTY</item>+ <item>FILE_SET_EXISTS</item>+ <item>FILE_SET_PROPERTY</item> <item>TARGET_EXISTS</item> <item>TARGET_NAME_IF_EXISTS</item> <item>TARGET_NAME</item>- <item>TARGET_PROPERTY</item>- <item>TARGET_OBJECTS</item> <item>TARGET_POLICY</item>+ <item>TARGET_PROPERTY</item> <item>TARGET_FILE</item> <item>TARGET_FILE_BASE_NAME</item> <item>TARGET_FILE_PREFIX</item>@@ -4389,18 +4676,35 @@ <item>TARGET_LINKER_FILE_SUFFIX</item> <item>TARGET_LINKER_FILE_NAME</item> <item>TARGET_LINKER_FILE_DIR</item>+ <item>TARGET_LINKER_LIBRARY_FILE</item>+ <item>TARGET_LINKER_LIBRARY_FILE_BASE_NAME</item>+ <item>TARGET_LINKER_LIBRARY_FILE_PREFIX</item>+ <item>TARGET_LINKER_LIBRARY_FILE_SUFFIX</item>+ <item>TARGET_LINKER_LIBRARY_FILE_NAME</item>+ <item>TARGET_LINKER_LIBRARY_FILE_DIR</item>+ <item>TARGET_LINKER_IMPORT_FILE</item>+ <item>TARGET_LINKER_IMPORT_FILE_BASE_NAME</item>+ <item>TARGET_LINKER_IMPORT_FILE_PREFIX</item>+ <item>TARGET_LINKER_IMPORT_FILE_SUFFIX</item>+ <item>TARGET_LINKER_IMPORT_FILE_NAME</item>+ <item>TARGET_LINKER_IMPORT_FILE_DIR</item> <item>TARGET_SONAME_FILE</item> <item>TARGET_SONAME_FILE_NAME</item> <item>TARGET_SONAME_FILE_DIR</item>+ <item>TARGET_SONAME_IMPORT_FILE</item>+ <item>TARGET_SONAME_IMPORT_FILE_NAME</item>+ <item>TARGET_SONAME_IMPORT_FILE_DIR</item> <item>TARGET_PDB_FILE</item> <item>TARGET_PDB_FILE_BASE_NAME</item> <item>TARGET_PDB_FILE_NAME</item> <item>TARGET_PDB_FILE_DIR</item>- <item>TARGET_BUNDLE_DIR_NAME</item> <item>TARGET_BUNDLE_DIR</item>+ <item>TARGET_BUNDLE_DIR_NAME</item> <item>TARGET_BUNDLE_CONTENT_DIR</item>+ <item>TARGET_OBJECTS</item> <item>TARGET_RUNTIME_DLLS</item> <item>TARGET_RUNTIME_DLL_DIRS</item>+ <item>TARGET_INTERMEDIATE_DIR</item> <item>INSTALL_INTERFACE</item> <item>BUILD_INTERFACE</item> <item>BUILD_LOCAL_INTERFACE</item>@@ -4412,6 +4716,27 @@ <item>SEMICOLON</item> <item>QUOTE</item> </list>+ <list name="genex-STRING-subcommands">+ <item>LENGTH</item>+ <item>SUBSTRING</item>+ <item>FIND</item>+ <item>MATCH</item>+ <item>JOIN</item>+ <item>ASCII</item>+ <item>TIMESTAMP</item>+ <item>RANDOM</item>+ <item>UUID</item>+ <item>REPLACE</item>+ <item>APPEND</item>+ <item>PREPEND</item>+ <item>TOLOWER</item>+ <item>TOUPPER</item>+ <item>STRIP</item>+ <item>QUOTE</item>+ <item>HEX</item>+ <item>HASH</item>+ <item>MAKE_C_IDENTIFIER</item>+ </list> <list name="genex-LIST-subcommands"> <item>LENGTH</item> <item>GET</item>@@ -4554,7 +4879,6 @@ <item>Boost</item> <item>Bullet</item> <item>BZip2</item>- <item>CABLE</item> <item>Coin3D</item> <item>CUDAToolkit</item> <item>Cups</item>@@ -4573,7 +4897,6 @@ <item>FLTK2</item> <item>Fontconfig</item> <item>Freetype</item>- <item>GCCXML</item> <item>Gettext</item> <item>GIF</item> <item>Git</item>@@ -4735,6 +5058,8 @@ <item>CPackWIX</item> <item>GetPrerequisites</item> <item>TestBigEndian</item>+ <item>FindGCCXML</item>+ <item>FindCABLE</item> </list> @@ -4764,6 +5089,7 @@ <DetectSpaces/> <WordDetect String="block" insensitive="true" attribute="Command" context="block_ctx" beginRegion="block"/> <WordDetect String="break" insensitive="true" attribute="Control Flow" context="break_ctx"/>+ <WordDetect String="cmake_diagnostic" insensitive="true" attribute="Command" context="cmake_diagnostic_ctx"/> <WordDetect String="cmake_host_system_information" insensitive="true" attribute="Command" context="cmake_host_system_information_ctx"/> <WordDetect String="cmake_language" insensitive="true" attribute="Command" context="cmake_language_ctx"/> <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx"/>@@ -4827,8 +5153,10 @@ <WordDetect String="aux_source_directory" insensitive="true" attribute="Command" context="function_ctx"/> <WordDetect String="build_command" insensitive="true" attribute="Command" context="build_command_ctx"/> <WordDetect String="cmake_file_api" insensitive="true" attribute="Command" context="cmake_file_api_ctx"/>+ <WordDetect String="cmake_instrumentation" insensitive="true" attribute="Command" context="cmake_instrumentation_ctx"/> <WordDetect String="create_test_sourcelist" insensitive="true" attribute="Command" context="create_test_sourcelist_ctx"/> <WordDetect String="define_property" insensitive="true" attribute="Command" context="define_property_ctx"/>+ <WordDetect String="discover_tests" insensitive="true" attribute="Command" context="discover_tests_ctx"/> <WordDetect String="enable_language" insensitive="true" attribute="Command" context="enable_language_ctx"/> <WordDetect String="enable_testing" insensitive="true" attribute="Command" context="function_ctx"/> <WordDetect String="export" insensitive="true" attribute="Command" context="export_ctx"/>@@ -5038,6 +5366,7 @@ <WordDetect String="protobuf_generate_python" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/> <WordDetect String="protobuf_generate" insensitive="true" attribute="CMake Provided Function/Macro" context="protobuf_generate_ctx"/> <WordDetect String="Python_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="Python_add_library_ctx"/>+ <WordDetect String="Python3_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="Python_add_library_ctx"/> <WordDetect String="Subversion_WC_INFO" insensitive="true" attribute="CMake Provided Function/Macro" context="Subversion_WC_INFO_ctx"/> <WordDetect String="Subversion_WC_LOG" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/> <WordDetect String="xctest_add_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>@@ -5065,6 +5394,17 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_diagnostic_ctx">+ <DetectChar attribute="Normal Text" context="cmake_diagnostic_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_diagnostic_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="cmake_diagnostic_nargs"/>+ <keyword attribute="Special Args" context="#stay" String="cmake_diagnostic_sargs"/>+ <IncludeRules context="User Function Args"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx"> <DetectChar attribute="Normal Text" context="cmake_host_system_information_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5161,10 +5501,18 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="elseif_ctx_op_nested" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/> <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="elseif_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="elseif_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op_nested"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5297,10 +5645,12 @@ <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <WordDetect String="TARGET" attribute="Named Args" context="get_property_tgts"/> <keyword attribute="Named Args" context="#stay" String="get_property_nargs"/> <keyword attribute="Property" context="#stay" String="cache-properties"/> <keyword attribute="Property" context="#stay" String="directory-properties"/> <IncludeRules context="Detect More directory-properties"/>+ <keyword attribute="Property" context="#stay" String="fileset-properties"/> <keyword attribute="Property" context="#stay" String="global-properties"/> <IncludeRules context="Detect More global-properties"/> <keyword attribute="Property" context="#stay" String="install-properties"/>@@ -5311,6 +5661,13 @@ <keyword attribute="Property" context="#stay" String="test-properties"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="get_property_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="get_property_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx"> <DetectChar attribute="Normal Text" context="if_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5319,7 +5676,8 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="if_ctx_op_nested" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/> <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/> <IncludeRules context="User Function Args"/> </context>@@ -5425,6 +5783,7 @@ <keyword attribute="Property" context="#stay" String="cache-properties"/> <keyword attribute="Property" context="#stay" String="directory-properties"/> <IncludeRules context="Detect More directory-properties"/>+ <keyword attribute="Property" context="#stay" String="fileset-properties"/> <keyword attribute="Property" context="#stay" String="global-properties"/> <IncludeRules context="Detect More global-properties"/> <keyword attribute="Property" context="#stay" String="install-properties"/>@@ -5442,10 +5801,12 @@ <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <WordDetect String="TARGET" attribute="Named Args" context="set_property_tgts"/> <keyword attribute="Named Args" context="#stay" String="set_property_nargs"/> <keyword attribute="Property" context="#stay" String="cache-properties"/> <keyword attribute="Property" context="#stay" String="directory-properties"/> <IncludeRules context="Detect More directory-properties"/>+ <keyword attribute="Property" context="#stay" String="fileset-properties"/> <keyword attribute="Property" context="#stay" String="global-properties"/> <IncludeRules context="Detect More global-properties"/> <keyword attribute="Property" context="#stay" String="install-properties"/>@@ -5456,6 +5817,13 @@ <keyword attribute="Property" context="#stay" String="test-properties"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="set_property_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="set_property_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx"> <DetectChar attribute="Normal Text" context="set_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5463,6 +5831,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/> <keyword attribute="Named Args" context="#stay" String="set_nargs"/> <keyword attribute="Special Args" context="#stay" String="set_sargs"/> <IncludeRules context="User Function Args"/>@@ -5484,6 +5853,7 @@ <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/> <keyword attribute="Named Args" context="#stay" String="unset_nargs"/> <IncludeRules context="User Function Args"/> </context>@@ -5495,7 +5865,8 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="while_ctx_op_nested" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/> <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/> <IncludeRules context="User Function Args"/> </context>@@ -5514,10 +5885,17 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="add_custom_command_tgts"/> <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="add_custom_command_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op_nested"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5529,11 +5907,11 @@ <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_tgt_first" fallthroughContext="add_custom_target_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op"> <DetectSpaces/>@@ -5563,11 +5941,11 @@ <DetectChar attribute="Normal Text" context="add_executable_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op_tgt_first" fallthroughContext="add_executable_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="add_executable_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="add_executable_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op"> <DetectSpaces/>@@ -5579,19 +5957,26 @@ <DetectChar attribute="Normal Text" context="add_library_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op_tgt_first" fallthroughContext="add_library_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="add_library_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="add_library_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="ALIAS" attribute="Named Args" context="Target Name"/>+ <WordDetect String="ALIAS" attribute="Named Args" context="add_library_tgts"/> <keyword attribute="Named Args" context="#stay" String="add_library_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="add_library_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="add_library_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx"> <DetectChar attribute="Normal Text" context="add_subdirectory_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5627,10 +6012,17 @@ <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="build_command_tgts"/> <keyword attribute="Named Args" context="#stay" String="build_command_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="build_command_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="build_command_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_file_api_ctx"> <DetectChar attribute="Normal Text" context="cmake_file_api_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5641,6 +6033,17 @@ <keyword attribute="Named Args" context="#stay" String="cmake_file_api_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_instrumentation_ctx">+ <DetectChar attribute="Normal Text" context="cmake_instrumentation_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="cmake_instrumentation_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="cmake_instrumentation_nargs"/>+ <keyword attribute="Special Args" context="#stay" String="cmake_instrumentation_sargs"/>+ <IncludeRules context="User Function Args"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx"> <DetectChar attribute="Normal Text" context="create_test_sourcelist_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5662,6 +6065,7 @@ <keyword attribute="Property" context="#stay" String="cache-properties"/> <keyword attribute="Property" context="#stay" String="directory-properties"/> <IncludeRules context="Detect More directory-properties"/>+ <keyword attribute="Property" context="#stay" String="fileset-properties"/> <keyword attribute="Property" context="#stay" String="global-properties"/> <IncludeRules context="Detect More global-properties"/> <keyword attribute="Property" context="#stay" String="install-properties"/>@@ -5672,6 +6076,17 @@ <keyword attribute="Property" context="#stay" String="test-properties"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="discover_tests_ctx">+ <DetectChar attribute="Normal Text" context="discover_tests_ctx_op" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="discover_tests_ctx_op">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>+ <keyword attribute="Named Args" context="#stay" String="discover_tests_nargs"/>+ <keyword attribute="Property" context="#stay" String="test-properties"/>+ <IncludeRules context="User Function Args"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx"> <DetectChar attribute="Normal Text" context="enable_language_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -5697,11 +6112,10 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="export_tgts"> <DetectSpaces/>- <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#pop" String="export_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Args"/>+ <IncludeRules context="User Function Opened"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx"> <DetectChar attribute="Normal Text" context="get_source_file_property_ctx_op" char="("/>@@ -5771,11 +6185,10 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="install_tgts"> <DetectSpaces/>- <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#pop" String="install_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Args"/>+ <IncludeRules context="User Function Opened"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx"> <DetectChar attribute="Normal Text" context="link_directories_ctx_op" char="("/>@@ -5878,11 +6291,11 @@ <DetectChar attribute="Normal Text" context="target_compile_definitions_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op_tgt_first" fallthroughContext="target_compile_definitions_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op"> <DetectSpaces/>@@ -5894,11 +6307,11 @@ <DetectChar attribute="Normal Text" context="target_compile_features_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op_tgt_first" fallthroughContext="target_compile_features_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op"> <DetectSpaces/>@@ -5911,11 +6324,11 @@ <DetectChar attribute="Normal Text" context="target_compile_options_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op_tgt_first" fallthroughContext="target_compile_options_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op"> <DetectSpaces/>@@ -5927,11 +6340,11 @@ <DetectChar attribute="Normal Text" context="target_include_directories_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op_tgt_first" fallthroughContext="target_include_directories_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op"> <DetectSpaces/>@@ -5943,11 +6356,11 @@ <DetectChar attribute="Normal Text" context="target_link_libraries_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op_tgt_first" fallthroughContext="target_link_libraries_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op"> <DetectSpaces/>@@ -5960,11 +6373,11 @@ <DetectChar attribute="Normal Text" context="target_precompile_headers_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op_tgt_first" fallthroughContext="target_precompile_headers_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op"> <DetectSpaces/>@@ -5976,11 +6389,11 @@ <DetectChar attribute="Normal Text" context="target_sources_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op_tgt_first" fallthroughContext="target_sources_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="target_sources_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="target_sources_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op"> <DetectSpaces/>@@ -6269,11 +6682,10 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_tgts"> <DetectSpaces/>- <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#pop" String="cmake_print_properties_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Args"/>+ <IncludeRules context="User Function Opened"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="cmake_push_check_state_ctx"> <DetectChar attribute="Normal Text" context="cmake_push_check_state_ctx_op" char="("/>@@ -6373,6 +6785,7 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#stay" String="ctest_coverage_collect_gcov_nargs"/>+ <keyword attribute="Special Args" context="#stay" String="ctest_coverage_collect_gcov_sargs"/> <IncludeRules context="User Function Args"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Target_ctx">@@ -6512,11 +6925,11 @@ <DetectChar attribute="Normal Text" context="generate_export_header_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op_tgt_first" fallthroughContext="generate_export_header_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op"> <DetectSpaces/>@@ -6531,19 +6944,26 @@ <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="gtest_add_tests_tgts"/> <keyword attribute="Named Args" context="#stay" String="gtest_add_tests_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="gtest_add_tests_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx"> <DetectChar attribute="Normal Text" context="gtest_discover_tests_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op_tgt_first" fallthroughContext="gtest_discover_tests_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op"> <DetectSpaces/>@@ -6556,11 +6976,11 @@ <DetectChar attribute="Normal Text" context="add_jar_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op_tgt_first" fallthroughContext="add_jar_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="add_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="add_jar_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op"> <DetectSpaces/>@@ -6572,11 +6992,11 @@ <DetectChar attribute="Normal Text" context="install_jar_ctx_op_tgt_first" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op_tgt_first">+ <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op_tgt_first" fallthroughContext="install_jar_ctx_op"> <DetectSpaces/> <RegExpr attribute="Aliased Targets" context="install_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/> <RegExpr attribute="Targets" context="install_jar_ctx_op" String="&tgt_name_re;"/>- <IncludeRules context="User Function Opened"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op"> <DetectSpaces/>@@ -6591,10 +7011,17 @@ <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_ctx_op"> <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>- <WordDetect String="TARGET" attribute="Named Args" context="Target Name"/>+ <WordDetect String="TARGET" attribute="Named Args" context="create_javah_tgts"/> <keyword attribute="Named Args" context="#stay" String="create_javah_nargs"/> <IncludeRules context="User Function Args"/> </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_tgts">+ <DetectSpaces/>+ <keyword attribute="Named Args" context="#pop" String="create_javah_nargs" lookAhead="true"/>+ <IncludeRules context="Detect Aliased Targets"/>+ <IncludeRules context="Detect Targets"/>+ <IncludeRules context="User Function Opened"/>+ </context> <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_ctx"> <DetectChar attribute="Normal Text" context="install_jar_exports_ctx_op" char="("/> <DetectChar attribute="Normal Text" context="#pop" char=")"/>@@ -6608,11 +7035,10 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_tgts"> <DetectSpaces/>- <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#pop" String="install_jar_exports_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Args"/>+ <IncludeRules context="User Function Opened"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_ctx"> <DetectChar attribute="Normal Text" context="export_jars_ctx_op" char="("/>@@ -6627,11 +7053,10 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_tgts"> <DetectSpaces/>- <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#pop" String="export_jars_nargs" lookAhead="true"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Args"/>+ <IncludeRules context="User Function Opened"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="find_jar_ctx"> <DetectChar attribute="Normal Text" context="find_jar_ctx_op" char="("/>@@ -6661,6 +7086,7 @@ <DetectSpaces/> <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> <keyword attribute="Named Args" context="#stay" String="swig_add_library_nargs"/>+ <keyword attribute="Special Args" context="#stay" String="swig_add_library_sargs"/> <IncludeRules context="User Function Args"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="squish_add_test_ctx">@@ -6842,7 +7268,7 @@ </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties">- <RegExpr attribute="Property" context="#stay" String="\b(?:&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|CPP(CHECK|LINT)|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|((ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)|COMPILE_PDB_(NAME|OUTPUT_DIRECTORY)|CXX_MODULE_(DIRS|SET)|EXCLUDE_FROM_DEFAULT_BUILD|FRAMEWORK_MULTI_CONFIG_POSTFIX|HEADER_(DIRS|SET)|IMPORTED_((NO_)?SONAME|IMPLIB|LIBNAME|LINK_(DEPENDENT_LIBRARIES|INTERFACE_(LANGUAGES|LIBRARIES|MULTIPLICITY))|LOCATION|OBJECTS)|INTERPROCEDURAL_OPTIMIZATION|LINK_(FLAGS|INTERFACE_(LIBRARIES|MULTIPLICITY)|LIBRARY_OVERRIDE)|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_(NAME|OUTPUT_DIRECTORY)|STATIC_LIBRARY_FLAGS|VS_(DOTNET_REFERENCE(PROP_&var_ref_re;_TAG)?|GLOBAL|SOURCE_SETTINGS))_&var_ref_re;|XCODE_(ATTRIBUTE_&var_ref_re;|EMBED_&var_ref_re;(_((CODE_SIGN|REMOVE_HEADERS)_ON_COPY|PATH))?))\b"/>+ <RegExpr attribute="Property" context="#stay" String="\b(?:&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|CPP(CHECK|LINT)|ICSTAT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|PVS_STUDIO|STANDARD(_REQUIRED)?|VISIBILITY_PRESET)|((ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)|COMPILE_PDB_(NAME|OUTPUT_DIRECTORY)|CXX_MODULE_(DIRS|SET)|EXCLUDE_FROM_DEFAULT_BUILD|FRAMEWORK_MULTI_CONFIG_POSTFIX|HEADER_(DIRS|SET)|IMPORTED_((NO_)?SONAME|CXX_MODULES|IMPLIB|LIBNAME|LINK_(DEPENDENT_LIBRARIES|INTERFACE_(LANGUAGES|LIBRARIES|MULTIPLICITY))|LOCATION|OBJECTS)|INTERPROCEDURAL_OPTIMIZATION|LINK_(FLAGS|INTERFACE_(LIBRARIES|MULTIPLICITY)|LIBRARY_OVERRIDE)|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_(NAME|OUTPUT_DIRECTORY)|STATIC_LIBRARY_FLAGS|VS_(DOTNET_REFERENCE(PROP_&var_ref_re;_TAG)?|GLOBAL|SOURCE_SETTINGS))_&var_ref_re;|XCODE_(ATTRIBUTE_&var_ref_re;|EMBED_&var_ref_re;(_((CODE_SIGN|REMOVE_HEADERS)_ON_COPY|PATH))?))\b"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties">@@ -6868,29 +7294,36 @@ <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables"> <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&var_ref_re;_(COMPILER_(ABI|ARCHITECTURE_ID|VERSION_INTERNAL)|PLATFORM_ID|USING_LINKER_MODE))\b"/>- <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:&var_ref_re;_(((STATIC_)?LINK_)?LIBRARIES|(BINARY|SOURCE)_DIR|(C|LD)FLAGS(_OTHER)?|(INCLUDE|LIBRARY)_DIRS|CONFIG|CONSIDERED_(CONFIGS|VERSIONS)|DESCRIPTION|FIND_(COMPONENTS|REQUIRED(_&var_ref_re;)?|VERSION_(COMPLETE|COUNT|EXACT|M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?|RANGE(_(MAX|MIN))?)|QUIETLY)|FOUND|HOMEPAGE_URL|IS_TOP_LEVEL|KEYWORDS_MISSING_VALUES|MODULE_NAME|ROOT|UNPARSED_ARGUMENTS|VERSION(_(MAJOR|MINOR|PATCH|TWEAK|COUNT|STRING))?)|&var_ref_re;__TRYRUN_OUTPUT|(DOXYGEN|ExternalData_(CUSTOM_SCRIPT|URL_ALGO)|FETCHCONTENT_(SOURCE_DIR|UPDATES_DISCONNECTED))_&var_ref_re;|ARGV[0-9]+|BISON_&var_ref_re;_(COMPILE_FLAGS|DEFINED|INPUT|OUTPUT(S|_(HEADER|SOURCE)))|Boost_&var_ref_re;_LIBRARY(_(DEBUG|RELEASE))?|CMAKE_(&var_ref_re;_(ANDROID_TOOLCHAIN_((PRE|SUF)FIX|MACHINE)|ARCHIVE_(APPEND|CREATE|FINISH)|BYTE_ORDER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|COMPILER(_(AR|EXTERNAL_TOOLCHAIN|FRONTEND_VARIANT|ID|LAUNCHER|LINKER(_(FRONTEND_VARIANT|ID|VERSION))?|LOADED|PREDEFINES_COMMAND|RANLIB|TARGET|VERSION))?|COMPILE_OBJECT|CPP(CHECK|LINT)|CREATE_(SHARED_(LIBRARY(_ARCHIVE)?|MODULE)|STATIC_LIBRARY)|DEVICE_LINK_MODE|EXTENSIONS(_DEFAULT)?|FLAGS(_((DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var_ref_re;)(_INIT)?|INIT))?|HOST_COMPILER(_ID)?|IGNORE_EXTENSIONS|IMPLICIT_(INCLUDE_DIRECTORIES|LINK_((FRAMEWORK_)?DIRECTORIES|LIBRARIES))|INCLUDE_WHAT_YOU_USE|LIBRARY_ARCHITECTURE|LINKER_(LAUNCHER|PREFERENCE(_PROPAGATES)?|WRAPPER_FLAG(_SEP)?)|LINK_(EXECUTABLE|GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(FILE_FLAG|FLAG|SUFFIX|USING_&var_ref_re;(_SUPPORTED)?)|MODE|WHAT_YOU_USE_FLAG)|OUTPUT_EXTENSION|POSTFIX|SIMULATE_(ID|VERSION)|SIZEOF_DATA_PTR|SOURCE_FILE_EXTENSIONS|STANDARD_((INCLUDE_DIRECTO|LIBRA)RIES|DEFAULT|LATEST|LINK_DIRECTORIES)|USING_LINKER_&var_ref_re;|VISIBILITY_PRESET)|((ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY|(DISABLE|REQUIRE)_FIND_PACKAGE|FRAMEWORK_MULTI_CONFIG_POSTFIX|GET_OS_RELEASE_FALLBACK_RESULT|INTERPROCEDURAL_OPTIMIZATION|MAP_IMPORTED_CONFIG|USER_MAKE_RULES_OVERRIDE|XCODE_ATTRIBUTE)_&var_ref_re;|(EXE|MODULE|SHARED|STATIC)_LINKER_FLAGS_&var_ref_re;(_INIT)?|LINK_(GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(&var_ref_re;_ATTRIBUTES|USING_&var_ref_re;(_SUPPORTED)?))|PKG_CONFIG_&var_ref_re;_PRIVATE|PROJECT_&var_ref_re;_INCLUDE(_BEFORE)?)|CMAKE_(ARGV|MATCH_)[0-9]+|CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}|CPACK_(&var_ref_re;_COMPONENT_INSTALL|ARCHIVE_&var_ref_re;_FILE_NAME|BINARY_&var_ref_re;|COMPONENT_&var_ref_re;_(DEPENDS|DESCRIPTION|DIS(ABLED|PLAY_NAME)|GROUP|HIDDEN|REQUIRED)|DEBIAN_&var_ref_re;_(DESCRIPTION|FILE_NAME|PACKAGE_((PRE)?DEPENDS|ARCHITECTURE|BREAKS|CONFLICTS|CONTROL_(EXTRA|STRICT_PERMISSION)|ENHANCES|MULTIARCH|NAME|PRIORITY|PROVIDES|RECOMMENDS|REPLACES|SECTION|SHLIBDEPS|SOURCE|SUGGESTS)|DEBUGINFO_PACKAGE)|DMG_&var_ref_re;_FILE_NAME|INNOSETUP_(&var_ref_re;_INSTALL_DIRECTORY|(DEFINE|SETUP)_&var_ref_re;)|NSIS_&var_ref_re;_INSTALL_DIRECTORY|NUGET_(&var_ref_re;_(PACKAGE_(AUTHORS|COPYRIGHT|DEPENDENCIES(_&var_ref_re;)?|DESCRIPTION(_SUMMARY)?|HOMEPAGE_URL|ICON(URL)?|LANGUAGE|LICENSE(URL|_(EXPRESSION|FILE_NAME))|NAME|OWNERS|README|RELEASE_NOTES|TAGS|TFMS|TITLE)|REPOSITORY_(BRANCH|COMMIT|TYPE|URL))|PACKAGE_DEPENDENCIES_&var_ref_re;)|P(RE|OST)FLIGHT_&var_ref_re;_SCRIPT|RPM_(&var_ref_re;_(DEFAULT_((DIR|FILE)_PERMISSIONS|GROUP|USER)|BUILD_SOURCE_DIRS_PREFIX|DEBUGINFO_(FILE_NAME|PACKAGE)|FILE_NAME|PACKAGE_(ARCHITECTURE|AUTO(PROV|REQ(PROV)?)|CONFLICTS|DESCRIPTION|GROUP|NAME|OBSOLETES|PREFIX|PROVIDES|REQUIRES(_P(RE|OST)(UN)?)?|SUGGESTS|SUMMARY|URL)|USER_(FILELIST|BINARY_SPECFILE))|NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION)|WIX_(&var_ref_re;_EXT(ENSIONS|RA_FLAGS)|PROPERTY_&var_ref_re;))|ICU_&var_ref_re;_(LIBRARY|EXECUTABLE)|MPI_&var_ref_re;_(ADDITIONAL_INCLUDE_VARS|COMPILE(R|_(DEFINI|OP)TIONS)|LIB(_NAMES|RARY))|OpenACC_&var_ref_re;_(FLAGS|OPTIONS|SPEC_DATE)|OpenMP_&var_ref_re;_(FLAGS|LIB(_NAMES|RARY)|SPEC_DATE)|SWIG_MODULE_&var_ref_re;_EXTRA_DEPS)\b"/>+ <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:&var_ref_re;_(((STATIC_)?LINK_)?LIBRARIES|(BINARY|SOURCE)_DIR|(C|LD)FLAGS(_OTHER)?|(INCLUDE|LIBRARY)_DIRS|COMPAT_VERSION|CONFIG|CONSIDERED_(CONFIGS|VERSIONS)|DESCRIPTION|FIND_(COMPONENTS|REQUIRED(_&var_ref_re;)?|VERSION_(COMPLETE|COUNT|EXACT|M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?|RANGE(_(MAX|MIN))?)|QUIETLY)|FOUND|HOMEPAGE_URL|IS_TOP_LEVEL|KEYWORDS_MISSING_VALUES|MODULE_NAME|ROOT|SPDX_LICENSE|UNPARSED_ARGUMENTS|VERSION(_(MAJOR|MINOR|PATCH|TWEAK|COUNT|STRING))?)|&var_ref_re;__TRYRUN_OUTPUT|(DOXYGEN|ExternalData_(CUSTOM_SCRIPT|URL_ALGO)|FETCHCONTENT_(SOURCE_DIR|UPDATES_DISCONNECTED))_&var_ref_re;|ARGV[0-9]+|BISON_&var_ref_re;_(COMPILE_FLAGS|DEFINED|INPUT|OUTPUT(S|_(HEADER|SOURCE)))|Boost_&var_ref_re;_LIBRARY(_(DEBUG|RELEASE))?|CMAKE_(&var_ref_re;_(ANDROID_TOOLCHAIN_((PRE|SUF)FIX|MACHINE)|ARCHIVE_(APPEND|CREATE|FINISH)|BYTE_ORDER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|COMPILER(_(AR|EXTERNAL_TOOLCHAIN|FRONTEND_VARIANT|ID|LAUNCHER|LINKER(_(FRONTEND_VARIANT|ID|VERSION))?|LOADED|PREDEFINES_COMMAND|RANLIB|TARGET|VERSION))?|COMPILE_OBJECT|CPP(CHECK|LINT)|CREATE_(SHARED_(LIBRARY(_ARCHIVE)?|MODULE)|STATIC_LIBRARY)|DEVICE_LINK_MODE|EXTENSIONS(_DEFAULT)?|FLAGS(_((DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var_ref_re;)(_INIT)?|INIT))?|HOST_COMPILER(_ID)?|ICSTAT|IGNORE_EXTENSIONS|IMPLICIT_(INCLUDE_DIRECTORIES|LINK_((FRAMEWORK_)?DIRECTORIES|LIBRARIES))|INCLUDE_WHAT_YOU_USE|LIBRARY_ARCHITECTURE|LINKER_(LAUNCHER|PREFERENCE(_PROPAGATES)?|WRAPPER_FLAG(_SEP)?)|LINK_(EXECUTABLE|FLAGS(_&var_ref_re;)?|GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(FILE_FLAG|FLAG|SUFFIX|USING_&var_ref_re;(_SUPPORTED)?)|MODE|WHAT_YOU_USE_FLAG)|OUTPUT_EXTENSION|POSTFIX|PVS_STUDIO|SIMULATE_(ID|VERSION)|SIZEOF_DATA_PTR|SOURCE_FILE_EXTENSIONS|STANDARD_((INCLUDE_DIRECTO|LIBRA)RIES|DEFAULT|LATEST|LINK_DIRECTORIES)|USING_LINKER_&var_ref_re;|VISIBILITY_PRESET)|((ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY|(DISABLE|REQUIRE)_FIND_PACKAGE|FRAMEWORK_MULTI_CONFIG_POSTFIX|GET_OS_RELEASE_FALLBACK_RESULT|IMPORT_LIBRARY_((PRE|SUF)FIX)|INTERPROCEDURAL_OPTIMIZATION|MAP_IMPORTED_CONFIG|USER_MAKE_RULES_OVERRIDE|XCODE_ATTRIBUTE)_&var_ref_re;|EXE_LINKER_FLAGS_&var_ref_re;(_INIT)?|LINK_(GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(&var_ref_re;_ATTRIBUTES|USING_&var_ref_re;(_SUPPORTED)?))|MODULE_LINKER_FLAGS_&var_ref_re;(_INIT)?|PKG_CONFIG_&var_ref_re;_PRIVATE|PROJECT_&var_ref_re;_INCLUDE(_BEFORE)?|SHARED_((LIBRARY_((PRE|SUF)FIX)|MODULE_((PRE|SUF)FIX))_&var_ref_re;|LINKER_FLAGS_&var_ref_re;(_INIT)?)|STATIC_(LIBRARY_((PRE|SUF)FIX)_&var_ref_re;|LINKER_FLAGS_&var_ref_re;(_INIT)?))|CMAKE_(ARGV|MATCH_)[0-9]+|CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}|CPACK_(&var_ref_re;_COMPONENT_INSTALL|ARCHIVE_&var_ref_re;_FILE_NAME|BINARY_&var_ref_re;|COMPONENT_&var_ref_re;_(DEPENDS|DESCRIPTION|DIS(ABLED|PLAY_NAME)|GROUP|HIDDEN|REQUIRED)|DEBIAN_&var_ref_re;_(DESCRIPTION|FILE_NAME|PACKAGE_((PRE)?DEPENDS|ARCHITECTURE|BREAKS|CONFLICTS|CONTROL_(EXTRA|STRICT_PERMISSION)|ENHANCES|MULTIARCH|NAME|PRIORITY|PROVIDES|RECOMMENDS|REPLACES|SECTION|SHLIBDEPS|SOURCE|SUGGESTS)|DEBUGINFO_PACKAGE)|DMG_&var_ref_re;_FILE_NAME|INNOSETUP_(&var_ref_re;_INSTALL_DIRECTORY|(DEFINE|SETUP)_&var_ref_re;)|NSIS_&var_ref_re;_INSTALL_DIRECTORY|NUGET_(&var_ref_re;_(PACKAGE_(AUTHORS|COPYRIGHT|DEPENDENCIES(_&var_ref_re;)?|DESCRIPTION(_SUMMARY)?|HOMEPAGE_URL|ICON(URL)?|LANGUAGE|LICENSE(URL|_(EXPRESSION|FILE_NAME))|NAME|OWNERS|README|RELEASE_NOTES|TAGS|TFMS|TITLE)|REPOSITORY_(BRANCH|COMMIT|TYPE|URL))|PACKAGE_DEPENDENCIES_&var_ref_re;)|P(RE|OST)FLIGHT_&var_ref_re;_SCRIPT|RPM_(&var_ref_re;_(DEFAULT_((DIR|FILE)_PERMISSIONS|GROUP|USER)|BUILD_SOURCE_DIRS_PREFIX|DEBUGINFO_(FILE_NAME|PACKAGE)|FILE_NAME|PACKAGE_(ARCHITECTURE|AUTO(PROV|REQ(PROV)?)|CONFLICTS|DESCRIPTION|ENHANCES|GROUP|NAME|OBSOLETES|PREFIX|PROVIDES|REQUIRES(_P(RE|OST)(UN)?)?|SUGGESTS|SUMMARY|SUPPLEMENTS|URL)|USER_(FILELIST|BINARY_SPECFILE))|NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION)|WIX_(&var_ref_re;_EXT(ENSIONS|RA_FLAGS)|PROPERTY_&var_ref_re;))|ICU_&var_ref_re;_(LIBRARY|EXECUTABLE)|MPI_&var_ref_re;_(ADDITIONAL_INCLUDE_VARS|COMPILE(R|_(DEFINI|OP)TIONS)|LIB(_NAMES|RARY))|OpenACC_&var_ref_re;_(FLAGS|OPTIONS|SPEC_DATE)|OpenMP_&var_ref_re;_(FLAGS|LIB(_NAMES|RARY)|SPEC_DATE)|SWIG_MODULE_&var_ref_re;_EXTRA_DEPS)\b"/> </context> <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">- <RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}"/>+ <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="$CACHE{"/> <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$?ENV\{"/> <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{"/> <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true"/> </context> + <context attribute="Cache Variable Substitution" lineEndContext="#pop" name="CacheVarSubst">+ <DetectChar attribute="Cache Variable Substitution" context="#pop" char="}"/>+ <IncludeRules context="Detect Builtin Variables"/>+ <IncludeRules context="Detect Variable Substitutions"/>+ <DetectIdentifier/>+ </context>+ <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst"> <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}"/> <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false"/>- <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b(?:&var_ref_re;_(DIR|ROOT)|ASM&var_ref_re;(FLAGS)?|CMAKE_&var_ref_re;_(COMPIL|LINK)ER_LAUNCHER)\b"/>- <DetectIdentifier/>+ <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b(?:&var_ref_re;_(DIR|ROOT)|ASM&var_ref_re;(FLAGS)?|CMAKE_&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|IMPLICIT_LINK_(DIRECTORIES_EXCLUDE|LIBRARIES_EXCLUDE)))\b"/> <IncludeRules context="Detect Variable Substitutions"/>+ <DetectIdentifier/> </context> <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst"> <DetectChar attribute="Variable Substitution" context="#pop" char="}"/> <IncludeRules context="Detect Builtin Variables"/>- <DetectIdentifier/> <IncludeRules context="Detect Variable Substitutions"/>+ <DetectIdentifier/> </context> <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst">@@ -6903,13 +7336,6 @@ <DetectIdentifier/> </context> - <context attribute="Normal Text" lineEndContext="#stay" name="Target Name">- <DetectSpaces/>- <RegExpr attribute="Aliased Targets" context="#pop" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>- <IncludeRules context="Detect Targets"/>- <IncludeRules context="User Function Opened"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="Detect Targets"> <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;"/> </context>@@ -7002,11 +7428,17 @@ <DetectChar attribute="Comment" context="Comment" char="#"/> <DetectChar attribute="Generator Expression" context="#pop" char=">"/> <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false"/>+ <WordDetect String="STRING" attribute="Generator Expression Keyword" context="genex_STRING_ctx"/> <WordDetect String="LIST" attribute="Generator Expression Keyword" context="genex_LIST_ctx"/> <WordDetect String="PATH" attribute="Generator Expression Keyword" context="genex_PATH_ctx"/> <IncludeRules context="Detect Aliased Targets"/> <IncludeRules context="Detect Variable Substitutions"/> <DetectIdentifier/>+ </context>+ <context attribute="Generator Expression" lineEndContext="#stay" name="genex_STRING_ctx" fallthroughContext="#pop">+ <DetectChar char=":" context="#stay"/>+ <DetectSpaces/>+ <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-STRING-subcommands" insensitive="false"/> </context> <context attribute="Generator Expression" lineEndContext="#stay" name="genex_LIST_ctx" fallthroughContext="#pop"> <DetectChar char=":" context="#stay"/>
+ xml/cobol.xml view
@@ -0,0 +1,749 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY div "DATA|ENVIRONMENT|ID|IDENTIFICATION|PROCEDURE">+ <!ENTITY sec "COMMUNICATION|CONFIGURATION|FILE|INPUT-OUTPUT|LINKAGE|LOCAL-STORAGE|REPORT|SCREEN|WORKING-STORAGE">+ <!ENTITY seplist "[\s<>+/*$,;():=.]">+ <!ENTITY picsym "([-+*$ABCDENPRSUVXZ910]+(\([0-9]+\))?)+">+]>+<language name="COBOL" section="Sources" version="2" kateversion="5.62"+ extensions="*.cob;*.cbl;*.cpy;*.copy;*.lst;*.pco;*.scb;*.sqb"+ author="Jonathan Poelen (jonathan.poelen@gmail.com);github.com/MihailJP" license="MIT">+<highlighting>++<list name="picture">+ <item>PIC</item>+ <item>PICTURE</item>+</list>++<list name="verbs">+ <item>ACCEPT</item>+ <item>ADD</item>+ <item>ALTER</item>+ <item>CALL</item>+ <item>COMPUTE</item>+ <item>DELETE</item>+ <item>DISPLAY</item>+ <item>DIVIDE</item>+ <item>END-ACCEPT</item>+ <item>END-ADD</item>+ <item>END-CALL</item>+ <item>END-COMPUTE</item>+ <item>END-DELETE</item>+ <item>END-DISPLAY</item>+ <item>END-DIVIDE</item>+ <item>END-EVALUATE</item>+ <item>END-IF</item>+ <item>END-MULTIPLY</item>+ <item>END-PERFORM</item>+ <item>END-READ</item>+ <item>END-RECEIVE</item>+ <item>END-RETURN</item>+ <item>END-REWRITE</item>+ <item>END-SEARCH</item>+ <item>END-START</item>+ <item>END-STRING</item>+ <item>END-SUBTRACT</item>+ <item>END-UNSTRING</item>+ <item>END-WRITE</item>+ <item>EVALUATE</item>+ <item>IF</item>+ <item>MULTIPLY</item>+ <item>PERFORM</item>+ <item>READ</item>+ <item>RECEIVE</item>+ <item>RETURN</item>+ <item>REWRITE</item>+ <item>SEARCH</item>+ <item>START</item>+ <item>STRING</item>+ <item>SUBTRACT</item>+ <item>UNSTRING</item>+ <item>WRITE</item>+ <item>ASSIGN</item>+ <item>CHAIN</item>+ <item>CLOSE</item>+ <item>CONTINUE</item>+ <item>CONTROL</item>+ <item>COPY</item>+ <item>COUNT</item>+ <item>ELSE</item>+ <item>ENABLE</item>+ <item>ERASE</item>+ <item>EXIT</item>+ <item>GENERATE</item>+ <item>GO</item>+ <item>GOBACK</item>+ <item>IGNORE</item>+ <item>INITIALIZE</item>+ <item>INITIATE</item>+ <item>INSPECT</item>+ <item>INVOKE</item>+ <item>MERGE</item>+ <item>MOVE</item>+ <item>OPEN</item>+ <item>RELEASE</item>+ <item>REPLACE</item>+ <item>RESERVE</item>+ <item>RESET</item>+ <item>REWIND</item>+ <item>ROLLBACK</item>+ <item>RUN</item>+ <item>SELECT</item>+ <item>SEND</item>+ <item>SET</item>+ <item>SORT</item>+ <item>STOP</item>+ <item>SUM</item>+ <item>SUPPRESS</item>+ <item>TERMINATE</item>+ <item>THEN</item>+ <item>TRANSFORM</item>+ <item>UNLOCK</item>+ <item>UPDATE</item>+ <item>USE</item>+ <item>WAIT</item>+ <item>WHEN</item>+</list>++<list name="usages">+ <item>BINARY</item>+ <item>BINARY-C-LONG</item>+ <item>BINARY-CHAR</item>+ <item>BINARY-DOUBLE</item>+ <item>BINARY-LONG</item>+ <item>BINARY-SHORT</item>+ <item>COMP</item>+ <item>COMP-1</item>+ <item>COMP-2</item>+ <item>COMP-3</item>+ <item>COMP-4</item>+ <item>COMP-5</item>+ <item>COMP-X</item>+ <item>COMPUTATIONAL</item>+ <item>COMPUTATIONAL-1</item>+ <item>COMPUTATIONAL-2</item>+ <item>COMPUTATIONAL-3</item>+ <item>COMPUTATIONAL-4</item>+ <item>COMPUTATIONAL-5</item>+ <item>COMPUTATIONAL-X</item>+ <item>FLOAT-BINARY-16</item>+ <item>FLOAT-BINARY-34</item>+ <item>FLOAT-BINARY-7</item>+ <item>FLOAT-DECIMAL-16</item>+ <item>FLOAT-DECIMAL-34</item>+ <item>FLOAT-EXTENDED</item>+ <item>FLOAT-LONG</item>+ <item>FLOAT-SHORT</item>+ <item>FUNCTION-POINTER</item>+ <item>INDEX</item>+ <item>NATIONAL</item>+ <item>PACKED-DECIMAL</item>+ <item>POINTER</item>+ <item>PROCEDURE-POINTER</item>+ <item>PROGRAM-POINTER</item>+ <item>SIGNED</item>+ <item>SIGNED-INT</item>+ <item>SIGNED-LONG</item>+ <item>SIGNED-SHORT</item>+ <item>UNSIGNED</item>+ <item>UNSIGNED-INT</item>+ <item>UNSIGNED-LONG</item>+ <item>UNSIGNED-SHORT</item>+</list>++<list name="keywords">+ <item>CD</item>+ <item>COMMUNICATION</item>+ <item>CONFIGURATION</item>+ <item>DATA</item>+ <item>DECLARATIVES</item>+ <item>DIVISION</item>+ <item>ENVIRONMENT</item>+ <item>FD</item>+ <item>FILE</item>+ <item>FILE-CONTROL</item>+ <item>I-O</item>+ <item>I-O-CONTROL</item>+ <item>ID</item>+ <item>IDENTIFICATION</item>+ <item>INPUT</item>+ <item>INPUT-OUTPUT</item>+ <item>LINKAGE</item>+ <item>LOCAL-STORAGE</item>+ <item>OUTPUT</item>+ <item>PROCEDURE</item>+ <item>PROGRAM</item>+ <item>RD</item>+ <item>REPORT</item>+ <item>REPOSITORY</item>+ <item>SD</item>+ <item>SECTION</item>+ <item>SPECIAL-NAMES</item>+ <item>WORKING-STORAGE</item>+</list>++<list name="keywords-block">+ <item>PROGRAM-ID</item>+ <item>FUNCTION-ID</item>+ <item>CLASS-ID</item>+ <item>INTERFACE-ID</item>+ <item>METHOD-ID</item>+ <item>FACTORY</item>+ <item>OBJECT</item>+</list>++<list name="logical">+ <item>AND</item>+ <item>EQUAL</item>+ <item>EQUALS</item>+ <item>GREATER</item>+ <item>LESS</item>+ <item>OR</item>+ <item>THAN</item>+</list>++<list name="constants">+ <item>HIGH-VALUEHIGH-VALUES</item>+ <item>LOW-VALUE</item>+ <item>LOW-VALUES</item>+ <item>NULL</item>+ <item>NULLS</item>+ <item>QUOTE</item>+ <item>QUOTES</item>+ <item>SPACE</item>+ <item>SPACES</item>+ <item>ZERO</item>+ <item>ZEROES</item>+ <item>ZEROS</item>+</list>++<list name="reserved">+ <item>ACCESS</item>+ <item>ACTIVE-CLASS</item>+ <item>ADDRESS</item>+ <item>ADVANCING</item>+ <item>AFTER</item>+ <item>ALIGNED</item>+ <item>ALL</item>+ <item>ALLOCATE</item>+ <item>ALPHABET</item>+ <item>ALPHABETIC</item>+ <item>ALPHABETIC-LOWER</item>+ <item>ALPHABETIC-UPPER</item>+ <item>ALPHANUMERIC</item>+ <item>ALPHANUMERIC-EDITED</item>+ <item>ALSO</item>+ <item>ALTERNATE</item>+ <item>ANY</item>+ <item>ANYCASE</item>+ <item>ARE</item>+ <item>AREA</item>+ <item>AREAS</item>+ <item>ARGUMENT-NUMBER</item>+ <item>ARGUMENT-VALUE</item>+ <item>ARITHMETIC</item>+ <item>AS</item>+ <item>ASCENDING</item>+ <item>AT</item>+ <item>ATTRIBUTE</item>+ <item>AUTO</item>+ <item>AUTO-SKIP</item>+ <item>AUTOMATIC</item>+ <item>AUTOTERMINATE</item>+ <item>B-AND</item>+ <item>B-NOT</item>+ <item>B-OR</item>+ <item>B-XOR</item>+ <item>BACKGROUND-COLOR</item>+ <item>BASED</item>+ <item>BEEP</item>+ <item>BEFORE</item>+ <item>BELL</item>+ <item>BIT</item>+ <item>BLANK</item>+ <item>BLINK</item>+ <item>BLOCK</item>+ <item>BOOLEAN</item>+ <item>BOTTOM</item>+ <item>BY</item>+ <item>BYTE-LENGTH</item>+ <item>CANCEL</item>+ <item>CENTER</item>+ <item>CF</item>+ <item>CH</item>+ <item>CHAINING</item>+ <item>CHARACTER</item>+ <item>CHARACTERS</item>+ <item>CLASS</item>+ <item>CLASSIFICATION</item>+ <item>CODE</item>+ <item>CODE-SET</item>+ <item>COL</item>+ <item>COLLATING</item>+ <item>COLS</item>+ <item>COLUMN</item>+ <item>COLUMNS</item>+ <item>COMMA</item>+ <item>COMMAND-LINE</item>+ <item>COMMIT</item>+ <item>COMMON</item>+ <item>CONDITION</item>+ <item>CONSTANT</item>+ <item>CONTAINS</item>+ <item>CONTENT</item>+ <item>CONTROLS</item>+ <item>CONVERTING</item>+ <item>CORR</item>+ <item>CORRESPONDING</item>+ <item>CRT</item>+ <item>CURRENCY</item>+ <item>CURSOR</item>+ <item>CYCLE</item>+ <item>DATA-POINTER</item>+ <item>DATE</item>+ <item>DAY</item>+ <item>DAY-OF-WEEK</item>+ <item>DE</item>+ <item>DEBUGGING</item>+ <item>DECIMAL-POINT</item>+ <item>DEFAULT</item>+ <item>DELIMITED</item>+ <item>DELIMITER</item>+ <item>DEPENDING</item>+ <item>DESCENDING</item>+ <item>DESTINATION</item>+ <item>DETAIL</item>+ <item>DISABLE</item>+ <item>DISK</item>+ <item>DOWN</item>+ <item>DUPLICATES</item>+ <item>DYNAMIC</item>+ <item>EBCDIC</item>+ <item>EC</item>+ <item>EGI</item>+ <item>EMI</item>+ <item>END</item>+ <item>END-OF-PAGE</item>+ <item>ENTRY</item>+ <item>ENTRY-CONVENTION</item>+ <item>ENVIRONMENT-NAME</item>+ <item>ENVIRONMENT-VALUE</item>+ <item>EO</item>+ <item>EOL</item>+ <item>EOP</item>+ <item>EOS</item>+ <item>ERROR</item>+ <item>ESCAPE</item>+ <item>ESI</item>+ <item>EXCEPTION</item>+ <item>EXCEPTION-OBJECT</item>+ <item>EXCLUSIVE</item>+ <item>EXPANDS</item>+ <item>EXTEND</item>+ <item>EXTERNAL</item>+ <item>FALSE</item>+ <item>FILE-ID</item>+ <item>FILLER</item>+ <item>FINAL</item>+ <item>FIRST</item>+ <item>FOOTING</item>+ <item>FOR</item>+ <item>FOREGROUND-COLOR</item>+ <item>FOREVER</item>+ <item>FORMAT</item>+ <item>FREE</item>+ <item>FROM</item>+ <item>FULL</item>+ <item>GET</item>+ <item>GIVING</item>+ <item>GLOBAL</item>+ <item>GROUP</item>+ <item>GROUP-USAGE</item>+ <item>HEADING</item>+ <item>HIGH-VALUE</item>+ <item>HIGH-VALUES</item>+ <item>HIGHLIGHT</item>+ <item>IGNORING</item>+ <item>IMPLEMENTS</item>+ <item>IN</item>+ <item>INDEXED</item>+ <item>INDICATE</item>+ <item>INFINITY</item>+ <item>INHERITS</item>+ <item>INITIAL</item>+ <item>INITIALIZED</item>+ <item>INTERFACE</item>+ <item>INTO</item>+ <item>INTRINSIC</item>+ <item>INVALID</item>+ <item>IS</item>+ <item>JUST</item>+ <item>JUSTIFIED</item>+ <item>KEY</item>+ <item>LABEL</item>+ <item>LAST</item>+ <item>LC_ALL</item>+ <item>LC_COLLATE</item>+ <item>LC_CTYPE</item>+ <item>LC_MESSAGES</item>+ <item>LC_MONETARY</item>+ <item>LC_NUMERIC</item>+ <item>LC_TIME</item>+ <item>LEADING</item>+ <item>LEFT</item>+ <item>LENGTH</item>+ <item>LIMIT</item>+ <item>LIMITS</item>+ <item>LINAGE</item>+ <item>LINAGE-COUNTER</item>+ <item>LINE</item>+ <item>LINE-COUNTER</item>+ <item>LINES</item>+ <item>LOCALE</item>+ <item>LOCK</item>+ <item>LOWLIGHT</item>+ <item>MANUAL</item>+ <item>MEMORY</item>+ <item>MESSAGE</item>+ <item>METHOD</item>+ <item>MINUS</item>+ <item>MODE</item>+ <item>MULTIPLE</item>+ <item>NATIONAL-EDITED</item>+ <item>NATIVE</item>+ <item>NEGATIVE</item>+ <item>NESTED</item>+ <item>NEXT</item>+ <item>NO</item>+ <item>NONE</item>+ <item>NORMAL</item>+ <item>NOT</item>+ <item>NUMBER</item>+ <item>NUMBERS</item>+ <item>NUMERIC</item>+ <item>NUMERIC-EDITED</item>+ <item>OBJECT-COMPUTER</item>+ <item>OBJECT-REFERENCE</item>+ <item>OCCURS</item>+ <item>OF</item>+ <item>OFF</item>+ <item>OMITTED</item>+ <item>ON</item>+ <item>ONLY</item>+ <item>OPTIONAL</item>+ <item>OPTIONS</item>+ <item>ORDER</item>+ <item>ORGANIZATION</item>+ <item>OTHER</item>+ <item>OVERFLOW</item>+ <item>OVERLINE</item>+ <item>OVERRIDE</item>+ <item>PADDING</item>+ <item>PAGE</item>+ <item>PAGE-COUNTER</item>+ <item>PARAGRAPH</item>+ <item>PF</item>+ <item>PH</item>+ <item>PLUS</item>+ <item>POSITION</item>+ <item>POSITIVE</item>+ <item>PRESENT</item>+ <item>PREVIOUS</item>+ <item>PRINTER</item>+ <item>PRINTING</item>+ <item>PROCEDURES</item>+ <item>PROCEED</item>+ <item>PROMPT</item>+ <item>PROPERTY</item>+ <item>PROTOTYPE</item>+ <item>PURGE</item>+ <item>QUEUE</item>+ <item>RAISE</item>+ <item>RAISING</item>+ <item>RANDOM</item>+ <item>RECORD</item>+ <item>RECORDING</item>+ <item>RECORDS</item>+ <item>RECURSIVE</item>+ <item>REDEFINES</item>+ <item>REEL</item>+ <item>REFERENCE</item>+ <item>RELATION</item>+ <item>RELATIVE</item>+ <item>REMAINDER</item>+ <item>REMOVAL</item>+ <item>RENAMES</item>+ <item>REPLACING</item>+ <item>REPORTING</item>+ <item>REPORTS</item>+ <item>REQUIRED</item>+ <item>RESUME</item>+ <item>RETRY</item>+ <item>RETURNING</item>+ <item>REVERSE-VIDEO</item>+ <item>RF</item>+ <item>RH</item>+ <item>RIGHT</item>+ <item>ROUNDED</item>+ <item>SAME</item>+ <item>SCREEN</item>+ <item>SCROLL</item>+ <item>SECONDS</item>+ <item>SECURE</item>+ <item>SEGMENT</item>+ <item>SEGMENT-LIMIT</item>+ <item>SELF</item>+ <item>SENTENCE</item>+ <item>SEPARATE</item>+ <item>SEQUENCE</item>+ <item>SEQUENTIAL</item>+ <item>SHARING</item>+ <item>SIGN</item>+ <item>SIZE</item>+ <item>SORT-MERGE</item>+ <item>SOURCE</item>+ <item>SOURCE-COMPUTER</item>+ <item>SOURCES</item>+ <item>STANDARD</item>+ <item>STANDARD-1</item>+ <item>STANDARD-2</item>+ <item>STATEMENT</item>+ <item>STATUS</item>+ <item>STEP</item>+ <item>STRONG</item>+ <item>SUB-QUEUE-1</item>+ <item>SUB-QUEUE-2</item>+ <item>SUB-QUEUE-3</item>+ <item>SUPER</item>+ <item>SYMBOL</item>+ <item>SYMBOLIC</item>+ <item>SYNC</item>+ <item>SYNCHRONIZED</item>+ <item>SYSTEM-DEFAULT</item>+ <item>TABLE</item>+ <item>TALLYING</item>+ <item>TAPE</item>+ <item>TERMINAL</item>+ <item>TEST</item>+ <item>TEXT</item>+ <item>THROUGH</item>+ <item>THRU</item>+ <item>TIME</item>+ <item>TIMES</item>+ <item>TO</item>+ <item>TOP</item>+ <item>TRAILING</item>+ <item>TRUE</item>+ <item>TYPE</item>+ <item>TYPEDEF</item>+ <item>UCS-4</item>+ <item>UNDERLINE</item>+ <item>UNIT</item>+ <item>UNIVERSAL</item>+ <item>UNTIL</item>+ <item>UP</item>+ <item>UPON</item>+ <item>USAGE</item>+ <item>USER-DEFAULT</item>+ <item>USING</item>+ <item>UTF-16</item>+ <item>UTF-8</item>+ <item>VAL-STATUS</item>+ <item>VALID</item>+ <item>VALIDATE</item>+ <item>VALIDATE-STATUS</item>+ <item>VALUE</item>+ <item>VALUES</item>+ <item>VARYING</item>+ <item>WITH</item>+ <item>WORDS</item>+ <item>YYYYDDD</item>+ <item>YYYYMMDD</item>+</list>++<list name="functions">+ <item>ABS</item>+ <item>ACOS</item>+ <item>ANNUITY</item>+ <item>ASIN</item>+ <item>ATAN</item>+ <item>BYTE-LENGTH</item>+ <item>CHAR</item>+ <item>CONCATENATE</item>+ <item>COS</item>+ <item>CURRENT-DATE</item>+ <item>DATE-OF-INTEGER</item>+ <item>DATE-TO-YYYYMMDD</item>+ <item>DAY-OF-INTEGER</item>+ <item>DAY-TO-YYYYDDD</item>+ <item>E</item>+ <item>EXCEPTION-FILE</item>+ <item>EXCEPTION-LOCATION</item>+ <item>EXCEPTION-STATEMENT</item>+ <item>EXCEPTION-STATUS</item>+ <item>EXP</item>+ <item>EXP10</item>+ <item>FACTORIAL</item>+ <item>FRACTION-PART</item>+ <item>INTEGER</item>+ <item>INTEGER-OF-DATE</item>+ <item>INTEGER-OF-DAY</item>+ <item>INTEGER-PART</item>+ <item>LENGTH</item>+ <item>LOCALE-DATE</item>+ <item>LOCALE-TIME</item>+ <item>LOG</item>+ <item>LOG10</item>+ <item>LOWER-CASE</item>+ <item>MAX</item>+ <item>MEAN</item>+ <item>MEDIAN</item>+ <item>MIDRANGE</item>+ <item>MIN</item>+ <item>MOD</item>+ <item>NUMVAL</item>+ <item>NUMVAL-C</item>+ <item>ORD</item>+ <item>ORD-MAX</item>+ <item>ORD-MIN</item>+ <item>PI</item>+ <item>PRESENT-VALUE</item>+ <item>RANDOM</item>+ <item>RANGE</item>+ <item>REM</item>+ <item>REVERSE</item>+ <item>SECONDS-FROM-FORMATTED-TIME</item>+ <item>SECONDS-PAST-MIDNIGHT</item>+ <item>SIGN</item>+ <item>SIN</item>+ <item>SQRT</item>+ <item>STANDARD-DEVIATION</item>+ <item>STORED-CHAR-LENGTH</item>+ <item>SUBSTITUTE</item>+ <item>SUBSTITUTE-CASE</item>+ <item>TAN</item>+ <item>TEST-DATE-YYYYMMDD</item>+ <item>TEST-DAY-YYYYDDD</item>+ <item>TRIM</item>+ <item>UPPER-CASE</item>+ <item>VARIANCE</item>+ <item>WHEN-COMPILED</item>+ <item>YEAR-TO-YYYY</item>+</list>++<contexts>++ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces attribute="Normal Text"/>+ <Int attribute="Sequence Number Area" firstNonSpace="1"/>+ <DetectChar attribute="Comment" context="comment" char="*" column="6"/>+ <DetectChar attribute="Comment" context="comment" char="*" column="0"/>+ <DetectChar attribute="Comment" context="comment" char="/" column="6"/>+ <DetectChar attribute="Comment" context="comment" char="/" column="0"/>+ <DetectChar attribute="String" context="stringDQ" char="""/>+ <DetectChar attribute="String" context="stringSQ" char="'"/>+ <StringDetect attribute="Comment" context="comment" String="*>"/>+ <AnyChar attribute="Normal Text" String="<>+/*$,;():="/>+ <keyword attribute="Keywords" String="keywords-block" beginRegion="ID"/>+ <keyword attribute="Other Reserved Words" context="picture" String="picture"/>+ <keyword attribute="Verb" String="verbs"/>+ <keyword attribute="Usage" String="usages"/>+ <keyword attribute="Constant" String="constants"/>+ <keyword attribute="Logical" String="logical"/>+ <WordDetect attribute="Keywords" context="end" String="END" insensitive="1"/>+ <RegExpr attribute="Division" String="\b(?!-)(÷)\s+DIVISION\b(?!-)" insensitive="1"/>+ <RegExpr attribute="Section" String="\b(?!-)(&sec;)\s+SECTION\b(?!-)" insensitive="1"/>+ <keyword attribute="Keywords" String="keywords"/>+ <keyword attribute="Other Reserved Words" String="reserved"/>+ <WordDetect attribute="Other Reserved Words" context="function" String="FUNCTION" insensitive="1"/>+ <WordDetect context="exec" String="EXEC" insensitive="1" lookAhead="1"/>+ <RegExpr attribute="Float" String="(?<=^|\s)-?[0-9]*\.[0-9]+(?=$|&seplist;)" context="#stay"/>+ <RegExpr attribute="Decimal" String="(?<=^|\s)-?[0-9]+(?=$|&seplist;)" context="#stay"/>+ <RegExpr attribute="Hex" String="H("[0-9A-F]+"|'[0-9A-F]+')" insensitive="1"/>+ <RegExpr attribute="Char" String="X("[0-9A-F]+"|'[0-9A-F]+')" insensitive="1"/>+ <RegExpr attribute="Normal Text" String="[-\w]*[\s<>+$,;():=.]"/>+ </context>++ <context name="end" attribute="Keywords" lineEndContext="#pop" fallthroughContext="#pop">+ <keyword attribute="Keywords" String="keywords-block" context="#pop" endRegion="ID"/>+ </context>++ <context name="comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces attribute="Comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier attribute="Comment"/>+ </context>++ <context name="stringDQ" attribute="String" lineEndContext="#pop">+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>++ <context name="stringSQ" attribute="String" lineEndContext="#pop">+ <DetectChar attribute="String" context="#pop" char="'"/>+ </context>++ <context name="picture" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">+ <DetectSpaces attribute="Normal Text"/>+ <WordDetect attribute="Other Reserved Words" context="#pop!picture2" String="IS" insensitive="1"/>+ </context>+ <context name="picture2" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">+ <DetectSpaces attribute="Normal Text" context="#pop!picture3"/>+ </context>+ <context name="picture3" attribute="Error" lineEndContext="#pop">+ <RegExpr attribute="Picture" String="\s*&picsym;([,./]&picsym;)*(CR|DB)?" insensitive="1" context="#pop"/>+ <AnyChar attribute="Normal Text" context="#pop" String=",./ 	"/>+ <StringDetect attribute="Comment" context="#pop!comment" String="*>"/>+ </context>++ <context name="function" attribute="Error" lineEndContext="#pop">+ <keyword attribute="Function" context="#pop" String="functions"/>+ <WordDetect attribute="Other Reserved Words" context="#pop" String="ALL" insensitive="1"/>+ <AnyChar attribute="Normal Text" context="#pop" String=". 	"/>+ <StringDetect attribute="Comment" context="#pop!comment" String="*>"/>+ </context>++ <context name="exec" attribute="Normal Text" lineEndContext="#pop">+ <RegExpr attribute="SQL" String="EXEC\s+SQL\b(?!-)" context="#pop!sql" insensitive="1" beginRegion="sql"/>+ <DetectIdentifier attribute="Normal Text" context="#pop"/>+ </context>++ <context name="sql" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect attribute="Comment" context="comment" String="*>"/>+ <WordDetect attribute="SQL" context="#pop" String="END-EXEC" insensitive="1" endRegion="sql"/>+ <IncludeRules context="##SQL" includeAttrib="1"/>+ </context>++</contexts>++<itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Sequence Number Area" defStyleNum="dsComment" spellChecking="0" italic="1"/>+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="0"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="0"/>+ <itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Logical" defStyleNum="dsKeyword" spellChecking="0" italic="1"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Char" defStyleNum="dsChar" spellChecking="0"/>+ <itemData name="Division" defStyleNum="dsRegionMarker" spellChecking="0"/>+ <itemData name="Section" defStyleNum="dsRegionMarker" spellChecking="0"/>+ <itemData name="SQL" defStyleNum="dsRegionMarker" spellChecking="0"/>+ <itemData name="Keywords" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Verb" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Picture" defStyleNum="dsDataType" spellChecking="0"/>+ <itemData name="Usage" defStyleNum="dsDataType" spellChecking="0"/>+ <itemData name="Other Reserved Words" defStyleNum="dsOthers" spellChecking="0"/>+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>+</itemDatas>++</highlighting>+<general>+ <comments>+ <comment name="singleLine" start="*>"/>+ </comments>+ <keywords casesensitive="0" weakDeliminator="-"/>+</general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+ xml/context.xml view
@@ -0,0 +1,214 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+ <!-- The characters ! ? @ are "internal" or system macros, normally not usable, in general: user macros are just letters, see+ https://wiki.contextgarden.net/System_Macros/Scratch_Variables and https://www.mail-archive.com/ntg-context@ntg.nl/msg87737.html+ In practice any non-special character works, though english characters should be used, except for one character macros, they use any symbol -->+ <!ENTITY macro "\\([[:alpha:]]+|[[:graph:]])">+]>+<language+ name="ConTeXt"+ version="12"+ section="Markup"+ kateversion="5.79"+ priority="9"+ extensions="*.ctx;*.mkiv;*.mkvi;*.mkxl;*.mklx"+ mimetype="text/x-tex"+ casesensitive="1"+ author="Philipp A. (flying-sheep@web.de)"+ license="GPL"+>+ <highlighting>+ <list name="titles">+ <item>\part</item>+ <item>\chapter</item>+ <item>\section</item>+ <item>\subsection</item>+ <item>\subsubsection</item>+ <item>\subsubsubsection</item>+ <item>\subsubsubsubsection</item>+ <item>\title</item>+ <item>\subject</item>+ <item>\subsubject</item>+ <item>\subsubsubject</item>+ <item>\subsubsubsubject</item>+ <item>\subsubsubsubsubject</item>+ </list>+ <list name="mathMacros">+ <item>\m</item>+ <item>\math</item>+ <item>\mathematics</item>+ <item>\formula</item>+ </list>+ <list name="startEnvironments">+ <item>\bTABLEhead</item>+ <item>\bTABLEnext</item>+ <item>\bTABLEbody</item>+ <item>\bTABLEfoot</item>+ <item>\bTABLE</item>+ <item>\bTR</item>+ <item>\bTD</item>+ </list>+ <list name="stopEnvironments">+ <item>\eTABLEhead</item>+ <item>\eTABLEnext</item>+ <item>\eTABLEbody</item>+ <item>\eTABLEfoot</item>+ <item>\eTABLE</item>+ <item>\eTR</item>+ <item>\eTD</item>+ </list>+ <list name="startMetaPost">+ <item>\startMPinclusions</item>+ <item>\startuseMPgraphic</item>+ <item>\startreusableMPgraphic</item>+ <item>\startstaticMPfigure</item>+ <item>\startuniqueMPgraphic</item>+ <item>\startMPpage</item>+ <item>\startMPcode</item>+ <item>\startMP</item>+ </list>+ <list name="stopMetaPost">+ <item>\stopMPinclusions</item>+ <item>\stopuseMPgraphic</item>+ <item>\stopreusableMPgraphic</item>+ <item>\stopstaticMPfigure</item>+ <item>\stopuniqueMPgraphic</item>+ <item>\stopMPpage</item>+ <item>\stopMPcode</item>+ <item>\stopMP</item>+ </list>++ <contexts>+ <!-- Normal text -->+ <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">+ <keyword String="titles" attribute="Section" context="#stay"/>+ <Detect2Chars char="$" char1="$" attribute="Block" context="MathModeDisplay"/>+ <DetectChar char="$" attribute="Block" context="MathMode"/>+ <keyword String="mathMacros" attribute="Block" context="MathModeMacroFind"/>+ <StringDetect String="\startformula" attribute="Block" context="MathModeFormula" beginRegion="mathModeBlock"/>+ <StringDetect String="\starttyping" attribute="Block" context="Verbatim" beginRegion="typingBlock"/>+ <StringDetect String="\startluacode" attribute="Block" context="LuaCode" beginRegion="luaBlock"/>+ <StringDetect String="\startLUA" attribute="Block" context="LuaCode" beginRegion="luaBlock"/>+ <StringDetect String="\startXML" attribute="Block" context="XmlCode" beginRegion="xmlBlock"/>+ <keyword String="startMetaPost" attribute="Block" context="MetaPostCode" beginRegion="metaPostBlock"/>+ <IncludeRules context="Common"/>+ </context>++ <!-- Comment -->+ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="##Comments"/>+ </context>++ <!-- Math Modes -->+ <context name="MathMode" attribute="Math" lineEndContext="#stay">+ <DetectChar char="$" attribute="Block" context="#pop"/>+ <StringDetect String="\stopformula" attribute="Error" context="#stay" />+ <IncludeRules context="MathModeCommon"/>+ </context>+ <context name="MathModeMacroFind" attribute="Math" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!MathModeMacro"/>+ <RegExpr String="¯o;" attribute="Macro" context="#pop"/> <!-- Single token -->+ <RegExpr String="[[:graph:]]" attribute="Math" context="#pop"/> <!-- Single token -->+ </context>+ <context name="MathModeMacro" attribute="Math" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="MathModeMacro"/>+ <DetectChar char="}" attribute="Brace" context="#pop"/>+ <DetectChar char="$" attribute="Error" context="#stay"/>+ <StringDetect String="\stopformula" attribute="Error" context="#stay"/>+ <IncludeRules context="MathModeCommon"/>+ </context>+ <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">+ <Detect2Chars char="$" char1="$" attribute="Block" context="#pop"/>+ <DetectChar char="$" attribute="Error" context="#stay"/>+ <StringDetect String="\stopformula" attribute="Error" context="#stay"/>+ <IncludeRules context="MathModeCommon"/>+ </context>+ <context name="MathModeFormula" attribute="Math" lineEndContext="#stay">+ <DetectChar char="$" attribute="Error" context="#stay"/>+ <StringDetect String="\stopformula" attribute="Block" context="#pop" endRegion="mathModeBlock"/>+ <IncludeRules context="MathModeCommon"/>+ </context>+ <context name="MathModeCommon" attribute="Error" lineEndContext="#stay">+ <AnyChar String="^_" attribute="Brace" context="#stay"/>+ <StringDetect String="\startformula" attribute="Error" context="#stay"/>+ <StringDetect String="\text" attribute="Block" context="MathModeTextFind"/>+ <IncludeRules context="Common"/>+ </context>+ <!--Math text-->+ <context name="MathModeTextFind" attribute="Normal Text" lineEndContext="#stay" >+ <DetectChar char="{" attribute="Brace" context="#pop!MathModeText"/>+ </context>+ <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >+ <DetectChar char="{" attribute="Brace" context="MathModeText"/>+ <DetectChar char="}" attribute="Brace" context="#pop"/>+ <IncludeRules context="Normal Text"/>+ </context>++ <!--Verbatim TODO: \startC support-->+ <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">+ <StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>+ <StringDetect String="\stoptyping" attribute="Block" context="#pop" endRegion="typingBlock"/>+ </context>++ <context name="NestedVerbatim" attribute="Verbatim" lineEndContext="#stay">+ <StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>+ <StringDetect String="\stoptyping" attribute="Verbatim" context="#pop"/>+ </context>++ <context name="MetaPostCode" attribute="Normal Text" lineEndContext="#stay">+ <keyword String="stopMetaPost" attribute="Block" context="#pop" endRegion="metaPostBlock"/>+ <IncludeRules context="##Metapost/Metafont"/>+ </context>++ <context name="LuaCode" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect String="\stopluacode" attribute="Block" context="#pop" endRegion="luaBlock"/>+ <StringDetect String="\stopLUA" attribute="Block" context="#pop" endRegion="luaBlock"/>+ <IncludeRules context="##Lua"/>+ </context>++ <context name="XmlCode" attribute="Normal Text" lineEndContext="#stay">+ <StringDetect String="\stopXML" attribute="Block" context="#pop" endRegion="xmlBlock"/>+ <IncludeRules context="##XML"/>+ </context>++ <!--Common-->+ <context name="Common" attribute="Error" lineEndContext="#stay">+ <DetectChar char="%" attribute="Comment" context="Comment"/>+ <RegExpr String="\\start(?:[a-zA-Z_]+)" attribute="Block" context="#stay" beginRegion="block"/>+ <RegExpr String="\\stop(?:[a-zA-Z_]+)" attribute="Block" context="#stay" endRegion="block"/>+ <keyword String="startEnvironments" attribute="Block" context="#stay" beginRegion="block"/>+ <keyword String="stopEnvironments" attribute="Block" context="#stay" endRegion="block"/>+ <RegExpr String="¯o;" attribute="Macro" context="#stay"/>+ <DetectChar char="{" attribute="Brace" context="#stay" beginRegion="block"/>+ <DetectChar char="}" attribute="Brace" context="#stay" endRegion="block"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" /><!--(Hi, I’m text)-->+ <itemData name="Comment" defStyleNum="dsComment" /><!--(%Comment)-->+ <itemData name="Section" defStyleNum="dsKeyword" /><!--\section{(Fancy!)}-->+ <itemData name="Brace" defStyleNum="dsChar" spellChecking="false"/><!--({})-->+ <itemData name="Math" defStyleNum="dsOthers" spellChecking="false"/><!--($5$)-->+ <itemData name="Macro" defStyleNum="dsFunction" spellChecking="false"/><!--(\foo)-->+ <itemData name="Block" defStyleNum="dsRegionMarker" spellChecking="false"/><!--\start(bar), \stop(bar)-->+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/><!--$($$)-->+ <itemData name="Verbatim" defStyleNum="dsString" spellChecking="false"/><!--\starttyping(eggs)\stoptyping, \definetyping[C] \startC(umm…)\stopC-->+ </itemDatas>+ </highlighting>++ <general>+ <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>+ <comments>+ <comment name="singleLine" start="%" />+ </comments>+ <spellchecking>+ <encodings>+ <encoding string="''" />+ </encodings>+ </spellchecking>+ </general>+</language>++<!-- kate: space-indent off; indent-width 4; -->
xml/cpp.xml view
@@ -12,7 +12,7 @@ name="C++" alternativeNames="CPP" section="Sources"- version="19"+ version="21" kateversion="5.79" indenter="cstyle" style="C++"@@ -462,9 +462,11 @@ <item>Q_RELOCATABLE_TYPE</item> <!-- http://doc.qt.io/qt-5/qqmlengine.html#macros --> <!--https://doc.qt.io/qt-6/qqmlengine.html#macros-->+ <!-- https://doc.qt.io/qt-6/qqmlintegration-h.html#macros --> <item>QML_ADDED_IN_MINOR_VERSION</item> <item>QML_ANONYMOUS</item> <item>QML_ATTACHED</item>+ <item>QML_CONSTRUCTIBLE_VALUE</item> <item>QML_DECLARE_TYPE</item> <item>QML_DECLARE_TYPEINFO</item> <item>QML_ELEMENT</item>@@ -479,6 +481,7 @@ <item>QML_REMOVED_IN_MINOR_VERSION</item> <item>QML_SEQUENTIAL_CONTAINER</item> <item>QML_SINGLETON</item>+ <item>QML_STRUCTURED_VALUE</item> <item>QML_UNAVAILABLE</item> <item>QML_UNCREATABLE</item> <item>QML_VALUE_TYPE</item>@@ -658,13 +661,17 @@ <list name="QtClasses"> <!-- Extracted with regular expression Q[A-Z0-9][A-Za-z0-9]* --> <item>Q3DBars</item>+ <item>Q3DBarsWidgetItem</item> <item>Q3DCamera</item>+ <item>Q3DGraphsWidgetItem</item> <item>Q3DInputHandler</item> <item>Q3DLight</item> <item>Q3DObject</item> <item>Q3DScatter</item>+ <item>Q3DScatterWidgetItem</item> <item>Q3DScene</item> <item>Q3DSurface</item>+ <item>Q3DSurfaceWidgetItem</item> <item>Q3DTheme</item> <item>QAbstract3DAxis</item> <item>QAbstract3DGraph</item>@@ -686,6 +693,7 @@ <item>QAbstractClipBlendNode</item> <item>QAbstractDataProxy</item> <item>QAbstractEventDispatcher</item>+ <item>QAbstractEventDispatcherV2</item> <item>QAbstractExtensionFactory</item> <item>QAbstractExtensionManager</item> <item>QAbstractFileIconProvider</item>@@ -737,8 +745,11 @@ <item>QAccelerometer</item> <item>QAccelerometerFilter</item> <item>QAccelerometerReading</item>+ <item>QAccessibilityHints</item> <item>QAccessible</item> <item>QAccessibleActionInterface</item>+ <item>QAccessibleAnnouncementEvent</item>+ <item>QAccessibleAttributesInterface</item> <item>QAccessibleEditableTextInterface</item> <item>QAccessibleEvent</item> <item>QAccessibleInterface</item>@@ -810,6 +821,8 @@ <item>QAtomicScopedValueRollback</item> <item>QAttribute</item> <item>QAudioBuffer</item>+ <item>QAudioBufferInput</item>+ <item>QAudioBufferOutput</item> <item>QAudioDecoder</item> <item>QAudioDecoderControl</item> <item>QAudioDevice</item>@@ -855,6 +868,7 @@ <item>QBarDataItem</item> <item>QBarDataProxy</item> <item>QBarLegendMarker</item>+ <item>QBarModelMapper</item> <item>QBarSeries</item> <item>QBarSet</item> <item>QBaseIterator</item>@@ -963,6 +977,7 @@ <item>QCheckBox</item> <item>QChildEvent</item> <item>QChildWindowEvent</item>+ <item>QChronoTimer</item> <item>QClearBuffers</item> <item>QClipAnimator</item> <item>QClipBlendNodeCreatedChangeBase</item>@@ -1089,6 +1104,7 @@ <item>QDir</item> <item>QDirectionalLight</item> <item>QDirIterator</item>+ <item>QDirListing</item> <item>QDirModel</item> <item>QDispatchCompute</item> <item>QDistanceFilter</item>@@ -1101,6 +1117,7 @@ <item>QDnsMailExchangeRecord</item> <item>QDnsServiceRecord</item> <item>QDnsTextRecord</item>+ <item>QDnsTlsAssociationRecord</item> <item>QDockWidget</item> <item>QDomAttr</item> <item>QDomCDATASection</item>@@ -1177,7 +1194,10 @@ <item>QFontInfo</item> <item>QFontMetrics</item> <item>QFontMetricsF</item>+ <item>QFontVariableAxis</item> <item>QFormBuilder</item>+ <item>QFormDataBuilder</item>+ <item>QFormDataPartBuilder</item> <item>QFormLayout</item> <item>QForwardRenderer</item> <item>QFrame</item>@@ -1295,21 +1315,26 @@ <item>QGraphicsView</item> <item>QGraphicsWidget</item> <item>QGraphTheme</item>+ <item>QGraphsTheme</item> <item>QGregorianCalendar</item> <item>QGridLayout</item> <item>QGroupBox</item>+ <item>QGrpcBidiStream</item> <item>QGrpcBidirStream</item> <item>QGrpcCallOptions</item> <item>QGrpcCallReply</item> <item>QGrpcChannel</item> <item>QGrpcChannelOperation</item> <item>QGrpcChannelOptions</item>+ <item>QGrpcClientBase</item> <item>QGrpcClientInterceptor</item> <item>QGrpcClientInterceptorManager</item> <item>QGrpcClientStream</item> <item>QGrpcHttp2Channel</item> <item>QGrpcInterceptorContinuation</item> <item>QGrpcOperation</item>+ <item>QGrpcOperationContext</item>+ <item>QGrpcSerializationFormat</item> <item>QGrpcServerStream</item> <item>QGrpcStatus</item> <item>QGuiApplication</item>@@ -1338,6 +1363,7 @@ <item>QHelpIndexWidget</item> <item>QHelpLink</item> <item>QHelpSearchEngine</item>+ <item>QHelpSearchEngineCore</item> <item>QHelpSearchQuery</item> <item>QHelpSearchQueryWidget</item> <item>QHelpSearchResult</item>@@ -1361,11 +1387,13 @@ <item>QHttpMultiPart</item> <item>QHttpPart</item> <item>QHttpServer</item>+ <item>QHttpServerConfiguration</item> <item>QHttpServerRequest</item> <item>QHttpServerResponder</item> <item>QHttpServerResponse</item> <item>QHttpServerRouter</item> <item>QHttpServerRouterRule</item>+ <item>QHttpServerWebSocketUpgradeResponse</item> <item>QHumidityFilter</item> <item>QHumidityReading</item> <item>QHumiditySensor</item>@@ -1416,6 +1444,8 @@ <item>QIterable</item> <item>QIterator</item> <item>QJalaliCalendar</item>+ <item>QJniArray</item>+ <item>QJniArrayBase</item> <item>QJniEnvironment</item> <item>QJniObject</item> <item>QJoint</item>@@ -1453,6 +1483,7 @@ <item>QLayoutItem</item> <item>QLCDNumber</item> <item>QLegend</item>+ <item>QLegendData</item> <item>QLegendMarker</item> <item>QLEInteger</item> <item>QLerpClipBlend</item>@@ -1559,6 +1590,7 @@ <item>QMessageLogContext</item> <item>QMessageLogger</item> <item>QMetaClassInfo</item>+ <item>QMetaContainer</item> <item>QMetaDataReaderControl</item> <item>QMetaDataWriterControl</item> <item>QMetaEnum</item>@@ -1679,6 +1711,9 @@ <item>QOAuth1</item> <item>QOAuth1Signature</item> <item>QOAuth2AuthorizationCodeFlow</item>+ <item>QOAuth2DeviceAuthorizationFlow</item>+ <item>QOAuthHttpServerReplyHandler</item>+ <item>QOAuthUriSchemeReplyHandler</item> <item>QObject</item> <item>QObjectBindableProperty</item> <item>QObjectCleanupHandler</item>@@ -1822,6 +1857,7 @@ <item>QPainter</item> <item>QPainterPath</item> <item>QPainterPathStroker</item>+ <item>QPainterStateGuard</item> <item>QPaintEvent</item> <item>QPair</item> <item>QPalette</item>@@ -1836,6 +1872,7 @@ <item>QPdfDocumentRenderOptions</item> <item>QPdfLink</item> <item>QPdfLinkModel</item>+ <item>QPdfOutputIntent</item> <item>QPdfPageNavigation</item> <item>QPdfPageNavigator</item> <item>QPdfPageRenderer</item>@@ -1862,6 +1899,7 @@ <item>QPictureFormatPlugin</item> <item>QPictureIO</item> <item>QPieLegendMarker</item>+ <item>QPieModelMapper</item> <item>QPieSeries</item> <item>QPieSlice</item> <item>QPinchGesture</item>@@ -1901,6 +1939,7 @@ <item>QPlaneGeometryView</item> <item>QPlaneMesh</item> <item>QPlatformSurfaceEvent</item>+ <item>QPlaybackOptions</item> <item>QPluginLoader</item> <item>QPoint</item> <item>QPointer</item>@@ -1946,6 +1985,7 @@ <item>QProtobufJsonSerializer</item> <item>QProtobufMessage</item> <item>QProtobufMessageDeleter</item>+ <item>QProtobufRepeatedIterator</item> <item>QProtobufSerializer</item> <item>QProximityFilter</item> <item>QProximityReading</item>@@ -2016,6 +2056,7 @@ <item>QRadioTunerControl</item> <item>QRandomGenerator</item> <item>QRandomGenerator64</item>+ <item>QRangeModel</item> <item>QRasterMode</item> <item>QRasterPaintEngine</item> <item>QRasterWindow</item>@@ -2065,6 +2106,7 @@ <item>QRgba64</item> <item>QRgbaFloat</item> <item>QRhi</item>+ <item>QRhiAdapter</item> <item>QRhiBuffer</item> <item>QRhiColorAttachment</item> <item>QRhiCommandBuffer</item>@@ -2098,6 +2140,7 @@ <item>QRhiShaderResourceBinding</item> <item>QRhiShaderResourceBindings</item> <item>QRhiShaderStage</item>+ <item>QRhiShadingRateMap</item> <item>QRhiStats</item> <item>QRhiSwapChain</item> <item>QRhiSwapChainHdrInfo</item>@@ -2117,6 +2160,7 @@ <item>QRhiVulkanCommandBufferNativeHandles</item> <item>QRhiVulkanInitParams</item> <item>QRhiVulkanNativeHandles</item>+ <item>QRhiVulkanQueueSubmitParams</item> <item>QRhiVulkanRenderPassNativeHandles</item> <item>QRhiWidget</item> <item>QRomanCalendar</item>@@ -2282,6 +2326,7 @@ <item>QSphereMesh</item> <item>QSpinBox</item> <item>QSplashScreen</item>+ <item>QSpline3DSeries</item> <item>QSplineSeries</item> <item>QSplitter</item> <item>QSplitterHandle</item>@@ -2512,6 +2557,7 @@ <item>QTouchDevice</item> <item>QTouchEvent</item> <item>QTouchEventSequence</item>+ <item>QTouchEventWidgetSequence</item> <item>QTransform</item> <item>QTranslator</item> <item>QTransposeProxyModel</item>@@ -2565,6 +2611,7 @@ <item>QVideoFilterRunnable</item> <item>QVideoFrame</item> <item>QVideoFrameFormat</item>+ <item>QVideoFrameInput</item> <item>QVideoProbe</item> <item>QVideoRendererControl</item> <item>QVideoSink</item>@@ -2648,12 +2695,16 @@ <item>QWebEngineCertificateError</item> <item>QWebEngineClientCertificateSelection</item> <item>QWebEngineClientCertificateStore</item>+ <item>QWebEngineClientHints</item> <item>QWebEngineContextMenuRequest</item> <item>QWebEngineCookieStore</item> <item>QWebEngineDesktopMediaRequest</item> <item>QWebEngineDownloadRequest</item>+ <item>QWebEngineExtensionInfo</item>+ <item>QWebEngineExtensionManager</item> <item>QWebEngineFileSystemAccessRequest</item> <item>QWebEngineFindTextResult</item>+ <item>QWebEngineFrame</item> <item>QWebEngineFullScreenRequest</item> <item>QWebEngineHistory</item> <item>QWebEngineHistoryItem</item>@@ -2664,7 +2715,9 @@ <item>QWebEngineNewWindowRequest</item> <item>QWebEngineNotification</item> <item>QWebEnginePage</item>+ <item>QWebEnginePermission</item> <item>QWebEngineProfile</item>+ <item>QWebEngineProfileBuilder</item> <item>QWebEngineQuotaRequest</item> <item>QWebEngineRegisterProtocolHandlerRequest</item> <item>QWebEngineScript</item>@@ -2744,6 +2797,7 @@ <item>QXmlStreamReader</item> <item>QXmlStreamWriter</item> <item>QXYLegendMarker</item>+ <item>QXYModelMapper</item> <item>QXYSeries</item> <!-- Not actually classes, but used like those --> <item>QByteArrayLiteral</item>
xml/crystal.xml view
@@ -33,7 +33,7 @@ <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". --> <language name="Crystal" section="Sources"- version="0" kateversion="5.0"+ version="1" kateversion="5.0" extensions="*.cr" mimetype="application/x-crystal" style="crystal" indenter="ruby"@@ -42,6 +42,7 @@ <highlighting> <list name="keywords">+ <item>alias</item> <item>begin</item> <item>break</item> <item>case</item>@@ -50,13 +51,18 @@ <item>elsif</item> <item>end</item> <item>ensure</item>+ <item>enum</item> <item>for</item>+ <item>fun</item> <item>if</item> <item>in</item>+ <item>lib</item> <item>next</item> <item>rescue</item> <item>return</item> <item>then</item>+ <item>type</item>+ <item>union</item> <item>unless</item> <item>until</item> <item>when</item>
+ xml/csv.xml view
@@ -0,0 +1,214 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY sep ",">+]>+<!--+Inspired by Rainbow CSV++Language name | Separator | Extension | Properties+ CSV | , (comma) | .csv | Ignored inside double-quoted fields+ TSV | \t (TAB) | .tsv .tab |+ CSV (semicolon) | ; (semicolon) | | Ignored inside double-quoted fields+ CSV (whitespace) | whitespace | | Consecutive whitespaces are merged+ CSV (pipe) | | (pipe) |++https://www.rfc-editor.org/rfc/rfc4180++Although the RFC considers this invalid,+the syntax is tolerant of spaces before double quotes.++ aaa, "bbb,ccc", ddd+ ~ RFC: invalid character in non-escaped rule+-->+<language name="CSV" section="Other" version="2" kateversion="5.62" extensions="*.csv" mimetype="text/csv" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+ <highlighting>++ <contexts>+ <context name="Column0" lineEndContext="#stay" attribute="Column 0">+ <DetectChar char="&sep;" context="#pop!Column1" attribute="Column 0 Separator"/>+ <RangeDetect char=""" char1=""" context="Column0Quote"/>+ <DetectChar char=""" context="Column0MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column0Quote" lineEndContext="#pop" attribute="Column 0" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column0MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column0MultiLine" lineEndContext="#stay" attribute="Column 0">+ <DetectChar char=""" context="#pop!Column0Quote"/>+ </context>++ <context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">+ <DetectChar char="&sep;" context="#pop!Column2" attribute="Column 1 Separator"/>+ <RangeDetect char=""" char1=""" context="Column1Quote"/>+ <DetectChar char=""" context="Column1MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column1Quote" lineEndContext="#pop#pop!Column0" attribute="Column 1" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column1MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column1MultiLine" lineEndContext="#stay" attribute="Column 1">+ <DetectChar char=""" context="#pop!Column1Quote"/>+ </context>++ <context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">+ <DetectChar char="&sep;" context="#pop!Column3" attribute="Column 2 Separator"/>+ <RangeDetect char=""" char1=""" context="Column2Quote"/>+ <DetectChar char=""" context="Column2MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column2Quote" lineEndContext="#pop#pop!Column0" attribute="Column 2" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column2MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column2MultiLine" lineEndContext="#stay" attribute="Column 2">+ <DetectChar char=""" context="#pop!Column2Quote"/>+ </context>++ <context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">+ <DetectChar char="&sep;" context="#pop!Column4" attribute="Column 3 Separator"/>+ <RangeDetect char=""" char1=""" context="Column3Quote"/>+ <DetectChar char=""" context="Column3MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column3Quote" lineEndContext="#pop#pop!Column0" attribute="Column 3" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column3MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column3MultiLine" lineEndContext="#stay" attribute="Column 3">+ <DetectChar char=""" context="#pop!Column3Quote"/>+ </context>++ <context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">+ <DetectChar char="&sep;" context="#pop!Column5" attribute="Column 4 Separator"/>+ <RangeDetect char=""" char1=""" context="Column4Quote"/>+ <DetectChar char=""" context="Column4MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column4Quote" lineEndContext="#pop#pop!Column0" attribute="Column 4" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column4MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column4MultiLine" lineEndContext="#stay" attribute="Column 4">+ <DetectChar char=""" context="#pop!Column4Quote"/>+ </context>++ <context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">+ <DetectChar char="&sep;" context="#pop!Column6" attribute="Column 5 Separator"/>+ <RangeDetect char=""" char1=""" context="Column5Quote"/>+ <DetectChar char=""" context="Column5MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column5Quote" lineEndContext="#pop#pop!Column0" attribute="Column 5" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column5MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column5MultiLine" lineEndContext="#stay" attribute="Column 5">+ <DetectChar char=""" context="#pop!Column5Quote"/>+ </context>++ <context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">+ <DetectChar char="&sep;" context="#pop!Column7" attribute="Column 6 Separator"/>+ <RangeDetect char=""" char1=""" context="Column6Quote"/>+ <DetectChar char=""" context="Column6MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column6Quote" lineEndContext="#pop#pop!Column0" attribute="Column 6" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column6MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column6MultiLine" lineEndContext="#stay" attribute="Column 6">+ <DetectChar char=""" context="#pop!Column6Quote"/>+ </context>++ <context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">+ <DetectChar char="&sep;" context="#pop!Column8" attribute="Column 7 Separator"/>+ <RangeDetect char=""" char1=""" context="Column7Quote"/>+ <DetectChar char=""" context="Column7MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column7Quote" lineEndContext="#pop#pop!Column0" attribute="Column 7" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column7MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column7MultiLine" lineEndContext="#stay" attribute="Column 7">+ <DetectChar char=""" context="#pop!Column7Quote"/>+ </context>++ <context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">+ <DetectChar char="&sep;" context="#pop!Column9" attribute="Column 8 Separator"/>+ <RangeDetect char=""" char1=""" context="Column8Quote"/>+ <DetectChar char=""" context="Column8MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column8Quote" lineEndContext="#pop#pop!Column0" attribute="Column 8" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column8MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column8MultiLine" lineEndContext="#stay" attribute="Column 8">+ <DetectChar char=""" context="#pop!Column8Quote"/>+ </context>++ <context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">+ <DetectChar char="&sep;" context="#pop!Column0" attribute="Column 9 Separator"/>+ <RangeDetect char=""" char1=""" context="Column9Quote"/>+ <DetectChar char=""" context="Column9MultiLine"/>+ <IncludeRules context="FindField"/>+ </context>+ <context name="Column9Quote" lineEndContext="#pop!Column0" attribute="Column 9" fallthroughContext="#pop">+ <RangeDetect char=""" char1="""/>+ <DetectChar char=""" context="#pop!Column9MultiLine"/>+ <IncludeRules context="Error"/>+ </context>+ <context name="Column9MultiLine" lineEndContext="#stay" attribute="Column 9">+ <DetectChar char=""" context="#pop!Column9Quote"/>+ </context>++ <context name="FindField" lineEndContext="#stay" attribute="Column 0">+ <DetectSpaces/>+ <RegExpr String="[^&sep;]+"/>+ </context>++ <context name="Error" lineEndContext="#stay" attribute="Error">+ <RegExpr String="[^&sep;]+" context="#pop" attribute="Error"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Column 0" defStyleNum="dsNormal"/>+ <itemData name="Column 1" defStyleNum="dsVariable"/>+ <itemData name="Column 2" defStyleNum="dsString"/>+ <itemData name="Column 3" defStyleNum="dsBuiltIn"/>+ <itemData name="Column 4" defStyleNum="dsPreprocessor"/>+ <itemData name="Column 5" defStyleNum="dsChar"/>+ <itemData name="Column 6" defStyleNum="dsFunction"/>+ <itemData name="Column 7" defStyleNum="dsBaseN"/>+ <itemData name="Column 8" defStyleNum="dsOperator"/>+ <itemData name="Column 9" defStyleNum="dsDataType"/>++ <itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>+ <itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>+ <itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>+ <itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>+ <itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>+ <itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>+ <itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>+ <itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>+ <itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>+ <itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>++ <itemData name="Error" defStyleNum="dsError"/>+ </itemDatas>+ </highlighting>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+ xml/desktop.xml view
@@ -0,0 +1,34 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name=".desktop" version="6" kateversion="5.0"+ section="Configuration" extensions="*.desktop;*.kdelnk;*.desktop.cmake"+ mimetype="application/x-desktop">+ <highlighting>+ <contexts>+ <context attribute="Key" lineEndContext="#stay" name="Normal">+ <RegExpr String="^\[.*\]$" attribute="Section" context="#stay" beginRegion="Section" endRegion="Section" column="0"/>+ <RegExpr String="\[.*\]" attribute="Language" context="Value"/>+ <DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true"/>+ <DetectChar char="=" attribute="Normal Text" context="Value"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="Value"/>+ <context attribute="Comment" lineEndContext="#pop" name="Comment">+ <DetectSpaces />+ <IncludeRules context="##Comments"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Section" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Key" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Language" defStyleNum="dsDecVal" bold="1" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#"/>+ </comments>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/dot.xml view
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language> <!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->-<language name="dot" version="5" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">+<language name="dot" alternativeNames="Graphviz" version="6" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0"> <highlighting>
+ xml/elixir-eex.xml view
@@ -0,0 +1,60 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY identifier "[a-z][a-zA-Z0-9_]*[!?]?">+]>+<language author="Jade Pfeiffer (jade@pfeiffer.codes)"+ extensions="*.eex"+ indenter="none"+ kateversion="5.79"+ license="MIT"+ mimetype="text/x-elixir+eex"+ name="Elixir/EEx"+ section="Scripts"+ style="eex"+ version="1">+ <highlighting>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Text">+ <!-- Search document using only 2 characters before matching -->+ <Detect2Chars char="<" char1="%" context="Tag" lookAhead="true"/>+ </context>+ <context attribute="Normal Text" name="Tag">+ <!-- Comments: they are discarded from source -->+ <StringDetect String="<%!--" attribute="Comment" context="#pop!Comment" beginRegion="comment" />+ <!-- EEx Quotation: returns the contents inside the tag as is -->+ <StringDetect String="<%%" attribute="Quotation" context="#pop!Quotation" />+ <!-- Elixir expression: executes code and prints result -->+ <StringDetect String="<%=" attribute="Tag" context="#pop!Expression" />+ <!-- Additional tags that are supported but don't have special meaning by default -->+ <StringDetect String="<%|" attribute="Tag" context="#pop!Expression" />+ <StringDetect String="<%/" attribute="Tag" context="#pop!Expression" />+ <!-- Elixir Expression: executes code but discards output -->+ <Detect2Chars char="<" char1="%" attribute="Tag" context="#pop!Expression" />+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Expression">+ <Detect2Chars char="%" char1=">" attribute="Tag" context="#pop"/>+ <RegExpr String="@&identifier;" attribute="Assigns" context="#stay" />+ <IncludeRules context="Normal##Elixir" />+ </context>+ <context attribute="Quotation" lineEndContext="#stay" name="Quotation">+ <Detect2Chars char="%" char1=">" attribute="Quotation" context="#pop"/>+ </context>+ <context attribute="Comment" lineEndContext="#stay" name="Comment">+ <StringDetect String="--%>" attribute="Comment" context="#pop" endRegion="comment" />+ </context>+ </contexts>+ <itemDatas>+ <itemData defStyleNum="dsNormal" name="Normal Text" spellChecking="false"/>+ <itemData defStyleNum="dsBuiltIn" name="Tag"/>+ <itemData defStyleNum="dsVerbatimString" name="Quotation"/>+ <itemData defStyleNum="dsComment" name="Comment"/>+ <itemData defStyleNum="dsFunction" name="Assigns"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="multiLine" start="<%!--" end="--%>" region="comment" />+ </comments>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ xml/elixir-heex.xml view
@@ -0,0 +1,248 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY identifier "[a-z][a-zA-Z0-9_]*[!?]?">+ <!ENTITY module "[A-Z][a-zA-Z0-9_]*">+ <!ENTITY attributename "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">+ <!ENTITY htmltag "[A-Za-z_:][\w.:_-]*">+]>+<language author="Jade Pfeiffer (jade@pfeiffer.codes)"+ extensions="*.html.heex;*.heex"+ indenter="xml"+ kateversion="5.79"+ license="MIT"+ mimetype="text/x-elixir+heex"+ name="Elixir/HEEx"+ section="Scripts"+ style="heex"+ version="1">+ <highlighting>+ <list name="comprehensions">+ <item>let</item>+ <item>for</item>+ <item>if</item>+ </list>+ <list name="phx-variables">+ <item>assigns</item>+ </list>+ <list name="phx-bindings">+ <item>phx-click</item>+ <item>phx-click-away</item>+ <item>phx-change</item>+ <item>phx-submit</item>+ <item>phx-disable-with</item>+ <item>phx-trigger-action</item>+ <item>phx-auto-recover</item>+ <item>phx-blur</item>+ <item>phx-focus</item>+ <item>phx-window-blur</item>+ <item>phx-window-focus</item>+ <item>phx-keydown</item>+ <item>phx-keyup</item>+ <item>phx-window-keydown</item>+ <item>phx-window-keyup</item>+ <item>phx-key</item>+ <item>phx-viewport-top</item>+ <item>phx-viewport-bottom</item>+ <item>phx-update</item>+ <item>phx-mounted</item>+ <item>phx-remove</item>+ <item>phx-hook</item>+ <item>phx-connected</item>+ <item>phx-disconnected</item>+ <item>phx-debounce</item>+ <item>phx-throttle</item>+ <item>phx-track-static</item>+ </list>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Text">+ <DetectChar char="<" context="Tags" lookAhead="true"/>+ <IncludeRules context="Interpolated" />+ <DetectSpaces />+ </context>++ <context attribute="Normal Text" name="Tags">+ <!-- Hook into existing HTML definitions here so there is still control over attributes -->+ <Detect2Chars char="<" char1="!" context="#pop!HTML Special" lookAhead="true" />+ <Detect2Chars char="<" char1="/" attribute="Symbol" context="#pop!End Tags" />+ <!-- HEEx is still an EEx template, those rules can be inherited -->+ <IncludeRules context="Tag##Elixir/EEx" />+ <!-- Now Match -->+ <Detect2Chars char="<" char1="." attribute="Symbol" context="#pop!Tag Name Component" />+ <Detect2Chars char="<" char1=":" attribute="Symbol" context="#pop!Tag Name Slot" />+ <DetectChar char="<" context="#pop!Tag Name" attribute="Symbol" />+ </context>+ <context attribute="Symbol" fallthroughContext="#pop!Tag Name End" name="End Tags">+ <DetectChar char="." attribute="Symbol" context="#pop!Tag Name End Component" />+ <DetectChar char=":" attribute="Symbol" context="#pop!Tag Name End Slot" />+ </context>++ <!-- Tag Name handling -->+ <context attribute="Element" name="Tag Name">+ <RegExpr String="&module;" attribute="Module" context="#pop!Tag Name Module"/>+ <WordDetect String="script" attribute="Element" context="#pop!Script Tag" />+ <WordDetect String="style" attribute="Element" context="#pop!Style Tag" />+ <RegExpr String="&htmltag;" attribute="Element" context="#pop!Tag Body" />+ </context>+ <context attribute="Element" name="Tag Name End">+ <RegExpr String="&module;" attribute="Module" context="#pop!Tag Name End Module"/>+ <RegExpr String="&htmltag;" attribute="Element" context="#pop!Tag End" />+ </context>++ <!-- Tag Module Name -->+ <context attribute="Normal Text" name="Tag Module">+ <DetectChar char="." context="#stay" />+ <RegExpr String="&module;" attribute="Module" context="#stay"/>+ </context>+ <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Module">+ <IncludeRules context="Tag Module" />+ <IncludeRules context="Tag Name Component" />+ </context>+ <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Module">+ <IncludeRules context="Tag Module" />+ <IncludeRules context="Tag Name End Component" />+ </context>++ <!-- Tag Component -->+ <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Component">+ <RegExpr String="&identifier;" attribute="Function" context="#pop!Tag Body" />+ </context>+ <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Component">+ <RegExpr String="&identifier;" attribute="Function" context="#pop!Tag End" />+ </context>+ <!-- Tag Component Slot -->+ <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Slot">+ <RegExpr String="&identifier;" attribute="Symbol" context="#pop!Tag Body" />+ </context>+ <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Slot">+ <RegExpr String="&identifier;" attribute="Symbol" context="#pop!Tag End" />+ </context>++ <!-- Tag Body -->+ <context attribute="Normal Text" lineEndContext="#stay" name="Tag Body">+ <IncludeRules context="Tag End" />+ <IncludeRules context="Attributes" />+ <IncludeRules context="Interpolated" />+ <DetectSpaces />+ </context>++ <!-- End Tag, include-only -->+ <context attribute="Normal Text" name="Tag End">+ <Detect2Chars char="/" char1=">" attribute="Symbol" context="#pop"/>+ <DetectChar char=">" attribute="Symbol" context="#pop" />+ </context>++ <!-- <script> Tags -->+ <context attribute="Normal Text" name="Script Tag">+ <Detect2Chars char="/" char1=">" attribute="Symbol" context="#pop"/>+ <DetectChar char=">" attribute="Symbol" context="#pop!Script" />+ <IncludeRules context="Attributes" />+ <IncludeRules context="Interpolated" />+ <DetectSpaces />+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Script">+ <StringDetect String="</script>" context="#pop!Script Tag End" lookAhead="true" />+ <IncludeRules context="Text##Elixir/EEx" />+ <DetectChar attribute="String" context="Script String" char=""" />+ <IncludeRules context="Normal##JavaScript" />+ </context>+ <context attribute="Normal Text" name="Script Tag End">+ <Detect2Chars char="<" char1="/" attribute="Symbol" context="#stay" />+ <StringDetect String="script" attribute="Element" context="#stay" />+ <DetectChar char=">" attribute="Symbol" context="#pop" />+ </context>+ <context attribute="Normal Text" name="Script String">+ <DetectChar attribute="String" context="#pop" char=""" />+ <IncludeRules context="Text##Elixir/EEx" />+ <IncludeRules context="String##JavaScript" />+ </context>++ <!-- <style> Tags -->+ <context attribute="Normal Text" name="Style Tag">+ <Detect2Chars char="/" char1=">" attribute="Symbol" context="#pop"/>+ <DetectChar char=">" attribute="Symbol" context="#pop!Style" />+ <IncludeRules context="Attributes" />+ <IncludeRules context="Interpolated" />+ <DetectSpaces />+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Style">+ <StringDetect String="</style>" context="#pop!Style Tag End" lookAhead="true" />+ <IncludeRules context="Text##Elixir/EEx" />+ <IncludeRules context="Base##CSS" />+ </context>+ <context attribute="Normal Text" name="Style Tag End">+ <Detect2Chars char="<" char1="/" attribute="Symbol" context="#stay" />+ <StringDetect String="style" attribute="Element" context="#stay" />+ <DetectChar char=">" attribute="Symbol" context="#pop" />+ </context>++ <!-- Tag Attributes -->+ <context attribute="Attribute" name="Attributes">+ <DetectChar char=":" attribute="Control Flow" context="Attribute BuiltIn" />+ <StringDetect String="phx-" context="Phoenix Binding" lookAhead="true" />+ <RegExpr String="&attributename;" attribute="Attribute" context="Attribute Equals" />+ </context>+ <context attribute="Control Flow" name="Attribute BuiltIn" fallthroughContext="#pop!Attribute Equals">+ <keyword String="comprehensions" attribute="Control Flow" context="#pop!Attribute Equals" />+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop" name="Attribute Equals">+ <DetectChar char="=" attribute="Operator" context="#pop!Attribute Value" />+ </context>+ <context attribute="String" lineEndContext="#stay" name="Attribute Value">+ <DetectChar char=""" context="#pop!Attribute Value Quote" />+ <DetectChar char="{" attribute="String" context="#pop!Interpolate" beginRegion="interpolate"/>+ <DetectSpaces />+ </context>+ <context attribute="String" name="Attribute Value Quote">+ <DetectChar char=""" attribute="String" context="#pop" />+ <IncludeRules context="FindEntityRefs##HTML" />+ </context>+ <context attribute="Symbol" name="Phoenix Binding">+ <keyword String="phx-bindings" attribute="Symbol" context="#pop!Attribute Equals" />+ <RegExpr String="phx-value-&attributename;" attribute="Symbol" context="#pop!Attribute Equals" />+ <RegExpr String="phx-(&attributename;)?" attribute="Normal Text" context="#pop!Attribute Equals" />+ </context>++ <context attribute="Normal Text" name="HTML Special">+ <IncludeRules context="FindHTML##HTML" />+ </context>++ <context attribute="Normal Text" name="Interpolated">+ <DetectChar char="{" attribute="String" context="Interpolate" beginRegion="interpolate"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Interpolate">+ <!-- Add Phoenix-specific terms for the template -->+ <RegExpr String="@&identifier;" attribute="Assigns" context="#stay" />+ <keyword String="phx-variables" attribute="Assigns" context="#stay"/>++ <DetectChar char="{" beginRegion="map_or_struct_or_tuple" attribute="Braces" context="Interpolate Scope"/>+ <DetectChar char="}" attribute="String" context="#pop" endRegion="interpolate" />+ <IncludeRules context="Normal##Elixir" />+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Interpolate Scope">+ <DetectChar char="}" attribute="String" context="#pop" endRegion="map_or_struct_or_tuple" />+ <IncludeRules context="Interpolate" />+ </context>+ </contexts>+ <itemDatas>+ <itemData defStyleNum="dsNormal" name="Normal Text" spellChecking="false"/>+ <itemData defStyleNum="dsNormal" name="Braces"/>+ <itemData defStyleNum="dsBuiltIn" name="Symbol"/>+ <itemData defStyleNum="dsKeyword" name="Element"/>+ <itemData defStyleNum="dsOperator" name="Operator"/>+ <itemData defStyleNum="dsExtension" name="Control Flow"/>+ <itemData defStyleNum="dsString" name="String"/>+ <itemData defStyleNum="dsNormal" name="Module"/>+ <itemData defStyleNum="dsFunction" name="Function"/>+ <itemData defStyleNum="dsOthers" name="Assigns"/>+ <itemData defStyleNum="dsNormal" name="Attribute"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <!-- Same comments from Elixir/EEx -->+ <comment name="multiLine" start="<%!--" end="--%>" region="comment" />+ </comments>+ <keywords weakDeliminator=":-" />+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/elixir.xml view
@@ -1,12 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language [- <!ENTITY symbols "(?:@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?">+ <!ENTITY identifier "[a-z][a-zA-Z0-9_]*">+ <!ENTITY module "[A-Z][a-zA-Z0-9_]*"> ]> <!-- Elixir syntax highlighting definition for Kate. Copyright (C) 2014 by Rubén Caro (ruben.caro.estevez@gmail.com) Copyright (C) 2016 by Boris Egorov (egorov@linux.com)+ Copyright (C) 2025 by Jade Pfeiffer (jade@pfeiffer.codes) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public@@ -22,8 +24,8 @@ Boston, MA 02110-1301, USA. --> <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->-<language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com)"- extensions="*.ex;*.exs;*.eex;*.xml.eex;*.js.eex;*.heex"+<language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com), Jade Pfeiffer (jade@pfeiffer.codes)"+ extensions="*.ex;*.exs" indenter="elixir" kateversion="5.79" license="LGPLv2+"@@ -31,7 +33,7 @@ name="Elixir" section="Sources" style="elixir"- version="15"+ version="16" priority="2"> <highlighting> <list name="control-flow">@@ -40,6 +42,7 @@ <item>else</item> <item>if</item> <item>raise</item>+ <item>reraise</item> <item>rescue</item> <item>throw</item> <item>try</item>@@ -47,44 +50,42 @@ </list> <list name="keywords"> <item>case</item>- <item>bc</item>- <item>lc</item>+ <item>with</item> <item>for</item> <item>receive</item>- <item>exit</item> <item>after</item> <item>quote</item> <item>unquote</item>+ <item>unquote_splicing</item> <item>super</item> <item>and</item> <item>not</item> <item>or</item> <item>when</item>- <item>xor</item> <item>in</item>- <item>inlist</item>- <item>inbits</item> </list>- <list name="pseudo-variables">+ <list name="atoms"> <item>nil</item> <item>true</item> <item>false</item> </list> <list name="definitions"> <item>defmodule</item>- <item>def</item>- <item>defp</item> <item>defprotocol</item> <item>defimpl</item> <item>defrecord</item> <item>defstruct</item>+ <item>defexception</item>+ <item>defoverridable</item>+ </list>+ <list name="def-functions">+ <item>def</item>+ <item>defp</item> <item>defmacro</item> <item>defmacrop</item>+ <item>defguard</item>+ <item>defguardp</item> <item>defdelegate</item>- <item>defcallback</item>- <item>defmacrocallback</item>- <item>defexception</item>- <item>defoverridable</item> </list> <list name="mixin-macros"> <item>import</item>@@ -92,148 +93,435 @@ <item>alias</item> <item>use</item> </list>+ <list name="special-forms">+ <item>__MODULE__</item>+ <item>__ENV__</item>+ <item>__DIR__</item>+ <item>__STACKTRACE__</item>+ <item>__CALLER__</item>+ </list>+ <list name="module-attributes">+ <item>after_compile</item>+ <item>after_verify</item>+ <item>before_compile</item>+ <item>behaviour</item>+ <item>callback</item>+ <item>compile</item>+ <item>deprecated</item>+ <item>dialyzer</item>+ <item>external_resource</item>+ <item>file</item>+ <item>impl</item>+ <item>nifs</item>+ <item>on_definition</item>+ <item>on_load</item>+ <item>vsn</item>+ </list>+ <list name="struct-attributes">+ <item>derive</item>+ <item>enforce_keys</item>+ </list>+ <list name="typespec-attributes">+ <item>type</item>+ <item>typep</item>+ <item>opaque</item>+ <item>spec</item>+ <item>callback</item>+ <item>macrocallback</item>+ <item>optional_callbacks</item>+ </list> <contexts> <context attribute="Normal Text" lineEndContext="#stay" name="Normal">- <!-- "shebang" line -->- <RegExpr String="^#!\/.*" attribute="Keyword" column="0" context="#stay"/>-- <!-- End terminated blocks -->- <!-- can be started by do or fn, but not by do: -->- <RegExpr String="\bdo\b(?!:)" attribute="Keyword" beginRegion="doend_block"/>- <WordDetect String="fn" attribute="Keyword" beginRegion="doend_block"/>- <WordDetect String="end" attribute="Keyword" endRegion="doend_block"/>- <!-- Lists -->- <DetectChar char="[" beginRegion="list" attribute="Separator Array"/>- <DetectChar char="]" endRegion="list" attribute="Separator Array"/>+ <DetectChar char="[" beginRegion="list" attribute="Braces"/>+ <DetectChar char="]" endRegion="list" attribute="Braces"/> - <!-- Maps and Structs and tuples -->- <DetectChar char="{" beginRegion="map_or_struct_or_tuple" attribute="Separator Pair"/>- <DetectChar char="}" endRegion="map_or_struct_or_tuple" attribute="Separator Pair"/>+ <!-- Maps, Structs and Tuples -->+ <DetectChar char="%" attribute="Braces" context="Map Or Struct"/>+ <DetectChar char="{" beginRegion="map_or_struct_or_tuple" attribute="Braces"/>+ <DetectChar char="}" endRegion="map_or_struct_or_tuple" attribute="Braces"/> <!-- Function calls and definitions -->- <DetectChar char="(" beginRegion="parameters" attribute="Separator Pair"/>- <DetectChar char=")" endRegion="parameters" attribute="Separator Pair"/>-+ <DetectChar char="(" beginRegion="parameters" attribute="Braces"/>+ <DetectChar char=")" endRegion="parameters" attribute="Braces"/> <!-- Defined words --> <keyword String="keywords" attribute="Keyword" context="#stay"/> <keyword String="control-flow" attribute="Control Flow" context="#stay"/> <keyword String="definitions" attribute="Definition" context="#stay"/>- <keyword String="pseudo-variables" attribute="Pseudo variable" context="#stay"/>+ <keyword String="def-functions" attribute="Definition" context="Function Definition"/>+ <keyword String="atoms" attribute="Atom" context="#stay"/> <keyword String="mixin-macros" attribute="Mixin macros" context="#stay"/>+ <keyword String="special-forms" attribute="Built In" context="#stay"/> - <!-- special-character globals -->- <RegExpr String="\b[_A-Z]+[A-Z_0-9]+\b" attribute="Global Constant" context="#stay"/>+ <!-- Numeric values. -->+ <DetectChar char="0" context="Numeric" lookAhead="true"/>+ <AnyChar String="123456789" context="Int" lookAhead="true"/> + <DetectChar char="," attribute="Normal Text" context="#stay"/>+ <DetectChar char="?" context="CharacterLiteral" lookAhead="true"/>+ <IncludeRules context="Sigils"/>+ <Detect2Chars char=":" char1=":" attribute="Operator" context="#stay"/>+ <DetectChar char=":" attribute="Atom" context="AtomValue"/>++ <AnyChar String=".=+-*/\!^:|&<>" context="Operators" lookAhead="true"/>+ <StringDetect String=""""" attribute="String" context="Heredoc"/>+ <DetectChar char=""" attribute="String" context="Bitstring" lookAhead="true"/>+ <DetectChar char="'" attribute="Charlist" context="Charlist"/>+ <DetectChar char="#" attribute="Comment" context="Line Comment"/>+ <DetectChar char="@" context="Module Attribute" lookAhead="true"/>++ <!-- Identifiers -->+ <DetectChar char="_" context="Underscore" lookAhead="true"/> <!-- Generally a module or class name like "File", "MyModule_1", .. -->- <RegExpr String="\b[A-Z]+_*(?:[0-9]|[a-z])[_a-zA-Z0-9]*\b" attribute="Constant" context="#stay"/>+ <RegExpr String="&module;" attribute="Module" context="#stay"/>+ <RegExpr String="(&identifier;[?!]?)" context="Identifier" lookAhead="true"/>+ <DetectSpaces/>+ </context> - <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->- <RegExpr String="\b\-?0[xX](?:[0-9a-fA-F]|_[0-9a-fA-F])+" attribute="Hex" context="#stay"/>- <RegExpr String="\b\-?0[bB](?:[01]|_[01])+" attribute="Bin" context="#stay"/>- <RegExpr String="\b\-?0[1-7](?:[0-7]|_[0-7])*" attribute="Octal" context="#stay"/>- <RegExpr String="\b\-?[0-9](?:[0-9]|_[0-9])*\.[0-9](?:[0-9]|_[0-9])*(?:[eE]\-?[1-9](?:[0-9]|_[0-9])*(?:\.[0-9]*)?)?" attribute="Float" context="#stay"/>- <RegExpr String="\b\-?[1-9](?:[0-9]|_[0-9])*\b" attribute="Dec" context="#stay"/>- <Int attribute="Dec" context="#stay"/>- <HlCChar attribute="Char" context="#stay"/>- <DetectChar attribute="Operator" char="." context="#stay"/>- <Detect2Chars attribute="Operator" char="&" char1="&" context="#stay"/>- <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>- <!-- \s!|/=\s is regexp hack -->- <RegExpr String="\s[\?\:\%]\s|[|&<>\^\+*~\-=/]+|\s!|/=\s" attribute="Operator" context="#stay"/>- <Detect2Chars char="%" char1="=" attribute="Operator" context="#stay"/>- <RegExpr String=":&symbols;|\b&symbols;:|:\[\]=?" attribute="Symbol" context="#stay"/>- <RegExpr String="@(?:module)?doc\s+"""" attribute="Attribute" context="Documentation"/>- <StringDetect String=""""" attribute="String" context="Triple Quoted String"/>- <DetectChar attribute="String" char=""" context="Quoted String"/>- <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>- <Detect2Chars char="?" char1="#" attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" char="#" context="General Comment"/>- <RegExpr String="@[a-zA-Z_0-9]+" attribute="Attribute" context="#stay"/>- <!-- handle the different regular expression formats -->- <DetectIdentifier attribute="Normal Text" context="#stay"/>+ <context attribute="Normal Text" fallthroughContext="#pop" name="Map Or Struct">+ <DetectChar char="{" context="#pop" lookAhead="true"/>+ <keyword String="special-forms" attribute="Built In" context="#stay"/>+ <RegExpr String="_*&module;" attribute="Module" context="#stay"/> </context>- <context attribute="DocComment" lineEndContext="#stay" name="Documentation">- <StringDetect String=""""" attribute="Attribute" context="#pop"/>- <RegExpr attribute="MarkdownHead" String="^\s*#+\s.*[#]?$" column="0"/>- <RegExpr attribute="MarkdownBullet" String="^\s*[\*\+\-]\s" column="0"/>- <RegExpr attribute="MarkdownNumlist" String="^\s*[\d]+\.\s" column="0"/>- <RegExpr attribute="MarkdownCode" context="Markdown Code" String="^\s*\`\`\`\s*$" column="0"/>- <DetectSpaces />- <IncludeRules context="Normal Text##Markdown"/>++ <!-- Operators -->+ <context attribute="Operator" fallthroughContext="#pop" name="Operators">+ <Detect2Chars char="=" char1=">" attribute="Operator" context="#pop"/>+ <Detect2Chars char=":" char1=":" attribute="Operator" context="#pop"/>+ <AnyChar String="<>" context="Arrows" lookAhead="true"/>+ <StringDetect String="..." attribute="Operator" context="#pop"/>+ <Detect2Chars char="." char1="." attribute="Operator" context="#pop"/>+ <DetectChar char="." attribute="Normal Text" context="#pop"/>+ <AnyChar String="=+-*/\!^:|&~" context="Atomable Operators" lookAhead="true"/> </context>- <context attribute="String" lineEndContext="#stay" name="Triple Quoted String">+ <context attribute="Error" fallthroughContext="#pop" name="Atomable Operators">+ <Detect2Chars char="*" char1="*" context="#pop"/>+ <Detect2Chars char="=" char1="~" context="#pop"/>+ <Detect2Chars char="\" char1="\" context="#pop"/>+ <Detect2Chars char="|" char1=">" context="#pop"/>+ <Detect2Chars char="-" char1=">" context="#pop"/>+ <Detect2Chars char=">" char1="=" context="#pop"/>+ <AnyChar String="*/^" context="#pop"/>+ <RegExpr String="([\+\-\=\|\!\&])(?:\1\1?)?|<(?:<<|~?>|<?~|[-=])?|(?:[~>]>>|[~=]?>)" context="#pop"/>+ </context>+ <context attribute="Operator" fallthroughContext="#pop!Atomable Operators" name="Arrows">+ <StringDetect String="<<<" attribute="Operator" context="#pop"/>+ <StringDetect String=">>>" attribute="Operator" context="#pop"/>+ <StringDetect String="<<" attribute="Braces" context="#pop" beginRegion="bitstring"/>+ <StringDetect String=">>" attribute="Braces" context="#pop" endRegion="bitstring"/>+ </context>++ <!-- Numeric Literals -->+ <context attribute="Integer" lineEndContext="#pop" fallthroughContext="#pop" name="Numeric">+ <Detect2Chars char="0" char1="b" attribute="Bin" context="#pop!Base Bin"/>+ <Detect2Chars char="0" char1="x" attribute="Hex" context="#pop!Base Hex"/>+ <Detect2Chars char="0" char1="o" attribute="Octal" context="#pop!Base Oct"/>+ <Detect2Chars char="0" char1="." attribute="Float" context="#pop!Float Point"/>+ <DetectChar char="0" attribute="Integer" context="#pop!Int" lookAhead="true"/>+ </context>+ <context attribute="Hex" lineEndContext="#pop" fallthroughContext="#pop" name="Base Hex">+ <AnyChar String="0123456789ABCDEFabcdef" context="#stay"/>+ <RegExpr String="_[\dA-F]+" insensitive="true" context="#stay"/>+ </context>+ <context attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop" name="Base Oct">+ <AnyChar String="01234567" context="#stay"/>+ <RegExpr String="_[0-7]+" context="#stay"/>+ </context>+ <context attribute="Bin" lineEndContext="#pop" fallthroughContext="#pop" name="Base Bin">+ <AnyChar String="01" context="#stay"/>+ <Detect2Chars char="_" char1="1" context="#stay"/>+ <Detect2Chars char="_" char1="0" context="#stay"/>+ </context>++ <context attribute="Integer" lineEndContext="#pop" fallthroughContext="#pop" name="Int">+ <RegExpr String="\d+(_\d+)*\.[^\.]" attribute="Float" context="#pop!Float Point"/>+ <AnyChar String="0123456789" context="#stay"/>+ <RegExpr String="_\d+" context="#stay"/>+ <Detect2Chars char="." char1="." context="#pop!Operators"/>+ <DetectChar char="." context="#pop!Float Point"/>+ </context>+ <context attribute="Float" lineEndContext="#pop" fallthroughContext="#pop" name="Float Point">+ <AnyChar String="0123456789" context="#stay"/>+ <RegExpr String="_\d+" context="#stay"/>+ <Detect2Chars char="e" char1="-" context="#pop!Scientific Notation"/>+ <DetectChar char="e" context="#pop!Scientific Notation"/>+ </context>+ <context attribute="Float" lineEndContext="#pop" fallthroughContext="#pop" name="Scientific Notation">+ <AnyChar String="0123456789" context="#stay"/>+ <RegExpr String="_\d+" context="#stay"/>+ </context>++ <context attribute="Char Literal" fallthroughContext="#pop" name="CharacterLiteral">+ <RegExpr String="\?(\\\S|[^\s\\])" attribute="Char Literal" context="#pop"/>+ <Detect2Chars char="?" char1="\" attribute="Error" context="#pop"/>+ </context>++ <!-- Variables, Functions, Keywords -->+ <context attribute="Variable Underscore" name="Underscore">+ <RegExpr String="_*&identifier;[?!]?" attribute="Variable Underscore" context="#pop"/>+ <DetectChar char="_" attribute="Variable Underscore" context="#pop"/>+ </context>+ <context attribute="Variable" fallthroughContext="#pop" name="Identifier">+ <RegExpr String="(%1)\(" context="#pop!Function" lookAhead="true" dynamic="true"/>+ <RegExpr String="%1:(?!:)" attribute="Atom" context="#pop" dynamic="true"/>++ <!-- End terminated blocks -->+ <WordDetect String="do" attribute="Keyword" beginRegion="doend_block"/>+ <WordDetect String="fn" attribute="Keyword" beginRegion="doend_block"/>+ <WordDetect String="end" attribute="Keyword" endRegion="doend_block"/>++ <StringDetect String="%1" attribute="Variable" context="#pop" dynamic="true"/>+ <DetectSpaces lookAhead="true" context="#pop"/>+ </context>+ <context attribute="Function" fallthroughContext="#pop" name="Function">+ <StringDetect String="%1" attribute="Function" context="#pop" dynamic="true"/>+ <DetectChar char="(" context="#pop" beginRegion="parameters" attribute="Braces"/>+ </context>+ <context attribute="Function" fallthroughContext="#pop" name="Function Definition">+ <RegExpr String="_*&identifier;[?!]?" attribute="Function" context="#pop"/>+ <DetectSpaces attribute="Normal Text"/>+ </context>++ <context attribute="Attribute" lineEndContext="#pop" name="Module Attribute">+ <RegExpr String="(@(?:module|type)?doc)" context="#pop!Doc" lookAhead="true"/>+ <DetectChar char="@" attribute="Normal Text" context="#stay"/>+ <keyword String="module-attributes" attribute="Built In" context="#stay"/>+ <keyword String="struct-attributes" attribute="Built In" context="#stay"/>+ <keyword String="typespec-attributes" attribute="Built In" context="#stay"/>+ <RegExpr String="(&identifier;[?!]?)" attribute="Normal Text" context="#pop"/>+ <DetectSpaces context="#pop"/>+ </context>++ <!-- @moduledoc, @typedoc, and @doc -->+ <context attribute="Attribute" lineEndContext="#pop" fallthroughContext="#pop" name="Doc">+ <RegExpr String="%1 (?:~[Ss])?("(?:"")?)" context="#pop!Doc Interp" beginRegion="doc_comment" dynamic="true"/>+ <StringDetect String="%1" context="#pop" dynamic="true"/>+ </context>+ <context attribute="DocComment" lineEndContext="#stay" name="Doc Interp">+ <StringDetect String="%1" attribute="DocComment" context="#pop" endRegion="doc_comment" dynamic="true"/>+ <IncludeRules context="Interpolated"/>+ <IncludeRules context="Markdown"/>+ </context>++ <!-- Atoms (keys: and :values) -->+ <context attribute="Atom" fallthroughContext="#pop!AtomOperator" name="AtomValue">+ <RegExpr String="("|')" attribute="Atom" context="#pop!Quoted Atom"/>+ <RegExpr String="(?:_|&identifier;)" attribute="Atom" context="#pop!AtomNodeName"/>+ </context>+ <context attribute="Atom" lineEndContext="#pop" fallthroughContext="#pop" name="AtomNodeName">+ <!-- Used for Node names -->+ <AnyChar String="!?" attribute="Atom" context="#pop"/>+ <RegExpr String="&identifier;|@[a-zA-Z0-9_]*(\.&identifier;)*" attribute="Atom" context="#stay"/>+ </context>+ <context attribute="Atom" lineEndContext="#pop" fallthroughContext="#pop" name="AtomOperator">+ <DetectChar char="@" attribute="Atom" context="#pop"/>+ <Detect2Chars char="{" char1="}" attribute="Atom" context="#pop"/>+ <StringDetect String="%{}" attribute="Atom" context="#pop"/>+ <StringDetect String="<<>>" attribute="Atom" context="#pop"/>+ <StringDetect String="..." attribute="Atom" context="#pop"/>+ <Detect2Chars char="." char1="." attribute="Atom" context="#pop"/>+ <DetectChar char="." attribute="Atom" context="#pop"/>+ <AnyChar String=".=+-*/\!^~:|&<>" context="AtomValue Operator" lookAhead="true"/>+ </context>+ <context attribute="Error" fallthroughContext="#pop" name="AtomValue Operator">+ <IncludeRules context="Atomable Operators"/>+ </context>+ <context attribute="Atom" lineEndContext="#stay" name="Quoted Atom">+ <StringDetect String="%1" attribute="Atom" context="#pop" dynamic="true"/>+ <IncludeRules context="Interpolated"/>+ </context>+ <context attribute="Atom" name="Atom Bitstring Key">+ <DetectChar char=""" attribute="Atom" context="#pop!Atom Bitstring Key Body"/>+ </context>+ <context attribute="Atom" name="Atom Bitstring Key Body">+ <Detect2Chars char=""" char1=":" attribute="Atom" context="#pop"/>+ <IncludeRules context="Interpolated"/>+ </context>++ <context attribute="DocComment" name="Markdown">+ <RegExpr String="^(\s*)#{1,7}\s" context="Markdown Header" column="0" lookAhead="true"/>+ <RegExpr String="^\s*([\+\-\*]|\d+\.)\s" attribute="MarkdownMark" column="0"/>+ <RegExpr String="`.+`" context="Markdown Code" minimal="true" lookAhead="true"/>+ <DetectSpaces/>+ </context>+ <context attribute="MarkdownHead" lineEndContext="#pop" name="Markdown Header">+ <StringDetect String="%1" attribute="Normal Text" dynamic="true"/>+ <DetectSpaces/>+ </context>+ <context attribute="Normal Text" name="Markdown Code">+ <DetectChar char="`" attribute="DocComment" context="#pop!Markdown Code Body"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="Markdown Code Body">+ <DetectChar char="`" context="#pop"/>+ <IncludeRules context="Normal"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="Heredoc"> <StringDetect String=""""" attribute="String" context="#pop"/> </context>- <context attribute="String" lineEndContext="#stay" name="Quoted String">- <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>- <Detect2Chars char="\" char1=""" attribute="String" context="#stay"/>- <RegExpr String="#@{1,2}" attribute="Substitution" context="Short Subst"/>- <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>- <DetectChar attribute="String" char=""" context="#pop"/>+ <context attribute="String" name="Bitstring">+ <!-- Atom keys can also have interpolatation if they are a "String" -->+ <RegExpr String=""(?:\\.|#\{.+\}|[^"])*":\s" attribute="Atom" context="#pop!Atom Bitstring Key" minimal="true" lookAhead="true"/>+ <DetectChar char=""" attribute="String" context="#pop!Bitstring Body"/> </context>- <context attribute="Raw String" lineEndContext="#stay" name="Apostrophed String">- <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>- <Detect2Chars char="\" char1="'" attribute="String" context="#stay"/>- <DetectChar attribute="Raw String" char="'" context="#pop"/>+ <context attribute="String" lineEndContext="#stay" name="Bitstring Body">+ <DetectChar char=""" attribute="String" context="#pop"/>+ <IncludeRules context="Interpolated"/> </context>- <!-- Substitutions can be nested -->- <context attribute="Normal Text" lineEndContext="#stay" name="Subst">- <DetectChar attribute="Substitution" char="}" context="#pop"/>- <!-- Highlight substitution as code. -->+ <context attribute="Charlist" lineEndContext="#stay" name="Charlist">+ <DetectChar char="'" attribute="Charlist" context="#pop"/>+ <IncludeRules context="Interpolated"/>+ </context>++ <!-- Sigils -->+ <context attribute="String" name="Sigils">+ <StringDetect String="~H"" context="Sigil HEEx" lookAhead="true"/>+ <RegExpr String="~(?:[a-z]|[A-Z][A-Z\d]*)[/|"'\(\{\[\<]" attribute="String" context="Sigil" lookAhead="true"/>+ <DetectChar char="~" attribute="Operator" context="Operators" lookAhead="true"/>+ </context>+ <context attribute="String" name="Sigil">+ <DetectChar char="~" attribute="String" context="#stay"/>+ <RegExpr String="[a-z]" attribute="String" context="#pop!Sigil Delimeter Interp"/>+ <RegExpr String="[A-Z]" attribute="String" context="#pop!Sigil Delimeter Raw"/>+ </context>++ <context attribute="String" name="Sigil HEEx">+ <DetectChar char="~" attribute="String" context="#stay" beginRegion="sigil_heex"/>+ <DetectChar char="H" attribute="String" context="#stay"/>+ <RegExpr String="("""|[/|"'])" attribute="String" context="#pop!Sigil Interp HEEx" beginRegion="sigil"/>+ </context>+ <context attribute="Normal Text" name="Sigil Interp HEEx">+ <StringDetect String="%1" attribute="String" context="#pop" dynamic="true"/>+ <IncludeRules context="Text##Elixir/HEEx"/>+ </context>++ <!-- Sigils, Interpolated -->+ <context attribute="String" name="Sigil Delimeter Interp">+ <DetectChar char="[" attribute="String" context="#pop!Sigil Interp Square" beginRegion="sigil"/>+ <DetectChar char="(" attribute="String" context="#pop!Sigil Interp Paren" beginRegion="sigil"/>+ <DetectChar char="{" attribute="String" context="#pop!Sigil Interp Curly" beginRegion="sigil"/>+ <DetectChar char="<" attribute="String" context="#pop!Sigil Interp Angle" beginRegion="sigil"/>+ <RegExpr String="("""|[/|"'])" attribute="String" context="#pop!Sigil Interp Match" beginRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Interp Square">+ <IncludeRules context="Sigil Square"/>+ <IncludeRules context="Interpolated"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Interp Paren">+ <IncludeRules context="Sigil Paren"/>+ <IncludeRules context="Interpolated"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Interp Curly">+ <IncludeRules context="Sigil Curly"/>+ <IncludeRules context="Interpolated"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Interp Angle">+ <IncludeRules context="Sigil Angle"/>+ <IncludeRules context="Interpolated"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Interp Match">+ <IncludeRules context="Sigil Match"/>+ <IncludeRules context="Interpolated"/>+ </context>++ <!-- Sigils, Non-Interpolated -->+ <context attribute="String" name="Sigil Delimeter Raw">+ <DetectChar char="[" attribute="String" context="#pop!Sigil Square" beginRegion="sigil"/>+ <DetectChar char="(" attribute="String" context="#pop!Sigil Paren" beginRegion="sigil"/>+ <DetectChar char="{" attribute="String" context="#pop!Sigil Curly" beginRegion="sigil"/>+ <DetectChar char="<" attribute="String" context="#pop!Sigil Angle" beginRegion="sigil"/>+ <RegExpr String="("""|[/|"'])" attribute="String" context="#pop!Sigil Match" beginRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Square">+ <DetectChar char="]" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Paren">+ <DetectChar char=")" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Curly">+ <DetectChar char="}" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Angle">+ <DetectChar char=">" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>+ </context>+ <context attribute="String" lineEndContext="#stay" name="Sigil Match">+ <StringDetect String="%1" attribute="String" context="#pop!Sigil Delimeter Modifiers" dynamic="true" endRegion="sigil"/>+ </context>++ <context attribute="Normal Text" fallthroughContext="#pop" lineEndContext="#pop" name="Sigil Delimeter Modifiers">+ <!-- Captures modifiers after delimeter -->+ <RegExpr String="[a-zA-Z]*" attribute="String" context="#pop"/>+ </context>++ <!-- Interpolatation format -->+ <context attribute="Interpolation" name="Interpolated">+ <!-- Escapes can only happen in the same context as Interpolated strings -->+ <DetectChar char="\" context="Escape Sequence" lookAhead="true"/>+ <Detect2Chars char="#" char1="{" attribute="Interpolation" context="Interp"/>+ </context>+ <!-- Interpolations can be nested -->+ <context attribute="Normal Text" lineEndContext="#stay" name="Interp">+ <DetectChar char="}" attribute="Interpolation" context="#pop"/>+ <!-- Highlight interpolation as code. --> <IncludeRules context="Normal"/> </context>- <context attribute="Substitution" lineEndContext="#pop" name="Short Subst">- <!-- Check for e.g.: "#@var#@@xy" -->- <RegExpr String="#@{1,2}" attribute="Substitution" context="#stay"/>- <RegExpr String="\w(?!\w)" attribute="Substitution" context="#pop"/>+ <context attribute="Special Char" name="Escape Sequence">+ <RegExpr String="\\(?:.|x[\dA-F]{2}|u(?:[\dA-F]{4}|\{[\dA-F]+\}))" attribute="Special Char" insensitive="true" context="#pop"/> </context>- <context attribute="Comment" lineEndContext="#pop" name="General Comment">- <DetectSpaces />++ <context attribute="Comment" lineEndContext="#pop" name="Line Comment">+ <DetectSpaces/> <IncludeRules context="##Comments"/> </context>- <context attribute="MarkdownCode" lineEndContext="#stay" name="Markdown Code">- <RegExpr String="^\s*```\s*$" attribute="MarkdownCode" context="#pop" column="0"/>- </context>+ </contexts> <itemDatas>- <itemData name="Global Constant" defStyleNum="dsConstant"/>- <itemData name="Constant" defStyleNum="dsConstant"/>- <itemData defStyleNum="dsNormal" name="Normal Text"/>- <itemData defStyleNum="dsKeyword" name="Keyword"/>+ <itemData defStyleNum="dsNormal" name="Normal Text"/>+ <itemData defStyleNum="dsNormal" name="Braces"/>+ <itemData defStyleNum="dsOperator" name="Operator"/>+ <itemData defStyleNum="dsKeyword" name="Keyword"/> <itemData defStyleNum="dsControlFlow" name="Control Flow"/>- <itemData defStyleNum="dsKeyword" name="Definition"/>- <itemData defStyleNum="dsImport" name="Mixin macros"/>- <itemData defStyleNum="dsConstant" name="Pseudo variable"/>- <itemData defStyleNum="dsDecVal" name="Dec"/>- <itemData defStyleNum="dsFloat" name="Float"/>- <itemData defStyleNum="dsChar" name="Char"/>- <itemData defStyleNum="dsBaseN" name="Octal"/>- <itemData defStyleNum="dsBaseN" name="Hex"/>- <itemData defStyleNum="dsBaseN" name="Bin"/>- <itemData defStyleNum="dsVariable" name="Symbol"/>- <itemData defStyleNum="dsString" name="String"/>- <itemData defStyleNum="dsVerbatimString" name="Raw String"/>- <itemData defStyleNum="dsOthers" name="Substitution"/>- <itemData defStyleNum="dsOthers" name="Attribute"/>- <itemData defStyleNum="dsComment" name="Comment"/>- <itemData defStyleNum="dsComment" name="DocComment"/>- <itemData defStyleNum="dsFunction" name="Separator Pair"/>- <itemData defStyleNum="dsOthers" name="Separator Array"/>+ <itemData defStyleNum="dsKeyword" name="Definition"/>+ <itemData defStyleNum="dsImport" name="Mixin macros"/>+ <itemData defStyleNum="dsNormal" name="Variable"/>+ <itemData defStyleNum="dsComment" name="Variable Underscore"/>+ <itemData defStyleNum="dsNormal" name="Module"/>+ <itemData defStyleNum="dsNormal" name="Attribute"/>+ <itemData defStyleNum="dsBuiltIn" name="Built In"/>+ <itemData defStyleNum="dsFunction" name="Function"/>+ <itemData defStyleNum="dsVariable" name="Atom"/>++ <!-- Literals -->+ <itemData defStyleNum="dsDecVal" name="Integer"/>+ <itemData defStyleNum="dsFloat" name="Float"/>+ <itemData defStyleNum="dsBaseN" name="Octal"/>+ <itemData defStyleNum="dsBaseN" name="Hex"/>+ <itemData defStyleNum="dsBaseN" name="Bin"/>++ <itemData defStyleNum="dsChar" name="Char Literal"/>++ <itemData defStyleNum="dsString" name="String" spellChecking="true"/>+ <itemData defStyleNum="dsVerbatimString" name="Charlist"/>+ <itemData defStyleNum="dsSpecialChar" name="Special Char"/>+ <itemData defStyleNum="dsFunction" name="Interpolation"/>++ <!-- Comments and Documentation -->+ <itemData defStyleNum="dsComment" name="Comment"/>+ <itemData defStyleNum="dsDocumentation" name="DocComment"/>++ <itemData defStyleNum="dsDocumentation" name="MarkdownHead" bold="true" underline="true"/>+ <itemData defStyleNum="dsDocumentation" name="MarkdownMark" bold="true"/>+ <!-- use these to mark errors and alerts things -->- <itemData defStyleNum="dsOperator" name="Operator"/>- <itemData name="MarkdownHead" defStyleNum="dsFunction" bold="true"/>- <itemData name="MarkdownBullet" defStyleNum="dsFunction"/>- <itemData name="MarkdownNumlist" defStyleNum="dsFunction"/>- <itemData name="MarkdownCode" defStyleNum="dsFunction"/>+ <itemData defStyleNum="dsError" name="Error"/> </itemDatas> </highlighting> <general> <comments> <comment name="singleLine" start="#"/> </comments>- <keywords casesensitive="1" weakDeliminator="!?"/>+ <keywords casesensitive="1" weakDeliminator="!?:"/> </general> </language> <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ xml/haml.xml view
@@ -0,0 +1,1424 @@+<?xml version="1.0" encoding="UTF-8"?>+<!--+ https://haml.info/docs/yardoc/file.REFERENCE.html++Ruby code inserted with `=`, `-` and others differs slightly from Ruby syntax:+- In Ruby, '\' at the end of a line is used for a line continuation,+ Haml uses the regex '( \||,)\s*$'.+- Blocks are automatically closed according to indentation.+ This means that `do ... end` in Ruby need not contain `end` in Haml.++As a result of these differences, the ruby.xml file is not used,+but copied and modified accordingly.+-->+<!DOCTYPE language [+ <!ENTITY tagc "[-a-zA-Z0-9_:]">+ <!ENTITY tagid "#(&tagc;+|(?![{@$])|$)">+ <!ENTITY entityname "(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\w.:_-]*)">++ <!--+ Ruby syntax+ -->++ <!ENTITY dec "[0-9](_?[0-9]++)*+">+ <!ENTITY percent_lit "[QqxwWiIsr]?[^\s[:alnum:]]">++ <!ENTITY ident "[_[:alpha:]]\w*+">+ <!-- NOTE Haml: without "(?!^__END__$)" -->+ <!ENTITY global_constant "(\b_+\d[_\d]*\b|\b(_[_\d]*)?[[:upper:]][_\d[:upper:]]*\b)">+ <!ENTITY constant "\b[[:upper:]][_\d[:upper:]]*[[:lower:]]\w*">+ <!ENTITY no_param "abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|__FILE__|for|fork|format|getc|gets|global_variables|if|in|include|lambda|__LINE__|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield|autoload|chomp|chop|exit|gsub|sub">+ <!-- ignore keyword, constant, class name and symbol (e.g. sym:).+ Constants can be preceded by ? or !, but this doesn't work with <keyword>+ -->+ <!ENTITY is_constant "((_[_\d]*)?[[:upper:]]\w*+|_+\d[_\d]*+\b)([^?!]|$)">+ <!ENTITY ident_not_kw "\b((?!(abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|for|fork|format|getc|gets|global_variables|if|in|include|lambda|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield)([^?!\w]|$)|\bautoload([^!\w]|$)|(block_given\?|defined\?|iterator\?)|(chomp|chop|exit|gsub|sub)([^?\w]|$)|&is_constant;)|(?<=[!?])(?=[[:lower:]]))&ident;(?!:)[?!]?">+ <!ENTITY msg "\b(?!&is_constant;)&ident;[?!]?">++ <!ENTITY special_escape "[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u\{[0-9a-fA-F]{0,6}\}|u[0-9a-fA-F]{4}|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\([^0-7xucCM]|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|$)|[ -BD-LN-\[\]-bd-tv-~])">+ <!ENTITY escape "\\([^0-7xucCM]|&special_escape;|$)">+ <!ENTITY partial_escape "[ux][0-9a-fA-F]*|u(\{[0-9a-fA-F]{0,6})?|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\[xucCM]?)?|c(\\M?)?|C|M(-(\\c?|\\(C-?)?)?)?">++ <!-- https://docs.ruby-lang.org/en/master/globals_rdoc.html -->+ <!-- $= $, $; are deprecated -->+ <!ENTITY global_var "\$([!@~&`'+/\\<>._*$?:"=,;]|[0-9]+|-\w|[[:alpha:]]\w+)">++ <!-- NOTE Haml: " |[\t ]*$" is not an operator -->+ <!-- without ? : % / < = -->+ <!ENTITY safe_op "(?:[-+*~^&]+|===?|<(=>?|(?!<))|[!>]=?|\.\.\.?|(?<! )[|]|[|](?![\t ]*$))">+ <!ENTITY op1 "&safe_op;++|([?:/%]|<<)&safe_op;*+">+ <!-- /= %= <<= -->+ <!-- / spaces -->+ <!-- % which is not gld -->+ <!-- << which is not heredoc -->+ <!-- nospace / -->+ <!-- nospace % -->+ <!-- nospace << -->+ <!ENTITY op2 "&safe_op;++|[?:](?=\s|$)|([/%]|<<)(?=[\s=]|$)|%(?!&percent_lit;)|<<(?=\s|$|[^-~\w'"`]|[-~][^\w'"`])|(?<!\s)([/%]|<<)&safe_op;*+">++ <!ENTITY sym_op "\[\]=?|[-+~]@?|![=~@]?|[/%|^&]|<(=>?)?|>=?|=~|===?|\*\*?">+ <!ENTITY symbol "&ident;[=?!]?:(?!:)|\[\]=?:">+]>+<language name="Haml" version="16" kateversion="5.79" section="Markup"+ extensions="*.haml"+ author="Cies Breijs (cies_at_kde_nl), Jonathan Poelen (jonathan.poelen@gmail.com)" license="LGPL"+ mimetype="text/x-haml">+<!-- mimetype="text/x-haml" this might be a problem as is doesn't exist -->++ <highlighting>++ <list name="ruby-keyword1">+ <item>and</item>+ <item>begin</item>+ <item>do</item>+ <item>else</item>+ <item>elsif</item>+ <item>ensure</item>+ <item>for</item>+ <item>if</item>+ <item>not</item>+ <item>or</item>+ <item>rescue</item>+ <item>then</item>+ <item>unless</item>+ <item>until</item>+ <item>when</item>+ <item>while</item>+ </list>++ <list name="ruby-keyword2">+ <item>break</item>+ <item>case</item>+ <item>defined?</item>+ <item>end</item>+ <item>in</item>+ <item>module</item>+ <item>next</item>+ <item>redo</item>+ <item>retry</item>+ <item>return</item>+ <item>yield</item>+ </list>++ <list name="keyword">+ <include>ruby-keyword1</include>+ <include>ruby-keyword2</include>+ <item>class</item>+ <item>def</item>+ </list>++ <list name="access-control">+ <include>access-control##Ruby</include>+ </list>++ <list name="attribute-definitions">+ <include>attribute-definitions##Ruby</include>+ </list>++ <list name="definitions">+ <include>definitions##Ruby</include>+ </list>++ <list name="pseudo-variables">+ <include>pseudo-variables##Ruby</include>+ </list>++ <list name="kernel-methods">+ <include>kernel-methods##Ruby</include>+ </list>++ <list name="mixin-methods">+ <include>mixin-methods##Ruby</include>+ </list>++ <contexts>+ <context attribute="Normal Text" name="normal" fallthroughContext="Text">+ <RegExpr attribute="Comment" context="mlComment2" column="0" String="^(\s)(\s*)(?:-#.*|/\s*$)"/>+ <!-- match filters for special syntax highlighting before detecting spaces so we know how far we need to indent -->+ <RegExpr context="SelectFilter" column="0" String="^\s*:" lookAhead="1"/>++ <DetectSpaces/>++ <RegExpr attribute="Tag" context="Elem" String="%&tagc;*"/>+ <RegExpr attribute="Div Id" context="Elem" String="&tagid;"/>+ <RegExpr attribute="Div Class" context="Elem" String="\.&tagc;*"/>++ <StringDetect attribute="Keyword" context="Text" String="=="/>+ <AnyChar attribute="Keyword" context="RubySourceLine" String="=~"/>+ <StringDetect attribute="Keyword" context="Text" String="!=="/>+ <StringDetect attribute="Keyword" context="RubySourceLine" String="!="/>+ <StringDetect attribute="Keyword" context="Text" String="!~="/>+ <StringDetect attribute="Keyword" context="RubySourceLine" String="!~"/>+ <StringDetect attribute="Keyword" context="Text" String="&=="/>+ <StringDetect attribute="Keyword" context="RubySourceLine" String="&="/>+ <StringDetect attribute="Keyword" context="Text" String="&~="/>+ <StringDetect attribute="Keyword" context="RubySourceLine" String="&~"/>+ <StringDetect attribute="Keyword" context="Text" String="! "/>+ <StringDetect attribute="Keyword" context="Text" String="& "/>++ <RegExpr attribute="Comment" context="mlComment1" column="0" String="^-#.*|^/\s*$"/>+ <DetectChar attribute="Keyword" context="RubySourceLine" char="-"/>+ <DetectChar attribute="Comment" context="comment" char="/"/>+ <DetectChar attribute="Escaped Text" context="EscapedAny" char="\"/>++ <StringDetect attribute="Doctype" context="Doctype" String="!!!" column="0"/>+ </context>++ <context attribute="Normal Text" name="EscapedAny" lineEndContext="#pop">+ <RegExpr attribute="Escaped Text" context="#pop!Text" String="."/>+ </context>++ <context attribute="Normal Text" name="SelectFilter">+ <RegExpr attribute="Filter" column="0" context="filterRuby" String="^(\s*):ruby\b"/>+ <RegExpr attribute="Filter" column="0" context="filterCSS" String="^(\s*):css\b"/>+ <RegExpr attribute="Filter" column="0" context="filterCoffeeScript" String="^(\s*):coffee(?:script)?\b"/>+ <RegExpr attribute="Filter" column="0" context="filterERB" String="^(\s*):erb\b"/>+ <RegExpr attribute="Filter" column="0" context="filterPlain" String="^(\s*):[a-zA-Z0-9_\-]*\b"/>+ <DetectSpaces context="#pop#pop!normal"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="Elem" fallthroughContext="Attr">+ <RegExpr attribute="Element Id" String="&tagid;"/>+ <RegExpr attribute="Element Class" String="\.&tagc;*"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop#pop" name="Attr" fallthroughContext="ElemOpt">+ <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash"/>+ <DetectChar attribute="Operator" context="parenthesis" char="(" beginRegion="Parenthesis"/>+ <DetectChar attribute="Operator" context="array" char="[" beginRegion="Array"/>+ <StringDetect attribute="Keyword" context="ElemOpt" String="<>"/>+ <StringDetect attribute="Keyword" context="ElemOpt" String="><"/>+ <AnyChar attribute="Keyword" context="ElemOpt" String="><"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop#pop#pop" name="ElemOpt" fallthroughContext="#pop#pop#pop!Text">+ <DetectChar attribute="Keyword" context="Empty" char="/"/>+ <AnyChar context="#pop#pop#pop" String="=~!&" lookAhead="1"/>+ </context>++ <context attribute="Error" lineEndContext="#pop#pop#pop#pop" name="Empty">+ <DetectSpaces attribute="Normal Text"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="Text">+ <RegExpr attribute="Normal Text" String="([^&#\\|]++|#(?![{@$])|\\\\?#(?![{@$])|&(?!&entityname;;)|(?<! )\||\|(?!\s*$))++"/>+ <StringDetect attribute="Ruby Substitution" String="#{" context="RubySourceLineSubst"/>+ <StringDetect lookAhead="1" String="#" context="MaybeShortSubst"/>+ <StringDetect attribute="Escaped Text" String="\\"/>+ <StringDetect attribute="Escaped Text" String="\#{"/>+ <StringDetect attribute="Escaped Text" String="\#@"/>+ <StringDetect attribute="Escaped Text" String="\#$"/>+ <StringDetect attribute="Escaped Text" String="|" context="MultiLineText"/>+ <RegExpr attribute="Entity" String="&&entityname;;"/>+ </context>++ <context attribute="Normal Text" name="MaybeShortSubst">+ <RegExpr attribute="Ruby Substitution" String="#@[[:upper:]]\w*|#\$([0-9]+|[[:alpha:]]\w*)" context="#pop"/>+ <StringDetect attribute="Error" String="#@" context="#pop"/>+ <StringDetect attribute="Error" String="#$" context="#pop"/>+ <StringDetect attribute="Normal Text" String="#" context="#pop"/>+ </context>++ <context attribute="Normal Text" name="MultiLineText" lineEndContext="CheckMultiLineText">+ </context>+ <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->+ <context attribute="Normal Text" name="CheckMultiLineText" fallthroughContext="#pop#pop#pop">+ <RegExpr String="^.* \|[\t ]*$" context="#pop#pop" column="0" lookAhead="1"/>+ <RegExpr String="^\s+$" column="0" attribute="Normal Text"/>+ </context>++ <context attribute="Normal Text" name="MultiLineText2" lineEndContext="CheckMultiLineText2">+ </context>+ <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->+ <context attribute="Normal Text" name="CheckMultiLineText2" fallthroughContext="#pop#pop#pop#pop">+ <IncludeRules context="CheckMultiLineText"/>+ </context>++ <context attribute="Normal Text" name="MultiLineText3" lineEndContext="CheckMultiLineText3">+ </context>+ <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->+ <context attribute="Normal Text" name="CheckMultiLineText3" fallthroughContext="#pop#pop#pop#pop#pop">+ <IncludeRules context="CheckMultiLineText"/>+ </context>++ <context attribute="Comment" name="mlComment1" fallthroughContext="#pop">+ <DetectSpaces attribute="Comment" context="CommentLine"/>+ </context>+ <context attribute="Comment" name="mlComment2" fallthroughContext="#pop">+ <StringDetect attribute="Comment" column="0" context="CommentLine" dynamic="1" String="%1%2%1"/>+ </context>+ <context attribute="Comment" name="CommentLine" lineEndContext="#pop">+ </context>++ <context attribute="Normal Text" name="filterRuby" fallthroughContext="#pop#pop">+ <!-- detect base indentation + 1 whitespace for code -->+ <StringDetect attribute="Normal Text" context="RubySourceLine" String="%1 " dynamic="true"/>+ </context>++ <context attribute="Normal Text" name="filterCoffeeScript" fallthroughContext="#pop#pop">+ <!-- detect base indentation + 1 whitespace for code -->+ <StringDetect attribute="Normal Text" context="coffeesourceline" String="%1 " dynamic="true"/>+ </context>++ <context attribute="Normal Text" name="filterCSS" fallthroughContext="#pop#pop">+ <!-- detect base indentation + 1 whitespace for code -->+ <StringDetect attribute="Normal Text" context="csssourceline" String="%1 " dynamic="true"/>+ </context>++ <context attribute="Normal Text" name="filterERB" fallthroughContext="#pop#pop">+ <!-- detect base indentation + 1 whitespace for code -->+ <StringDetect attribute="Normal Text" context="erbsourceline" String="%1 " dynamic="true"/>+ </context>++ <context attribute="Normal Text" name="filterPlain" fallthroughContext="#pop#pop">+ <!-- detect base indentation + 1 whitespace for code -->+ <StringDetect attribute="Normal Text" context="plainsourceline" String="%1 " dynamic="true"/>+ </context>++ <context attribute="Ruby Normal Text" name="array" fallthroughContext="RubySourceLineExpr">+ <DetectChar attribute="Operator" context="#pop" char="]" endRegion="Array"/>+ <!-- leads to a syntax error in Haml -->+ <DetectChar attribute="Error" char="#" context="#pop!LineError"/>+ <IncludeRules context="RubySourceLine"/>+ </context>++ <context attribute="Ruby Normal Text" name="hash" fallthroughContext="#pop!hash2">+ <DetectSpaces attribute="Ruby Normal Text"/>+ </context>+ <context attribute="Ruby Normal Text" name="hash2" lineEndContext="hash3" fallthroughContext="RubySourceLineExpr">+ <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash"/>+ <IncludeRules context="RubySourceLineSubstInner"/>+ </context>+ <context attribute="Ruby Normal Text" name="hash3" fallthroughContext="#pop#pop#pop#pop">+ <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="Hash"/>+ <RegExpr attribute="Ruby Normal Text" String="^\s+(?=}|$)" column="0"/>+ </context>++ <context attribute="Ruby Normal Text" name="parenthesis" lineEndContext="AttrError">+ <DetectSpaces attribute="Normal Text"/>+ <WordDetect attribute="Special Attribute" String="class"/>+ <WordDetect attribute="Special Attribute" String="id"/>+ <DetectIdentifier attribute="Normal Text"/>+ <DetectChar attribute="Ruby Operator" char="=" context="parenthesisValue"/>+ <DetectChar attribute="Operator" context="#pop" char=")" endRegion="Parenthesis"/>+ <DetectChar char='"' attribute="Error" context="DQuote"/>+ <DetectChar char="'" attribute="Error" context="SQuote"/>+ </context>+ <context attribute="Ruby Normal Text" name="parenthesisValue" lineEndContext="#pop!AttrError" fallthroughContext="#pop">+ <DetectChar char='"' attribute="String" context="#pop!DQuote"/>+ <DetectChar char="'" attribute="String" context="#pop!SQuote"/>+ <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="Parenthesis"/>+ <DetectSpaces attribute="Normal Text"/>+ <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="#pop"/>+ <DetectIdentifier attribute="Ruby Normal Text" context="#pop"/>+ <RegExpr attribute="Ruby Number" String="\b(0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+|0[bB][01](_?[01]++)*+|0[oO]?[0-7](_?[0-7]++)*+|((0[dD][0-9]|[1-9])(_?[0-9]++)*+|0)([eE]&dec;)?)" context="#pop"/>+ </context>++ <context name="AttrError" attribute="Error" fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Error" context="#pop#pop"/>+ </context>++ <context name="DQuote" attribute="String">+ <DetectChar char='"' attribute="String" context="#pop"/>+ <IncludeRules context="CommonString"/>+ </context>++ <context name="SQuote" attribute="String">+ <DetectChar char="'" attribute="String" context="#pop"/>+ <IncludeRules context="CommonString"/>+ </context>++ <context attribute="String" lineEndContext="#pop" name="CommonString">+ <DetectIdentifier/>+ <DetectSpaces/>+ <StringDetect attribute="Ruby Substitution" String="#{" context="RubySourceLineSubst"/>+ <RegExpr attribute="Escaped Text" String="\\.?"/>+ </context>+++ <context attribute="Comment" lineEndContext="#pop" name="comment">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ <StringDetect attribute="Error" String="--"/>+ </context>++ <context name="csssourceline" attribute="Other code embedded in haml" lineEndContext="#pop">+ <IncludeRules context="##CSS"/>+ </context>++ <context name="coffeesourceline" attribute="Other code embedded in haml" lineEndContext="#pop">+ <IncludeRules context="##CoffeeScript"/>+ </context>++ <context name="erbsourceline" attribute="Other code embedded in haml" lineEndContext="#pop">+ <IncludeRules context="##Ruby/Rails/RHTML"/>+ </context>++ <context name="plainsourceline" attribute="Other code embedded in haml" lineEndContext="#pop"/>++ <context name="Doctype" attribute="Doctype" lineEndContext="#pop"/>++ <context name="LineError" attribute="Error" lineEndContext="#pop"/>++ <context name="RubySourceMultiLine" attribute="Ruby Normal Text">+ <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>+ <DetectChar char="|" context="#pop!MultiLineText" attribute="Escaped Text"/>+ </context>++ <context name="RubySourceMultiLine2" attribute="Ruby Normal Text">+ <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>+ <DetectChar char="|" context="#pop!MultiLineText2" attribute="Escaped Text"/>+ </context>++ <context name="RubySourceMultiLine3" attribute="Ruby Normal Text">+ <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>+ <DetectChar char="|" context="#pop!MultiLineText3" attribute="Escaped Text"/>+ </context>++ <context name="IgnoreEmptyLine" attribute="Ruby Normal Text" fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>+ </context>++ <context name="RubySourceLineContinue" attribute="Ruby Normal Text">+ <RegExpr String="(,|(?<= )\|)[\t ]*$" context="RubySourceMultiLine" lookAhead="1"/>+ </context>++ <context name="RubySourceLineContinue2" attribute="Ruby Normal Text">+ <RegExpr String="(,|(?<= )\|)[\t ]*$" context="RubySourceMultiLine2" lookAhead="1"/>+ </context>++ <context name="RubySourceLineContinue3" attribute="Ruby Normal Text">+ <RegExpr String="(,|(?<= )\|)[\t ]*$" context="RubySourceMultiLine3" lookAhead="1"/>+ </context>+++ <!--+ Ruby syntax+ -->++ <context name="RubySourceLine" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineExpr">+ <DetectSpaces attribute="Ruby Normal Text"/>++ <AnyChar attribute="Ruby Normal Text" String=";("/>+ <DetectChar attribute="Ruby Normal Text" char=")" context="RubySourceLineOp1ThenExpr"/>++ <DetectChar attribute="Ruby Delimiter" char="]" context="RubySourceLineOp1ThenExpr"/>++ <DetectChar attribute="Ruby Operator" char="{" beginRegion="brace"/>+ <DetectChar attribute="Ruby Operator" char="}" context="RubySourceLineOp1ThenExpr" endRegion="brace"/>++ <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>++ <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineMsgParamOrOp2"/>++ <!-- Detects key symbol in a hash+ Unfortunately in the absence of a space before ':',+ the syntax is ambiguous with a function call containing a symbol.++ hash: {sym:foo}+ function: foo:sym <- 'foo:' is considered as a symbol+ -->+ <RegExpr attribute="Ruby Symbol" String="&symbol;" context="RubySourceLineMsgParamOrOp2"/>++ <DetectChar attribute="Ruby Delimiter" char="[" context="RubySourceLineMsgParamOrOp2"/>++ <keyword attribute="Ruby Keyword" String="ruby-keyword1"/>+ <keyword attribute="Ruby Keyword" String="ruby-keyword2" context="RubySourceLineMsgParamOrOp2"/>++ <keyword attribute="Ruby Attribute Definition" String="attribute-definitions" context="RubySourceLineOp2ThenExpr"/>+ <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineOp2ThenExpr"/>+ <keyword attribute="Ruby Definition" String="definitions" context="RubySourceLineExpr"/>+ <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineOp1ThenExpr"/>+ <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineOp2ThenExpr"/>+ <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineOp2ThenExpr"/>++ <WordDetect attribute="Ruby Keyword" String="class" context="RubySourceLineOp1ThenExpr"/>+ <WordDetect attribute="Ruby Keyword" String="def" context="RubySourceLineDefFn"/>+ <WordDetect attribute="Ruby Definition" String="alias" context="RubySourceLineAlias"/>+ <WordDetect attribute="Ruby Definition" String="undef" context="RubySourceLineAlias"/>++ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineMsgParamOrOp2"/>+ <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineMsgParamOrOp2"/>++ <DetectIdentifier attribute="Ruby Normal Text" context="RubySourceLineSuffixFunctionMsgParamOrOp2"/>++ <IncludeRules context="RubySourceLineContinue"/>+ <DetectChar attribute="Ruby Normal Text" char="," context="RubySourceLineMsgParamOrOp2"/>+ </context>++ <context name="RubySourceLineSuffixFunctionMsgParamOrOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineMsgParamOrOp2">+ <AnyChar attribute="Ruby Normal Text" String="!?" context="#pop!RubySourceLineMsgParamOrOp2"/>+ </context>++ <!-- after function call+ Assume that+ foo /a is a regex but not foo /=a+ foo %+ is a percent literal+ foo <<a is a heredoc+ (This is not true when foo is a variable...)+ -->+ <context name="RubySourceLineMsgParamOrOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop!RubySourceLineExpr"/>+ <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccessCall"/>+ <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccessCall"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>++ <context name="RubySourceLineMsgFnName" attribute="Ruby Normal Text" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!RubySourceLineFnParent">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccess"/>+ <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccess"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>++ <context name="RubySourceLineExpr" attribute="Ruby Normal Text" lineEndContext="#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>++ <StringDetect attribute="Ruby Operator" String=".." context="RubySourceLineDot2Op"/>+ <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccess"/>++ <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>++ <!-- pop to parent for interpolation -->+ <AnyChar String="{}]" context="#pop" lookAhead="1"/>++ <AnyChar attribute="Ruby Normal Text" String=";(" context="#pop"/>+ <LineContinue attribute="Ruby Normal Text" char="," context="IgnoreEmptyLine"/>+ <DetectChar attribute="Ruby Normal Text" char=")" context="RubySourceLineOp1"/>++ <DetectChar attribute="Ruby Comment" char="#" context="#pop!RubySourceLineGeneral Comment"/>++ <DetectChar char="@" context="RubySourceLineAtVar" lookAhead="1"/>+ <DetectChar char="$" context="RubySourceLineVar" lookAhead="1"/>++ <HlCChar attribute="Ruby Char" context="RubySourceLineOp1"/>+ <DetectChar attribute="Ruby String" char='"' context="RubySourceLineDQuote"/>+ <DetectChar attribute="Ruby Raw String" char="'" context="RubySourceLineSQuote"/>+ <DetectChar attribute="Ruby Command" char="`" context="RubySourceLineCommand String"/>++ <DetectChar attribute="Ruby Regular Expression" char="/" context="RubySourceLineRegEx"/>+ <!-- Check for "ASCII code operator". e.g.: ?a -->+ <DetectChar char="?" context="RubySourceLineMaybeCharLiteral" lookAhead="1"/>++ <AnyChar context="RubySourceLineNumber" String="0123456789" lookAhead="1"/>++ <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineOp2"/>++ <RegExpr attribute="Ruby Symbol" String="&symbol;" context="#pop!RubySourceLineMsgParamOrOp2"/>++ <DetectChar attribute="Ruby Delimiter" char="[" context="#pop!RubySourceLineMsgParamOrOp2"/>++ <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccess"/>++ <keyword attribute="Ruby Keyword" String="ruby-keyword1" context="#pop"/>+ <keyword attribute="Ruby Keyword" String="ruby-keyword2" context="#pop!RubySourceLineMsgParamOrOp2"/>++ <keyword attribute="Ruby Attribute Definition" String="attribute-definitions" context="RubySourceLineOp2"/>+ <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineOp2"/>+ <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineOp1"/>+ <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineOp2"/>+ <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineOp2"/>++ <WordDetect attribute="Ruby Keyword" String="class" context="RubySourceLineOp1"/>+ <WordDetect attribute="Ruby Keyword" String="def" context="#pop!RubySourceLineDefFn"/>+ <WordDetect attribute="Ruby Definition" String="alias" context="RubySourceLineAlias"/>+ <WordDetect attribute="Ruby Definition" String="undef" context="RubySourceLineAlias"/>++ <keyword attribute="Ruby Definition" String="definitions"/>++ <!-- Generally a module or class name like "File", "MyModule_1", .. -->+ <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineOp1"/>+ <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineOp1"/>++ <RegExpr attribute="Ruby Symbol" String=":((@@?|\$)&ident;|&ident;([?]|!(?!=)|=(?![=>~]))?|&sym_op;|(?=['"])|&global_var;)" context="RubySourceLineOp1"/>++ <!-- recognize the beginning of a general delimited input format -->+ <!-- this moves to the next context to separate out the exact nature of the GDL input -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLinefind_gdl_input" String="%(?=&percent_lit;)" beginRegion="GdlInput"/>++ <!-- recognize the beginning of a HEREDOC -->+ <RegExpr attribute="Ruby Operator" context="RubySourceLineHeredoc" String="<<(?=[-~]?(\w+|'\w+'|"\w+"|`\w+`))" beginRegion="HereDocument"/>++ <!-- should not happen in valid syntax -->+ <RegExpr attribute="Ruby Operator" String="([/%?:]|<<?)&safe_op;*|&safe_op;+"/>+ <DetectIdentifier attribute="Ruby Normal Text" context="RubySourceLineSuffixFunction"/>++ <IncludeRules context="RubySourceLineContinue2"/>+ </context>++ <!-- alias / ++ ~ never regex+ same for undef+ -->+ <context name="RubySourceLineAlias" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <AnyChar attribute="Ruby Operator" String="-+*~^|&=<>!%/"/>+ <DetectChar char="$" context="RubySourceLineVar" lookAhead="1"/>+ <DetectChar attribute="Ruby String" char='"' context="RubySourceLineAliasDQuote"/>+ <DetectChar attribute="Ruby Raw String" char="'" context="RubySourceLineAliasSQuote"/>+ <RegExpr attribute="Ruby Symbol" String=":(&ident;[=?!]?|&sym_op;)"/>+ <RegExpr attribute="Ruby Normal Text" String="\b(?!(&no_param;)([^?!\w]|$))&ident;"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ <LineContinue attribute="Ruby Normal Text" char=","/>+ </context>+ <context name="RubySourceLineAliasDQuote" attribute="Ruby String">+ <DetectChar char='"' attribute="Ruby String" context="RubySourceLineAliasCheckSym"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>+ <context name="RubySourceLineAliasSQuote" attribute="Ruby Raw String">+ <Detect2Chars attribute="Ruby String" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String" char="\" char1="'"/>+ <DetectChar char="'" attribute="Ruby Raw String" context="RubySourceLineAliasCheckSym"/>+ </context>+ <context name="RubySourceLineAliasCheckSym" attribute="Ruby Raw String" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">+ <DetectChar char=":" attribute="Ruby Symbol" context="#pop#pop"/>+ </context>++ <context name="RubySourceLineDot2Op" attribute="Ruby Operator" lineEndContext="#pop#pop" fallthroughContext="#pop">+ <!-- triple dot -->+ <DetectChar attribute="Ruby Operator" char="." context="#pop"/>+ </context>++ <context name="RubySourceLineSuffixFunction" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineOp2">+ <AnyChar attribute="Ruby Normal Text" String="!?" context="#pop!RubySourceLineOp2"/>+ </context>++ <!-- A slash is always a division operator, even if preceeded by whitespace -->+ <context name="RubySourceLineOp1" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Operator" char="=" context="#pop#pop"/>+ <RegExpr attribute="Ruby Operator" String="&op1;" context="#pop"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue3"/>+ </context>++ <context name="RubySourceLineOp1ThenExpr" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>+ <RegExpr attribute="Ruby Operator" String="&op1;" context="#pop!RubySourceLineExpr"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>++ <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->+ <context name="RubySourceLineOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Operator" char="=" context="#pop#pop"/>+ <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue3"/>+ </context>++ <context name="RubySourceLineOp2ThenExpr" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>+ <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop!RubySourceLineExpr"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>++ <context name="RubySourceLineVar" attribute="Ruby Normal Text" lineEndContext="#pop#pop">+ <!-- (global) vars starting with $ -->+ <RegExpr attribute="Ruby Global Variable" String="\$(?!(stdin|stdout|stderr|_|LOAD_PATH|LOADED_FEATURES|FILENAME|DEBUG|VERBOSE)\b)[0-9]+|[[:alpha:]]\w*|\$-(?![ailpFIvWwdx])\w" context="#pop!RubySourceLineOp1"/>+ <!-- special-character globals and other predefined variables -->+ <RegExpr attribute="Ruby Default globals" String="&global_var;" context="#pop!RubySourceLineOp1"/>+ <DetectChar attribute="Error" char="$" context="#pop!RubySourceLineOp1"/>+ </context>++ <context name="RubySourceLineAtVar" attribute="Ruby Normal Text" lineEndContext="#pop#pop">+ <RegExpr attribute="Ruby Instance Variable" String="@&ident;" context="#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Ruby Class Variable" String="@@&ident;" context="#pop!RubySourceLineOp1"/>+ <DetectChar attribute="Error" char="@"/>+ </context>++ <!-- def foo() block-statement+ ~~~ any ident (including keyword)++ def Abc::foo() block-statement+ ~~~ ~~~ ident (no keyword)+ -->+ <context name="RubySourceLineDefFn" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineFnName">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>+ <context name="RubySourceLineFnName" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineFnParent">+ <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineMsgFnName"/>++ <keyword attribute="Ruby Attribute Definition" String="attribute-definitions" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Definition" String="definitions" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineFnParent" weakDeliminator=":"/>+ <keyword attribute="Ruby Keyword" String="keyword" context="RubySourceLineFnParent" weakDeliminator=":"/>++ <RegExpr attribute="Ruby Operator" String="[-+~]@?|![~@]?|[/%^]|\*\*?|\|\||&&|<(=>?)?|>=?|===?|\*\*?" context="RubySourceLineFnParent"/>+ <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineMsgFnName"/>+ <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineMsgFnName"/>++ <StringDetect attribute="Ruby Symbol" String="[]=" context="RubySourceLineFnParent"/>+ <StringDetect attribute="Ruby Symbol" String="[]" context="RubySourceLineFnParent"/>+ <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>+ </context>+ <context name="RubySourceLineFnParent" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop#pop">+ <DetectChar attribute="Ruby Normal Text" char="(" context="RubySourceLineDefFnParams"/>+ <DetectSpaces attribute="Ruby Normal Text"/>+ <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>+ <DetectChar char="," context="#pop" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>+ <context name="RubySourceLineDefFnParams" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop#pop#pop">+ <DetectChar attribute="Ruby Normal Text" char=")" context="#pop#pop#pop#pop"/>+ <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>+ <RegExpr attribute="Ruby Normal Text" String="([\s,]+|\b(?!(&no_param;)\b|[[:upper:]])&ident;(?=$|[^?!]))++"/>+ <RegExpr attribute="Ruby Constant" String="&constant;"/>+ <RegExpr attribute="Ruby Global Constant" String="&global_constant;"/>+ <keyword attribute="Ruby Attribute Definition" String="attribute-definitions"/>+ <keyword attribute="Ruby Access Control" String="access-control"/>+ <keyword attribute="Ruby Kernel methods" String="kernel-methods"/>+ <keyword attribute="Ruby Module mixin methods" String="mixin-methods"/>+ <IncludeRules context="RubySourceLineContinue2"/>+ </context>+++ <!-- Numeric values. Note that we have to allow underscores between two digits. -->+ <context name="RubySourceLineNumber" attribute="Ruby Normal Text" lineEndContext="#pop#pop" fallthroughContext="RubySourceLineNumberError">+ <RegExpr attribute="Ruby Number" String="\b([1-9](_?[0-9]++)*+|0)(\.&dec;([eE][-+]?&dec;)?|[eE][-+]?&dec;)|\b(0[dD]&dec;|(0(\b|(?=[ri]))|[1-9](_?[0-9]++)*+))|\b0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+|\b0[bB][01](_?[01]++)*+|\b0[oO]?[0-7](_?[0-7]++)*+" context="RubySourceLineNumberSuffix"/>+ <DetectChar char="0" attribute="Ruby Number" context="RubySourceLineNumberError"/>+ </context>++ <context name="RubySourceLineNumberSuffix" attribute="Ruby Number Suffix" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!RubySourceLineNumberError">+ <StringDetect attribute="Ruby Number Suffix" String="ri" context="#pop!RubySourceLineNumberError"/>+ <AnyChar attribute="Ruby Number Suffix" String="ri" context="#pop!RubySourceLineNumberError"/>+ </context>++ <context name="RubySourceLineNumberError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop!RubySourceLineOp1">+ <DetectIdentifier/>+ <AnyChar String="0123456789"/>+ </context>++ <context name="RubySourceLineBrace" attribute="Ruby Normal Text" fallthroughContext="#pop!RubySourceLineBraceInner">+ <DetectSpaces attribute="Ruby Normal Text"/>+ </context>+ <context name="RubySourceLineBraceInner" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineExpr">+ <DetectChar attribute="Ruby Operator" char="}" context="#pop!RubySourceLineOp1ThenExpr" endRegion="brace"/>+ <DetectChar attribute="Ruby Operator" char="{" context="RubySourceLineBrace" beginRegion="brace"/>+ <IncludeRules context="RubySourceLine"/>+ </context>++ <!-- "..." -->+ <context name="RubySourceLineDQuote" attribute="Ruby String">+ <DetectChar char='"' attribute="Ruby String" context="RubySourceLineCheckSym"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <!-- "...": -->+ <context name="RubySourceLineCheckSym" attribute="Ruby Raw String" lineEndContext="#pop#pop!RubySourceLineOp1" fallthroughContext="#pop#pop!RubySourceLineOp1">+ <DetectChar char=":" attribute="Ruby Symbol" context="#pop#pop#pop"/>+ </context>++ <!-- \ in "..." -->+ <context name="RubySourceLineDQuoteSpecial" attribute="Ruby String">+ <DetectChar char="\" context="RubySourceLineDQuoteEscape" lookAhead="1"/>+ <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue3"/>+ </context>+ <context name="RubySourceLineDQuoteEscape" attribute="Ruby String">+ <RegExpr attribute="Ruby String Char" String="&escape;" context="#pop"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop"/>+ </context>+ <context name="RubySourceLineDQuoteSubstitution" attribute="Ruby String">+ <StringDetect attribute="Ruby Substitution" String="#{" context="#pop!RubySourceLineSubst"/>+ <RegExpr attribute="Ruby Substitution" String="#@@?\w+|#&global_var;" context="#pop"/>+ <DetectChar char="#" context="#pop"/>+ </context>++ <!-- '...' -->+ <context name="RubySourceLineSQuote" attribute="Ruby Raw String">+ <Detect2Chars attribute="Ruby String" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String" char="\" char1="'"/>+ <DetectChar char="'" attribute="Ruby Raw String" context="RubySourceLineCheckSym"/>+ <IncludeRules context="RubySourceLineContinue3"/>+ </context>++ <!-- `...` -->+ <context name="RubySourceLineCommand String" attribute="Ruby Command">+ <DetectChar char="`" attribute="Ruby Command" context="#pop!RubySourceLineOp1"/>+ <Detect2Chars attribute="Ruby String" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String" char="\" char1="`"/>+ <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>+ <IncludeRules context="RubySourceLineContinue3"/>+ </context>++ <!-- ?x -->+ <context name="RubySourceLineMaybeCharLiteral" attribute="Ruby String" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineOp1">+ <RegExpr attribute="Ruby Operator" String="\?(?=\s|$)" context="#pop"/>+ <DetectChar attribute="Ruby Char Literal" char="?" context="RubySourceLineCharLiteral"/>+ </context>+ <context name="RubySourceLineCharLiteral" attribute="Ruby String">+ <RegExpr attribute="Ruby Char" String="[^\\\s]" context="#pop#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Ruby String Char" String="&escape;" context="#pop#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop#pop!RubySourceLineOp1"/>+ </context>++ <context name="RubySourceLineRegEx" attribute="Ruby Regular Expression">+ <DetectChar attribute="Ruby Regular Expression" context="RubySourceLineRegExMode" char="/"/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>+ <!-- as DQuoteSpecial, but with \. and \p{...} -->+ <context name="RubySourceLineRegExSpecial" attribute="Ruby String Char">+ <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>+ <DetectChar char="\" context="RubySourceLineRegExEscape" lookAhead="1"/>+ </context>+ <context name="RubySourceLineRegExEscape" attribute="Ruby String">+ <RegExpr attribute="Ruby String Char" String="\\([^0-7xucCMp]|&special_escape;|p\{[-[:alpha:]]*\}|$)" context="#pop"/>+ <RegExpr attribute="Error" String="\\(&partial_escape;|p\{?|)" context="#pop"/>+ </context>++ <context name="RubySourceLineRegExMode" attribute="Ruby String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!RubySourceLineOp1">+ <AnyChar attribute="Ruby Regular Expression" String="imxonues"/>+ </context>++ <!-- Substitutions can be nested -->+ <context name="RubySourceLineSubst" attribute="Ruby Normal Text" fallthroughContext="RubySourceLineExpr">+ <DetectChar attribute="Ruby Substitution" char="}" context="#pop"/>+ <IncludeRules context="RubySourceLineSubstInner"/>+ </context>+ <context attribute="Ruby Normal Text" name="RubySourceLineSubstInner">+ <DetectChar attribute="Ruby Operator" char="{" context="RubySourceLineBrace" beginRegion="brace"/>+ <!-- leads to a syntax error in Haml -->+ <DetectChar attribute="Error" char="#" context="#pop!LineError"/>+ <IncludeRules context="RubySourceLine"/>+ </context>++ <!-- This handles access of nested module classes and class methods -->+ <context name="RubySourceLineMemberAccess" attribute="Ruby Member" fallthroughContext="#pop!RubySourceLineOp1">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Ruby Message" String="&msg;" context="#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Ruby Constant" String="&constant;" context="#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Ruby Constant Value" String="&global_constant;" context="#pop!RubySourceLineOp1"/>+ <RegExpr attribute="Ruby Operator" String="&sym_op;" context="#pop"/>+ </context>++ <context name="RubySourceLineMemberAccessCall" attribute="Ruby Member" fallthroughContext="#pop">+ <DetectSpaces attribute="Ruby Normal Text"/>+ <!-- marks a message (being sent, not defined) -->+ <RegExpr attribute="Ruby Message" String="&msg;" context="#pop"/>+ <RegExpr attribute="Ruby Constant" String="&constant;" context="#pop"/>+ <RegExpr attribute="Ruby Constant Value" String="&global_constant;" context="#pop"/>+ <RegExpr attribute="Ruby Operator" String="&sym_op;" context="#pop"/>+ </context>++ <context name="RubySourceLineGeneral Comment" attribute="Ruby Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>++ <!-- HEREDOC support+ The contexts below support both normal and indented heredocs+ -->+ <!-- here we markup the heredoc markers -->+ <context name="RubySourceLineHeredoc" attribute="Ruby Normal Text">+ <AnyChar attribute="Ruby Operator" String="-~" context="#pop!RubySourceLineIndentedHeredoc"/>+ <RegExpr attribute="Ruby Keyword" context="RubySourceLineapostrophed_normal_heredoc" String="'(\w+)'"/>+ <RegExpr attribute="Ruby Keyword" context="RubySourceLinenormal_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)"/>+ </context>+ <context name="RubySourceLineIndentedHeredoc" attribute="Ruby Normal Text">+ <RegExpr attribute="Ruby Keyword" context="RubySourceLineapostrophed_indented_heredoc" String="'(\w+)'"/>+ <RegExpr attribute="Ruby Keyword" context="RubySourceLineindented_heredoc" String="(?|(\w+)|"(\w+)"|`(\w+)`)"/>+ </context>+ <!-- these are the real heredoc contexts -->+ <context name="RubySourceLineindented_heredoc" attribute="Ruby Here Document">+ <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>+ <context name="RubySourceLineapostrophed_indented_heredoc" attribute="Ruby Here Document">+ <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>+ </context>++ <context name="RubySourceLinenormal_heredoc" attribute="Ruby Here Document">+ <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>+ <context name="RubySourceLineapostrophed_normal_heredoc" attribute="Ruby Here Document">+ <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>+ </context>++ <!-- General delimited input support+ The contexts below handle the various gdl formats+ -->+ <context name="RubySourceLinefind_gdl_input" attribute="Ruby Normal Text" lineEndContext="#pop">+ <!-- handle double-quoted strings -->+ <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q(" char="("/>+ <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q{" char="{"/>+ <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q[" char="["/>+ <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q<" char="<"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="Q("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="Q{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="Q["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q<" String="Q<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="W("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="W{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="W["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q<" String="W<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="I("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="I{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="I["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q<" String="I<"/>++ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%Q_" String="[QWI]?([^[:alnum:]])"/>++ <!-- handle token arrays -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w(" String="w("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w{" String="w{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w[" String="w["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w<" String="w<"/>++ <!-- handle token arrays -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w(" String="i("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w{" String="i{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w[" String="i["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w<" String="i<"/>++ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%w_" String="[wi]([^[:alnum:]])"/>++ <!-- handle apostrophed strings -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q(" String="q("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q{" String="q{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q[" String="q["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q<" String="q<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%q_" String="q([^[:alnum:]])"/>++ <!-- handle token arrays -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s(" String="s("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s{" String="s{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s[" String="s["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s<" String="s<"/>+ <!-- then ie handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%s_" String="s([^[:alnum:]])"/>++ <!-- handle regular expressions -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r(" String="r("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r{" String="r{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r[" String="r["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r<" String="r<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%r_" String="r([^[:alnum:]])"/>++ <!-- handle shell commands -->+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x(" String="x("/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x{" String="x{"/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x[" String="x["/>+ <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x<" String="x<"/>+ <!-- then we handle the 'any char' format -->+ <RegExpr attribute="Ruby GDL input" context="RubySourceLine%x_" String="x([^[:alnum:]])"/>+ </context>+++ <!-- double-quoted string specific contexts follow -->++ <context name="RubySourceLine%Q(" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%Q(_rule"/>+ </context>+ <context name="RubySourceLine%Q(_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%Q(_rule"/>+ </context>+ <context name="RubySourceLine%Q(_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%Q(_nested" char="("/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <!-- note that here substitution should win over nesting -->+ <context name="RubySourceLine%Q{" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%Q{_rule"/>+ </context>+ <context name="RubySourceLine%Q{_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%Q{_rule"/>+ </context>+ <context name="RubySourceLine%Q{_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%Q{_nested" char="{"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <context name="RubySourceLine%Q[" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%Q[_rule"/>+ </context>+ <context name="RubySourceLine%Q[_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%Q[_rule"/>+ </context>+ <context name="RubySourceLine%Q[_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%Q[_nested" char="["/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <context name="RubySourceLine%Q<" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%Q<_rule"/>+ </context>+ <context name="RubySourceLine%Q<_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%Q<_rule"/>+ </context>+ <context name="RubySourceLine%Q<_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%Q<_nested" char="<"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%Q_" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>+++ <!-- token array specific contexts -->++ <context name="RubySourceLine%w(" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%w(_rule"/>+ </context>+ <context name="RubySourceLine%w(_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%w(_rule"/>+ </context>+ <context name="RubySourceLine%w(_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w(_nested" char="("/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>+ </context>++ <context name="RubySourceLine%w{" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%w{_rule"/>+ </context>+ <context name="RubySourceLine%w{_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%w{_rule"/>+ </context>+ <context name="RubySourceLine%w{_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w{_nested" char="{"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>+ </context>++ <context name="RubySourceLine%w[" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%w[_rule"/>+ </context>+ <context name="RubySourceLine%w[_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%w[_rule"/>+ </context>+ <context name="RubySourceLine%w[_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w[_nested" char="["/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>+ </context>++ <context name="RubySourceLine%w<" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%w<_rule"/>+ </context>+ <context name="RubySourceLine%w<_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%w<_rule"/>+ </context>+ <context name="RubySourceLine%w<_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w<_nested" char="<"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%w_" attribute="Ruby Raw String">+ <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>+ <IncludeRules context="RubySourceLine%q_"/>+ </context>+++ <!-- apostrophed string specific contexts -->++ <context name="RubySourceLine%q(" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%q(_rule"/>+ </context>+ <context name="RubySourceLine%q(_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%q(_rule"/>+ </context>+ <context name="RubySourceLine%q(_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q(_nested" char="("/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>+ </context>++ <context name="RubySourceLine%q{" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%q{_rule"/>+ </context>+ <context name="RubySourceLine%q{_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%q{_rule"/>+ </context>+ <context name="RubySourceLine%q{_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q{_nested" char="{"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>+ </context>++ <context name="RubySourceLine%q[" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%q[_rule"/>+ </context>+ <context name="RubySourceLine%q[_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%q[_rule"/>+ </context>+ <context name="RubySourceLine%q[_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q[_nested" char="["/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>+ </context>++ <context name="RubySourceLine%q<" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%q<_rule"/>+ </context>+ <context name="RubySourceLine%q<_nested" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%q<_rule"/>+ </context>+ <context name="RubySourceLine%q<_rule" attribute="Ruby Raw String">+ <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q<_nested" char="<"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%q_" attribute="Ruby Raw String">+ <Detect2Chars attribute="Ruby Raw String" char="\" char1="\"/>+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>+ <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>+ </context>+++ <!-- symbol string specific contexts -->++ <context name="RubySourceLine%s(" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%s(_rule"/>+ </context>+ <context name="RubySourceLine%s(_nested" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%s(_rule"/>+ </context>+ <context name="RubySourceLine%s(_rule" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s(_nested" char="("/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>+ </context>++ <context name="RubySourceLine%s{" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%s{_rule"/>+ </context>+ <context name="RubySourceLine%s{_nested" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%s{_rule"/>+ </context>+ <context name="RubySourceLine%s{_rule" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s{_nested" char="{"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>+ </context>++ <context name="RubySourceLine%s[" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%s[_rule"/>+ </context>+ <context name="RubySourceLine%s[_nested" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%s[_rule"/>+ </context>+ <context name="RubySourceLine%s[_rule" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s[_nested" char="["/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>+ </context>++ <context name="RubySourceLine%s<" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%s<_rule"/>+ </context>+ <context name="RubySourceLine%s<_nested" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%s<_rule"/>+ </context>+ <context name="RubySourceLine%s<_rule" attribute="Ruby Symbol">+ <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s<_nested" char="<"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>+ <Detect2Chars attribute="Ruby String Char" char="\" char1="<"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%s_" attribute="Ruby Symbol">+ <Detect2Chars attribute="Ruby Symbol" char="\" char1="\"/>+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>+ <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>+ </context>+++ <!-- regular expression specific contexts -->++ <context name="RubySourceLine%r(" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char=")" endRegion="GdlInput"/> <IncludeRules context="RubySourceLine%r(_rule"/>+ </context>+ <context name="RubySourceLine%r(_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%r(_rule"/>+ </context>+ <context name="RubySourceLine%r(_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%r(_nested" char="("/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>++ <context name="RubySourceLine%r{" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%r{_rule"/>+ </context>+ <context name="RubySourceLine%r{_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%r{_rule"/>+ </context>+ <context name="RubySourceLine%r{_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%r{_nested" char="{"/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>++ <context name="RubySourceLine%r[" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%r[_rule"/>+ </context>+ <context name="RubySourceLine%r[_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%r[_rule"/>+ </context>+ <context name="RubySourceLine%r[_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%r[_nested" char="["/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>++ <context name="RubySourceLine%r<" attribute="Ruby String">+ <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%r<_rule"/>+ </context>+ <context name="RubySourceLine%r<_nested" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%r<_rule"/>+ </context>+ <context name="RubySourceLine%r<_rule" attribute="Ruby String">+ <DetectChar attribute="Ruby String" context="RubySourceLine%r<_nested" char="<"/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%r_" attribute="Ruby Regular Expression">+ <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="1" dynamic="true" endRegion="GdlInput"/>+ <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>+ <IncludeRules context="RubySourceLineRegExSpecial"/>+ </context>+++ <!-- shell command specific contexts -->++ <context name="RubySourceLine%x(" attribute="Ruby Command">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%x(_rule"/>+ </context>+ <context name="RubySourceLine%x(_nested" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="#pop" char=")"/>+ <IncludeRules context="RubySourceLine%x(_rule"/>+ </context>+ <context name="RubySourceLine%x(_rule" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="RubySourceLine%x(_nested" char="("/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <context name="RubySourceLine%x{" attribute="Ruby Command">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%x{_rule"/>+ </context>+ <context name="RubySourceLine%x{_nested" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="#pop" char="}"/>+ <IncludeRules context="RubySourceLine%x{_rule"/>+ </context>+ <context name="RubySourceLine%x{_rule" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="RubySourceLine%x{_nested" char="{"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <context name="RubySourceLine%x[" attribute="Ruby Command">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%x[_rule"/>+ </context>+ <context name="RubySourceLine%x[_nested" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="#pop" char="]"/>+ <IncludeRules context="RubySourceLine%x[_rule"/>+ </context>+ <context name="RubySourceLine%x[_rule" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="RubySourceLine%x[_nested" char="["/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <context name="RubySourceLine%x<" attribute="Ruby Command">+ <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>+ <IncludeRules context="RubySourceLine%x<_rule"/>+ </context>+ <context name="RubySourceLine%x<_nested" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="#pop" char=">"/>+ <IncludeRules context="RubySourceLine%x<_rule"/>+ </context>+ <context name="RubySourceLine%x<_rule" attribute="Ruby Command">+ <DetectChar attribute="Ruby Command" context="RubySourceLine%x<_nested" char="<"/>+ <IncludeRules context="RubySourceLineDQuoteSpecial"/>+ </context>++ <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the+ delimiter character+ -->+ <context name="RubySourceLine%x_" attribute="Ruby Command">+ <IncludeRules context="RubySourceLine%Q_"/>+ </context>++ </contexts>+++ <itemDatas>+ <!-- HAML itemData -->++ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Other code embedded in haml" defStyleNum="dsNormal"/>+ <itemData name="Keyword" defStyleNum="dsKeyword"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Escaped Text" defStyleNum="dsSpecialChar"/>+ <itemData name="Operator" defStyleNum="dsPreprocessor"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Doctype" defStyleNum="dsDataType" bold="1"/>+ <itemData name="Filter" defStyleNum="dsOthers"/>+ <itemData name="Element Id" defStyleNum="dsFloat" bold="1"/>+ <itemData name="Element Class" defStyleNum="dsFloat"/>+ <itemData name="Special Attribute" defStyleNum="dsAttribute"/>+ <itemData name="Div Id" defStyleNum="dsDecVal" bold="1"/>+ <itemData name="Div Class" defStyleNum="dsDecVal"/>+ <itemData name="Tag" defStyleNum="dsKeyword"/>+ <itemData name="Entity" defStyleNum="dsDecVal"/>+ <!-- use these to mark errors and alerts things -->+ <itemData name="Error" defStyleNum="dsError"/>++ <!-- Ruby itemData -->++ <itemData name="Ruby Normal Text" defStyleNum="dsNormal"/>++ <itemData name="Ruby Keyword" defStyleNum="dsControlFlow"/>+ <itemData name="Ruby Attribute Definition" defStyleNum="dsOthers"/>+ <itemData name="Ruby Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->+ <itemData name="Ruby Definition" defStyleNum="dsKeyword"/>+ <itemData name="Ruby Pseudo variable" defStyleNum="dsDecVal"/>++ <itemData name="Ruby Number" defStyleNum="dsDecVal"/>+ <itemData name="Ruby Number Suffix" defStyleNum="dsBuiltIn"/>++ <itemData name="Ruby Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->+ <itemData name="Ruby String" defStyleNum="dsString"/>+ <itemData name="Ruby String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Ruby Raw String" defStyleNum="dsVerbatimString"/> <!-- #DD4A4A -->+ <itemData name="Ruby Char Literal" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Ruby Char" defStyleNum="dsChar"/>++ <itemData name="Ruby Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->+ <itemData name="Ruby Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->+ <itemData name="Ruby Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->+ <itemData name="Ruby Substitution" defStyleNum="dsSpecialChar"/>+ <!-- short for 'general delimited input' -->+ <itemData name="Ruby GDL input" defStyleNum="dsOthers"/>++ <itemData name="Ruby Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->+ <itemData name="Ruby Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->+ <itemData name="Ruby Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->+ <itemData name="Ruby Constant" defStyleNum="dsDataType"/>+ <itemData name="Ruby Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->+ <itemData name="Ruby Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Ruby Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->+ <itemData name="Ruby Member" defStyleNum="dsAttribute"/>+ <itemData name="Ruby Instance Variable" defStyleNum="dsOthers"/>+ <itemData name="Ruby Class Variable" defStyleNum="dsOthers"/>++ <itemData name="Ruby Comment" defStyleNum="dsComment"/>++ <itemData name="Ruby Here Document" defStyleNum="dsDocumentation"/>++ <itemData name="Ruby Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->+ <itemData name="Ruby Operator" defStyleNum="dsOperator" bold="1"/> <!-- #FF9FEC -->++ </itemDatas>+ </highlighting>+ <general>+ <folding indentationsensitive="1"/>+ <emptyLines>+ <emptyLine regexpr="\s+"/>+ </emptyLines>+ <comments>+ <comment name="singleLine" start="/" position="afterwhitespace"/>+ </comments>+ <keywords casesensitive="1" weakDeliminator="!?"/>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/haskell.xml view
@@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language [- <!ENTITY symbolops "\-!#\$%&\*\+/<=>\?\@\^\|~\.:">+ <!ENTITY symbolops "\-!#\$%&\*\+/<=>\?\\@\^\|~\.:"> ]>-<language name="Haskell" alternativeNames="HS" version="21" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">+<language name="Haskell" alternativeNames="HS" version="22" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell"> <highlighting> <list name="keywords"> <item>case</item>@@ -473,7 +473,8 @@ <RegExpr attribute="Special" context="#stay" String="(::|=>|->|<-|=)(?![&symbolops;])" /> <RegExpr attribute="Signature" context="#stay" String="\s*[a-z_][a-zA-Z0-9_']*\s*(?=::([^&symbolops;]|$))|\s*(\([&symbolops;]*\))*\s*(?=::[^&symbolops;])" /> <RegExpr attribute="Function" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[a-z_][a-zA-Z0-9_']*" />- <RegExpr attribute="Operator" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" />+ <!-- Match backslash operators before general operators (order matters for precedence) -->+ <RegExpr attribute="Operator" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*\\[!#\$%&\*\+/<=>\?\\@\^\|~\.:]+|([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" /> <RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*|'(?![A-Z]')([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" /> <RegExpr attribute="Float" context="#stay" String ="\d+\.\d+([Ee][+-]?\d+)?|\d+[Ee][+-]?\d+"/>@@ -541,11 +542,12 @@ </context> <context attribute="Normal" lineEndContext="#pop" name="import"> <DetectSpaces attribute="Normal" />+ <IncludeRules context="FindComment" /> <keyword attribute="Keyword" context="#stay" String="import_keywords" /> <RegExpr attribute="Function" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[a-z][a-zA-Z0-9_']*" /> <RegExpr attribute="Type" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />-- <IncludeRules context="FindComment" />+ <!-- Add operator matching to import context (backslash operators matched first) -->+ <RegExpr attribute="Operator" context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*\\[!#\$%&\*\+/<=>\?\\@\^\|~\.:]+|([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" /> </context> <!-- Haddock -->
+ xml/idl.xml view
@@ -0,0 +1,120 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name="IDL" version="7" kateversion="5.0" section="Sources" extensions="*.idl" mimetype="text/x-idl-src">+ <highlighting>+ <list name="keywords">+ <item>any</item>+ <item>attribute</item>+ <item>case</item>+ <item>const</item>+ <item>context</item>+ <item>default</item>+ <item>enum</item>+ <item>exception</item>+ <item>FALSE</item>+ <item>fixed</item>+ <item>public</item>+ <item>in</item>+ <item>inout</item>+ <item>interface</item>+ <item>module</item>+ <item>Object</item>+ <item>oneway</item>+ <item>out</item>+ <item>raises</item>+ <item>readonly</item>+ <item>sequence</item>+ <item>struct</item>+ <item>switch</item>+ <item>TRUE</item>+ <item>typedef</item>+ <item>unsigned</item>+ <item>union</item>+ </list>+ <list name="types">+ <item>boolean</item>+ <item>char</item>+ <item>double</item>+ <item>float</item>+ <item>long</item>+ <item>octet</item>+ <item>short</item>+ <item>string</item>+ <item>void</item>+ <item>wchar</item>+ <item>wstring</item>+ </list>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal">+ <keyword attribute="Keyword" context="#stay" String="keywords" />+ <keyword attribute="Data Type" context="#stay" String="types" />+ <HlCOct attribute="Octal" context="#stay"/>+ <HlCHex attribute="Hex" context="#stay"/>+ <HlCChar attribute="Char" context="#stay"/>+ <DetectChar attribute="String" context="String" char="""/>+ <IncludeRules context="FindComments" />+ <AnyChar attribute="Symbol" context="#stay" String="!%&()+,-<=>?[]^{|}~"/>+ <StringDetect attribute="Comment" context="Some Context3" String="#if 0" insensitive="false"/>+ <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" column="0"/>+ </context>+ <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">+ <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>+ <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />+ </context>+ <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">+ <IncludeRules context="##Doxygen" />+ <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />+ <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />+ </context>+ <context attribute="String" lineEndContext="#stay" name="String">+ <LineContinue attribute="String" context="Some Context"/>+ <HlCStringChar attribute="String Char" context="#stay"/>+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+ <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>+ <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">+ <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>+ <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">+ <LineContinue attribute="Preprocessor" context="Some Context2"/>+ <RangeDetect attribute="Prep. Lib" context="#stay" char=""" char1="""/>+ <RangeDetect attribute="Prep. Lib" context="#stay" char="<" char1=">"/>+ <IncludeRules context="FindComments" />+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="Some Context"/>+ <context attribute="Normal Text" lineEndContext="#pop" name="Some Context2"/>+ <context attribute="Normal Text" lineEndContext="#stay" name="Some Context3">+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ <StringDetect attribute="Comment" context="#pop" String="#endif" column="0"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Keyword" defStyleNum="dsKeyword"/>+ <itemData name="Data Type" defStyleNum="dsDataType"/>+ <itemData name="Octal" defStyleNum="dsBaseN"/>+ <itemData name="Hex" defStyleNum="dsBaseN"/>+ <itemData name="Char" defStyleNum="dsChar"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="String Char" defStyleNum="dsChar"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Symbol" defStyleNum="dsOperator"/>+ <itemData name="Preprocessor" defStyleNum="dsOthers"/>+ <itemData name="Prep. Lib" defStyleNum="dsOthers"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="//" />+ <comment name="multiLine" start="/*" end="*/" region="Comment" />+ </comments>+ <keywords casesensitive="1" />+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/j.xml view
@@ -1,121 +1,129 @@ <?xml version="1.0" encoding="UTF-8"?>-<!----Changes:--Version 1.5 (2015-04-29) by Igor Zhuravlov-- language/@kateversion upgraded from "2.4" to "3.4"--Version 1.4 (2015-04-20) by Igor Zhuravlov-- merge versions 1.2 and 1.3-- removed not used def and defc entities-- approached color scheme to JQt-- separated out color scheme to j14.katehlcolor file-- dropped ExpArg: n. m. u. v. x. y.-- reformatted a bit--Version 1.3 (2014-05-26) by greg heil-- based on version 1.1-- add Foldable feature-- change color scheme-- add def and defc entities-- split long lines--Version 1.2 (2013-09-29) by Igor Zhuravlov-- fix Adverb regexp's pattern-- fix Verb regexp's pattern--Version 1.1 (2013-03-18) by Igor Zhuravlov-- fix enum entity's exponent definition-- rework String regexp's pattern-- use entities in Number regexp's pattern-- use entities in Control regexp's pattern--Version 1.0 (2012-03-21) by Igor Zhuravlov-- initial release----> <!DOCTYPE language [- <!ENTITY unum "\d+"> <!-- Unsigned integer number -->- <!ENTITY anum "[a-z\d]+"> <!-- Non-10-based unsigned integer number, e.g. 1a -->- <!ENTITY bnum "\b&unum;b_?&anum;(\.&anum;)\b"> <!-- Based integer number, e.g. 36b_1a.z2 -->- <!ENTITY inum "_?&unum;"> <!-- Integer number -->+ <!ENTITY unum "\d+"> <!-- Unsigned integer number, e.g. 123 -->+ <!ENTITY inum "_?&unum;"> <!-- Integer number, e.g. _123 -->+ <!ENTITY anum "[a-z\d]+"> <!-- Non-decimal unsigned integer number, e.g. 1a -->+ <!ENTITY bnum "\b_?&unum;b_?&anum;(\.&anum;)?\b"> <!-- Non-decimal number, e.g. _36b_1a.z2 --> <!ENTITY xnum "\b&inum;x\b"> <!-- Extended precision integer number, e.g. _123x --> <!ENTITY rnum "\b&inum;r&inum;\b"> <!-- Rational number, e.g. _1r23 -->- <!ENTITY fnum "&inum;(\.&unum;)?"> <!-- Floating point number, e.g. 1.23 -->- <!ENTITY enum "(&fnum;(e&inum;)?|_?_|_\.)"> <!-- Exponential (scientific) notation, e.g. 1.2e_3 -->- <!ENTITY cnum "&enum;((j|a[dr])&enum;)?"> <!-- Complex number, e.g. 1.2e3j4.5e_6 -->- <!ENTITY pnum "\b&cnum;([px]&cnum;)?(?![a-z\d_.])"> <!-- Number based on pi or e, e.g. 1j2p3j4 -->- <!ENTITY name "[a-zA-Z][a-zA-Z\d_]*"> <!-- Name -->+ <!ENTITY fnum "&inum;(\.&unum;)?"> <!-- Floating point number, e.g. _1.23 -->+ <!ENTITY enum "(&fnum;(e&inum;)?|_?_|_\.)"> <!-- Exponential (scientific) notation, e.g. _1.2e_3 -->+ <!ENTITY cnum "&enum;((j|a[dr])&enum;)?"> <!-- Complex number, e.g. _1.2e3j_4.5e_6 -->+ <!ENTITY pnum "\b&cnum;([px]&cnum;)?(?![a-z\d_.])"> <!-- Number based on pi or on e, e.g. _1j2p3j4 -->+ <!ENTITY name "[a-zA-Z]\w*"> <!-- Name --> <!ENTITY lname "\b&name;_(&name;)?_\b"> <!-- Locative, a__ means a_base_ --> <!ENTITY ilname "\b&name;__&name;\b"> <!-- Indirect locative --> ]> <!--- j.xml syntax highlighting for J programming language under Kate+ J language Syntax Highlighting Definition+ See updates and changelog at https://github.com/jip/syntax-highlighting - J is a modern, high-level, general-purpose, high-performance, portable programming language- http://www.jsoftware.com+ J is a high-level, general-purpose programming language+ https://www.jsoftware.com - Kate is a KDE Advanced Text Editor- http://kate.kde.org/+ This file is part of the KDE's KSyntaxHighlighting framework+ https://invent.kde.org/frameworks/syntax-highlighting++ SPDX-FileCopyrightText: 2012,2013,2015,2016,2020,2023,2026 Igor Zhuravlov <zhuravlov.ip@ya.ru>+ SPDX-FileCopyrightText: 2014 greg heil <gheil.j@gmail.com>+ SPDX-License-Identifier: GPL-3.0-or-later --> <language name="J" section="Scripts"- version="5"+ version="7" kateversion="5.0"- extensions="*.ijs;*.ijt;*.IJS;*.IJT"+ extensions="*.ijs;*.ijt;*.ijx" mimetype="text/x-j;text/x-jsrc" author="Igor Zhuravlov (zhuravlov.ip@ya.ru), greg heil (gheil.j@gmail.com)" indenter="normal" license="GPL"> <highlighting>+ <list name="controls">+ <item>{{</item>+ <item>}}</item>+ <item>assert.</item>+ <item>break.</item>+ <item>case.</item>+ <item>catch.</item>+ <item>catchd.</item>+ <item>catcht.</item>+ <item>continue.</item>+ <item>do.</item>+ <item>else.</item>+ <item>elseif.</item>+ <item>end.</item>+ <item>for.</item>+ <item>fcase.</item>+ <item>if.</item>+ <item>return.</item>+ <item>select.</item>+ <item>throw.</item>+ <item>try.</item>+ <item>while.</item>+ <item>whilst.</item>+ </list> <contexts> <context attribute="Sentence" lineEndContext="#pop" name="sentence"> <DetectSpaces/>- <RegExpr attribute="Foldable" context="#stay" String=":\s*0|\bdefine\b" beginRegion="Fold"/>- <LineContinue attribute="Foldable" context="#stay" char=")" endRegion="Fold" column="0"/>- <StringDetect attribute="Comment" context="#stay" String="NB.(" beginRegion="Fold"/>- <StringDetect attribute="Comment" context="#stay" String="NB.)" endRegion="Fold"/>+ <StringDetect attribute="Comment" context="#stay" String="NB.(" beginRegion="CommentBlock"/>+ <StringDetect attribute="Comment" context="#stay" String="NB.)" endRegion="CommentBlock"/>+ <StringDetect attribute="Annotation" context="annotation" String="NB. * "/> <StringDetect attribute="Comment" context="comment line" String="NB."/>+ <RegExpr attribute="Foldable" context="noun block" String="(?<![.\w])0\s+:\s*0|\bNote\s*'" beginRegion="DefBlock"/>+ <RegExpr attribute="Foldable" context="#stay" String=":\s*0|\bdefine\b" beginRegion="DefBlock"/>+ <LineContinue attribute="Foldable" context="#stay" char=")" endRegion="DefBlock" column="0"/>+ <StringDetect attribute="Foldable" context="#stay" String="{{" beginRegion="DDBlock"/>+ <StringDetect attribute="Foldable" context="#stay" String="}}" endRegion="DDBlock"/> <RegExpr attribute="String" context="#stay" String="'([^']|'')*'"/>- <RegExpr attribute="Adverb" context="#stay" String="([/\\]\.|\b[bfMt]\.|\bt:|[~/\\}])(?![.:])"/>- <RegExpr attribute="Verb" context="#stay" String="(_?\d:|p\.\.|[ACeEIjLor]\.|[_/\\iqsux]:|\{::|[=!\]]|[-<>+*%$|,#\{][.:]?|[;\[]:?|[~}"ip][.:]|[?^]\.?)(?![.:])"/>+ <RegExpr attribute="Adverb" context="#stay" String="([/\\]\.|/\.\.|\]:|\b[bfM]\.|[~/\\}])(?![.:])"/>+ <RegExpr attribute="Verb" context="#stay" String="(_?\d:|p\.\.|[AcCeEIjLor]\.|__?:|[/\\iqsuxZ]:|\{::|[=!\]]|[-<>+*%$|,#\{][.:]?|[;\[]:?|[~}"ip][.:]|[?^]\.?|\b[uv](\b|\.))(?![.:])"/> <RegExpr attribute="Number" context="#stay" String="&bnum;|&xnum;|&rnum;|&pnum;"/>- <AnyChar attribute="Parens" context="#stay" String="()"/>- <RegExpr attribute="Conjunction" context="#stay" String="("|[@&][.:]?|[.:][.:]?|[!D][.:]|&\.:|[;dHT]\.|`:?|[LS^]:)(?![.:])"/>- <RegExpr attribute="Control" context="#stay" String="\b(assert|break|f?case|catch[dt]?|continue|do|else(if)?|end|for(_&name;)?|(goto|label)_&name;|if|return|select|throw|try|whil(e|st))\.(?![.:])"/>- <Detect2Chars attribute="Copulae Global" context="#stay" char="=" char1=":"/>- <Detect2Chars attribute="Copulae Local" context="#stay" char="=" char1="."/>- <RegExpr attribute="ExpArg" context="#stay" String="\b[nmuvxy](?![\w:.])"/>- <RegExpr attribute="Noun" context="#stay" String="\ba[.:](?![.:])"/>+ <AnyChar attribute="Parenthese" context="#stay" String="()"/>+ <RegExpr attribute="Conjunction" context="#stay" String="("|[:@&][.:]?|;?\.|![.:]|&\.:|[;[\]Hmt]\.|`:?|[LS^]:)(?![.:])"/>+ <keyword attribute="Control" context="#stay" String="controls"/>+ <RegExpr attribute="Control" context="#stay" String="\b(for|goto|label)_&name;\.(?![.:])"/>+ <StringDetect attribute="Copulae Global" context="#stay" String="=:"/>+ <StringDetect attribute="Copulae Local" context="#stay" String="=."/>+ <RegExpr attribute="Noun" context="#stay" String="\b(a[.:](?![.:])|[mnxy](?![\w.:]))"/> </context>+ <context attribute="NounBlock" lineEndContext="#stay" name="noun block">+ <DetectChar attribute="Foldable" context="#pop" char=")" endRegion="DefBlock" column="0"/>+ </context>+ <context attribute="Annotation" lineEndContext="#pop" name="annotation">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context> <context attribute="Comment" lineEndContext="#pop" name="comment line">- <DetectSpaces />+ <DetectSpaces/> <IncludeRules context="##Comments"/>+ <DetectIdentifier/> </context> </contexts> <itemDatas>- <itemData name="Sentence" defStyleNum="dsNormal"/>- <itemData name="Adverb" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>- <itemData name="Conjunction" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Control" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Copulae Global" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Copulae Local" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="ExpArg" defStyleNum="dsKeyword" spellChecking="false" italic="true"/>- <itemData name="Foldable" defStyleNum="dsRegionMarker" spellChecking="false"/>- <itemData name="Noun" defStyleNum="dsKeyword" spellChecking="false" bold="true"/>- <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>- <itemData name="Parens" defStyleNum="dsRegionMarker" spellChecking="false"/>- <itemData name="String" defStyleNum="dsString" spellChecking="false"/>- <itemData name="Verb" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Sentence" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Adverb" defStyleNum="dsOperator" spellChecking="false" bold="true"/>+ <itemData name="Annotation" defStyleNum="dsAnnotation" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>+ <itemData name="Conjunction" defStyleNum="dsOperator" spellChecking="false" bold="true"/>+ <itemData name="Control" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Copulae Global" defStyleNum="dsBuiltIn" spellChecking="false"/>+ <itemData name="Copulae Local" defStyleNum="dsBuiltIn" spellChecking="false" bold="false"/>+ <itemData name="Foldable" defStyleNum="dsRegionMarker" spellChecking="false"/>+ <itemData name="Noun" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="NounBlock" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Parenthese" defStyleNum="dsRegionMarker" spellChecking="false"/>+ <itemData name="String" defStyleNum="dsString" spellChecking="false"/>+ <itemData name="Verb" defStyleNum="dsOperator" spellChecking="false" bold="true"/> </itemDatas> </highlighting> <general>+ <keywords casesensitive="true" weakDeliminator=".{}"/> <comments>- <comment name="multiLine" start="NB.(" end="NB.)" region="Fold"/>- <comment name="singleLine" start="NB."/>+ <comment name="singleLine" start="NB." position="afterwhitespace"/>+ <comment name="multiLine" start="NB.(" end="NB.)" region="CommentBlock"/> </comments> <folding indentationsensitive="true"/> </general>
+ xml/jinja.xml view
@@ -0,0 +1,298 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<!-- Base Jinja syntax for embedding into other grammars by the jinjize script. -->+<!-- Also serves as a standalone grammar for pure Jinja macro definiton files. -->+<language name="Jinja" version="1" kateversion="5.62" section="Other" license="MIT"+ extensions="*.jinja;*.jinja2;*.j2" mimetype="text/jinja"+ priority="-99" author="zoltan.gera@qt.io">+ <highlighting>+ <list name="jinja_operators">+ <item>and</item>+ <item>in</item>+ <item>not</item>+ <item>or</item>+ </list>+ <list name="jinja_ctrlflows">+ <item>break</item>+ <item>continue</item>+ <item>else</item>+ <item>elif</item>+ <item>endfor</item>+ <item>endif</item>+ <item>for</item>+ <item>if</item>+ <item>recursive</item>+ </list>+ <list name="jinja_keywords">+ <item>autoescape</item>+ <item>block</item>+ <item>call</item>+ <item>debug</item>+ <item>do</item>+ <item>endautoescape</item>+ <item>endblock</item>+ <item>endcall</item>+ <item>endfilter</item>+ <item>endmacro</item>+ <item>endraw</item>+ <item>endset</item>+ <item>endtrans</item>+ <item>endwith</item>+ <item>extends</item>+ <item>filter</item>+ <item>macro</item>+ <item>notrimmed</item>+ <item>pluralize</item>+ <item>raw</item>+ <item>required</item>+ <item>scoped</item>+ <item>set</item>+ <item>trans</item>+ <item>trimmed</item>+ <item>with</item>+ </list>+ <list name="jinja_imports">+ <item>as</item>+ <item>context</item>+ <item>from</item>+ <item>include</item>+ <item>ignore</item>+ <item>import</item>+ <item>missing</item>+ <item>with</item>+ <item>without</item>+ </list>+ <list name="jinja_constants">+ <item>false</item>+ <item>none</item>+ <item>true</item>+ <item>False</item>+ <item>None</item>+ <item>True</item>+ </list>+ <list name="jinja_globals">+ <item>caller</item>+ <item>cycler</item>+ <item>dict</item>+ <item>joiner</item>+ <item>kwargs</item>+ <item>lipsum</item>+ <item>loop</item>+ <item>namespace</item>+ <item>range</item>+ <item>self</item>+ <item>super</item>+ <item>varargs</item>+ </list>+ <list name="jinja_builtin_filters">+ <item>abs</item>+ <item>attr</item>+ <item>batch</item>+ <item>capitalize</item>+ <item>center</item>+ <item>default</item>+ <item>dictsort</item>+ <item>escape</item>+ <item>filesizeformat</item>+ <item>first</item>+ <item>float</item>+ <item>forceescape</item>+ <item>format</item>+ <item>groupby</item>+ <item>indent</item>+ <item>int</item>+ <item>items</item>+ <item>join</item>+ <item>last</item>+ <item>length</item>+ <item>list</item>+ <item>lower</item>+ <item>map</item>+ <item>max</item>+ <item>min</item>+ <item>pprint</item>+ <item>random</item>+ <item>reject</item>+ <item>rejectattr</item>+ <item>replace</item>+ <item>reverse</item>+ <item>round</item>+ <item>safe</item>+ <item>select</item>+ <item>selectattr</item>+ <item>slice</item>+ <item>sort</item>+ <item>string</item>+ <item>striptags</item>+ <item>sum</item>+ <item>title</item>+ <item>tojson</item>+ <item>trim</item>+ <item>truncate</item>+ <item>unique</item>+ <item>upper</item>+ <item>urlencode</item>+ <item>urlize</item>+ <item>wordcount</item>+ <item>wordwrap</item>+ <item>xmlattr</item>+ </list>+ <list name="jinja_builtin_tests">+ <item>boolean</item>+ <item>callable</item>+ <item>defined</item>+ <item>divisibleby</item>+ <item>eq</item>+ <item>escaped</item>+ <item>even</item>+ <item>false</item>+ <item>filter</item>+ <item>float</item>+ <item>ge</item>+ <item>gt</item>+ <item>in</item>+ <item>integer</item>+ <item>iterable</item>+ <item>le</item>+ <item>lower</item>+ <item>lt</item>+ <item>mapping</item>+ <item>ne</item>+ <item>none</item>+ <item>number</item>+ <item>odd</item>+ <item>sameas</item>+ <item>sequence</item>+ <item>string</item>+ <item>test</item>+ <item>true</item>+ <item>undefined</item>+ <item>upper</item>+ </list>+ <contexts>+ <context name="jinja_boot" attribute="jinja_normal" lineEndContext="#stay">+ <Detect2Chars context="jinja_statement_boot" attribute="jinja_delimiter" beginRegion="jinjaStatement" char="{" char1="%" />+ <Detect2Chars context="jinja_expression_boot" attribute="jinja_delimiter" beginRegion="jinjaExpression" char="{" char1="{" />+ <Detect2Chars context="jinja_comment_boot" attribute="jinja_delimiter" beginRegion="jinjaComment" char="{" char1="#" />+ </context>+ <context name="jinja_statement_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_statement_1st">+ <AnyChar context="#pop!jinja_statement_1st" attribute="jinja_delimiter" String="-+" />+ </context>+ <context name="jinja_expression_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_expression">+ <AnyChar context="#pop!jinja_expression" attribute="jinja_delimiter" String="-+" />+ </context>+ <context name="jinja_comment_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_comment">+ <AnyChar context="#pop!jinja_comment" attribute="jinja_delimiter" String="-+" />+ </context>+ <context name="jinja_statement_1st" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop!jinja_statement">+ <DetectSpaces context="#stay" attribute="jinja_code" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" beginRegion="jinjaFor" String="for" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" endRegion="jinjaFor" String="endfor" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" beginRegion="jinjaIf" String="if" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" endRegion="jinjaIf" String="endif" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaAutoescape" String="autoescape" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaAutoescape" String="endautoescape" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaBlock" String="block" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaBlock" String="endblock" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaCall" String="call" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaCall" String="endcall" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaFilter" String="filter" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaFilter" String="endfilter" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaMacro" String="macro" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaMacro" String="endmacro" />+ <!-- TODO: Use multi-stacking to avoid Jinja highlighting inside the raw region. -->+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaRaw" String="raw" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaRaw" String="endraw" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaTrans" String="trans" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaTrans" String="endtrans" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaWith" String="with" />+ <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaWith" String="endwith" />+ </context>+ <context name="jinja_statement" attribute="jinja_code" lineEndContext="#pop!jinja_statement_1st">+ <DetectSpaces context="#stay" attribute="jinja_code" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" String="-%}" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" String="+%}" />+ <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" char="%" char1="}" />+ <IncludeRules context="jinja_source" />+ </context>+ <context name="jinja_expression" attribute="jinja_code" lineEndContext="#stay">+ <DetectSpaces context="#stay" attribute="jinja_code" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" String="-}}" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" String="+}}" />+ <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" char="}" char1="}" />+ <IncludeRules context="jinja_source" />+ </context>+ <context name="jinja_comment" attribute="jinja_comment" lineEndContext="#stay">+ <DetectSpaces context="#stay" attribute="jinja_comment" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" String="-#}" />+ <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" String="+#}" />+ <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" char="#" char1="}" />+ </context>+ <context name="jinja_source" attribute="jinja_code" lineEndContext="#stay">+ <HlCHex context="#stay" attribute="jinja_basen" />+ <HlCOct context="#stay" attribute="jinja_basen" />+ <Float context="#stay" attribute="jinja_float" />+ <Int context="#stay" attribute="jinja_decimal" />+ <DetectChar context="jinja_string1" attribute="jinja_string" char="'" />+ <DetectChar context="jinja_string2" attribute="jinja_string" char=""" />+ <AnyChar context="#stay" attribute="jinja_operator" String=".[]{}()+-*/%<>=!~" />+ <DetectChar context="jinja_filter" attribute="jinja_operator" char="|" />+ <WordDetect context="jinja_test" attribute="jinja_operator" String="is" />+ <keyword context="#stay" attribute="jinja_operator" String="jinja_operators" />+ <keyword context="#stay" attribute="jinja_ctrlflow" String="jinja_ctrlflows" />+ <keyword context="#stay" attribute="jinja_keyword" String="jinja_keywords" />+ <keyword context="#stay" attribute="jinja_import" String="jinja_imports" />+ <keyword context="#stay" attribute="jinja_constant" String="jinja_constants" />+ <keyword context="#stay" attribute="jinja_builtin" String="jinja_globals" />+ <RegExpr context="#stay" attribute="jinja_function" String="[a-zA-Z_][a-zA-Z0-9_]*(?=\()" />+ </context>+ <context name="jinja_string1" attribute="jinja_string" lineEndContext="#stay">+ <DetectChar context="#pop" attribute="jinja_string" char="'"/>+ <IncludeRules context="jinja_string_common"/>+ </context>+ <context name="jinja_string2" attribute="jinja_string" lineEndContext="#stay">+ <DetectChar context="#pop" attribute="jinja_string" char="""/>+ <IncludeRules context="jinja_string_common"/>+ </context>+ <context name="jinja_string_common" attribute="jinja_string" lineEndContext="#stay">+ <DetectSpaces context="#stay" attribute="jinja_string" />+ <HlCStringChar context="#stay" attribute="jinja_escape" />+ <RegExpr context="#stay" attribute="jinja_escape" String="\\[uU][0-9a-fA-F]{4,8}" />+ </context>+ <context name="jinja_filter" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces context="#stay" attribute="jinja_code" />+ <keyword context="#pop" attribute="jinja_builtin" String="jinja_builtin_filters" />+ <DetectIdentifier context="#pop" attribute="jinja_function" />+ </context>+ <context name="jinja_test" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces context="#stay" attribute="jinja_code" />+ <WordDetect context="#stay" attribute="jinja_operator" String="not" />+ <keyword context="#pop" attribute="jinja_builtin" String="jinja_builtin_tests" />+ <DetectIdentifier context="#pop" attribute="jinja_function" />+ </context>+ </contexts>+ <itemDatas>+ <itemData name="jinja_normal" defStyleNum="dsNormal" spellChecking="false" />+ <itemData name="jinja_delimiter" defStyleNum="dsRegionMarker" bold="true" spellChecking="false" />+ <itemData name="jinja_code" defStyleNum="dsNormal" spellChecking="false" />+ <itemData name="jinja_comment" defStyleNum="dsComment" spellChecking="true" />+ <itemData name="jinja_basen" defStyleNum="dsBaseN" spellChecking="false" />+ <itemData name="jinja_float" defStyleNum="dsFloat" spellChecking="false" />+ <itemData name="jinja_decimal" defStyleNum="dsDecVal" spellChecking="false" />+ <itemData name="jinja_string" defStyleNum="dsString" spellChecking="true" />+ <itemData name="jinja_escape" defStyleNum="dsSpecialChar" spellChecking="false" />+ <itemData name="jinja_operator" defStyleNum="dsOperator" spellChecking="false" />+ <itemData name="jinja_ctrlflow" defStyleNum="dsControlFlow" spellChecking="false" />+ <itemData name="jinja_keyword" defStyleNum="dsKeyword" spellChecking="false" />+ <itemData name="jinja_import" defStyleNum="dsImport" spellChecking="false" />+ <itemData name="jinja_constant" defStyleNum="dsConstant" spellChecking="false" />+ <itemData name="jinja_builtin" defStyleNum="dsBuiltIn" spellChecking="false" />+ <itemData name="jinja_function" defStyleNum="dsFunction" spellChecking="false" />+ </itemDatas>+ </highlighting>+ <general>+ <keywords casesensitive="1" />+ </general>+</language>++<!-- kate: tab-width 2; replace-tabs on; indent-width 2; -->
+ xml/jira.xml view
@@ -0,0 +1,779 @@+<?xml version = '1.0' encoding = 'UTF-8'?>+<!DOCTYPE language [++ <!ENTITY start "(^|(?<=\s))">+ <!ENTITY citation "&start;\?\?(?=[^\s][^?]+\?\?([\s.,;:-]|$))">+ <!ENTITY deleted "&start;\-(?=[^\s][^\-]+\-([\s.,;:?]|$))">+ <!ENTITY emphasis "&start;_(?=[^\s][^_]+_([\s.,;:-]|\?|$))">+ <!ENTITY inserted "&start;\+(?=[^\s][^\+]+\+([\s.,;:-]|\?|$))">+ <!ENTITY monospaced "&start;\{\{(?=[^\s][^}]+\}\}([\s.,;:-]|$))">+ <!ENTITY strong "&start;\*(?=[^\s][^\*]+\*([\s.,;:-]|\?|$))">+ <!ENTITY subscript "&start;~(?=[^\s][^~]+~([\s.,;:-]|\?|$))">+ <!ENTITY superscript "&start;\^(?=[^\s][^\^]+\^([\s.,;:-]|\?|$))">++ <!ENTITY attachment "&start;\[\^(?=[^]\s][^]]+\])">+ <!ENTITY bracketAnchor "&start;\[#(?=[^]\s][^]]+\])">+ <!ENTITY taggedLink "&start;\[(?=[^]\s|][^]|]+(\|[^]\s|][^]|]+)?\])">+ <!ENTITY userTag "&start;\[~(?=[^]\s][^]]+\])">++ <!ENTITY embeddedItem "&start;!(?=[^!\s][^!]+!)">++ <!ENTITY panel "&start;\{panel(?=[^\}]*\})">++ <!ENTITY code "&start;\{code(?=[^\}]*\})">++ <!ENTITY url "(http:|https:|ftp:|mailto:)[^]|) ]*(?=$|[]|\s|\)])">+]>+<language name="Jira" section="Markup" version="15" kateversion="6.22" extensions="*.jira" mimetype="" license="FDL" >+ <highlighting>++ <!--+ Documentation about the Jira syntax: https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all+ -->++ <contexts>++ <!-- Main Context -->+ <context name="Start" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces />+ <IncludeRules context="FindHeader" />+ <IncludeRules context="FindBlockQuote" />+ <IncludeRules context="FindText" />+ <IncludeRules context="FindListItem" />+ <IncludeRules context="FindIcons" />+ <IncludeRules context="FindTables" />+ <IncludeRules context="FindColor" />+ <IncludeRules context="FindQuote" />+ <IncludeRules context="FindNoFormat" />+ <IncludeRules context="FindPanels" />+ <IncludeRules context="FindCode" />+ <IncludeRules context="FindTextBreaks" />+ <IncludeRules context="FindEmbeddedItems" />+ <IncludeRules context="FindLinks" />+ <IncludeRules context="FindEscapeSequences" />+ <IncludeRules context="FindLineBreaks" />+ </context>+++ <!-- Contexts -->++ <!-- Headings -->+ <context name="Header" attribute="Header" lineEndContext="#pop" />+++ <!-- Images / Attachments -->+ <context name="EmbeddedItemContent" attribute="Link" lineEndContext="#stay" fallthroughContext="EmbeddedItemLink">+ <!-- !spaceKey:pageTitle^attachment.mov! -->+ <RegExpr String="[^:!|]+(?=:[^!|]*\^)" attribute="Label" context="EmbeddedItemPageTitle" />+ </context>+ <context name="EmbeddedItemLink" attribute="Link" lineEndContext="#stay">+ <DetectChar char="|" attribute="Special Character" context="EmbeddedItemAttributes" />+ <DetectChar char="!" attribute="Special Character" context="#pop#pop" />+ </context>+ <context name="EmbeddedItemPageTitle" attribute="Label" lineEndContext="#stay">+ <DetectChar char=":" attribute="Special Character" context="#stay" />+ <DetectChar char="^" attribute="Special Character" context="#pop!EmbeddedItemLink" />+ </context>+ <context name="EmbeddedItemAttributes" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="!" attribute="Special Character" context="#pop#pop#pop" />+ <DetectChar char="=" attribute="Normal" context="EmbeddedItemAttributeValue" />+ <DetectIdentifier attribute="AttributeKeyword" context="#stay" />+ </context>+ <context name="EmbeddedItemAttributeValue" attribute="AttributeValue" lineEndContext="#stay">+ <DetectChar char="," attribute="Normal" context="#pop" />+ <DetectChar char="!" attribute="Special Character" context="#pop#pop#pop#pop" />+ <DetectIdentifier attribute="AttributeValue" context="#stay" />+ </context>++ <context name="PanelStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char=":" attribute="Special Character" context="PanelAttributes" />+ <DetectChar char="}" attribute="Special Character" context="PanelContent" />+ </context>+ <context name="PanelContent" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces />+ <StringDetect String="{panel}" attribute="Special Character" context="#pop#pop" />+ <IncludeRules context="FindBlockQuote" />+ <IncludeRules context="FindText" />+ <IncludeRules context="FindListItem" />+ <IncludeRules context="FindIcons" />+ <IncludeRules context="FindTables" />+ <IncludeRules context="FindColor" />+ <IncludeRules context="FindQuote" />+ <IncludeRules context="FindNoFormat" />+ <IncludeRules context="FindCode" />+ <IncludeRules context="FindTextBreaks" />+ <IncludeRules context="FindEmbeddedItems" />+ <IncludeRules context="FindLinks" />+ <IncludeRules context="FindEscapeSequences" />+ <IncludeRules context="FindLineBreaks" />+ </context>+ <context name="PanelAttributes" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!PanelContent" />+ <DetectChar char="=" attribute="Normal" context="PanelAttributeValue" />+ <DetectIdentifier attribute="AttributeKeyword" context="#stay" />+ </context>+ <context name="PanelAttributeValue" attribute="AttributeValue" lineEndContext="#stay">+ <DetectChar char="|" attribute="Special Character" context="#pop" />+ <DetectChar char="}" attribute="Special Character" context="#pop#pop!PanelContent" />+ </context>+++ <!-- See https://confluence.atlassian.com/display/DOC/Code+Block+Macro for keywords -->+ <context name="CodeContext" lineEndContext="#stay" attribute="Normal" fallthroughContext="JavaCodeStartTagContent">+ <!-- TODO see note -->+ <!-- Note: Commented out lines are for languages that Jira supports but KTextEditor does not yet. -->+<!-- <RegExpr String=":(?= *actionscript3 *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" /> -->+ <RegExpr String=":(?= *(ada|title=[- \w]+\.(adb|ads|ada|a)) *[|}])" attribute="Special Character" context="AdaCodeStartTagContent" />+<!-- <RegExpr String=":(?= *AppleScript *[|}])" attribute="Special Character" context="AppleScriptCodeStartTagContent" /> -->+ <RegExpr String=":(?= *(bash|title=[- \w]*\.(sh|bash)) *[|}])" attribute="Special Character" context="BashCodeStartTagContent" />+ <RegExpr String=":(?= *(csharp|title=[- \w]*\.(cs|ashx)) *[|}])" attribute="Special Character" context="CSharpCodeStartTagContent" />+ <RegExpr String=":(?= *(coldfusion|title=[- \w]*\.(cfm|cfc|cfml|dbm)) *[|}])" attribute="Special Character" context="ColdFusionCodeStartTagContent" />+ <RegExpr String=":(?= *(c(pp)?|title=[- \w]*\.([cChH]|cpp|hpp|cxx|c\+\+|cc|cu|hh)) *[|}])" attribute="Special Character" context="CppCodeStartTagContent" />+ <RegExpr String=":(?= *(css|title=[- \w]*\.css) *[|}])" attribute="Special Character" context="CssCodeStartTagContent" />+ <RegExpr String=":(?= *(delphi|title=[- \w]*\.(p|pas|pp)) *[|}])" attribute="Special Character" context="PascalCodeStartTagContent" />+ <RegExpr String=":(?= *(diff|title=[- \w]*\.(diff|patch)) *[|}])" attribute="Special Character" context="DiffCodeStartTagContent" />+ <RegExpr String=":(?= *(erlang|title=[- \w]*\.erl) *[|}])" attribute="Special Character" context="ErlangCodeStartTagContent" />+ <RegExpr String=":(?= *(groovy|title=([- \w]*\.(groovy|gradle|gvy)|Jenkinsfile)) *[|}])" attribute="Special Character" context="GroovyCodeStartTagContent" />+ <RegExpr String=":(?= *(haskell|title=[- \w]*\.c?hs) *[|}])" attribute="Special Character" context="HaskellCodeStartTagContent" />+ <RegExpr String=":(?= *(html|title=[- \w]*\.(s?html?|aspx)) *[|}])" attribute="Special Character" context="HtmlCodeStartTagContent" />+ <RegExpr String=":(?= *(java|title=[- \w]*\.java) *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" />+<!-- <RegExpr String=":(?= *javafx *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" /> -->+ <RegExpr String=":(?= *(javascript|title=[- \w]*\.([cm]?js)) *[|}])" attribute="Special Character" context="JavaScriptCodeStartTagContent" />+ <RegExpr String=":(?= *(json|title=[- \w]*\.json) *[|}])" attribute="Special Character" context="JsonCodeStartTagContent" />+ <RegExpr String=":(?= *(lua|title=[- \w]*\.(lua|rockspec)) *[|}])" attribute="Special Character" context="LuaCodeStartTagContent" />+ <RegExpr String=":(?= *none *[|}])" attribute="Special Character" context="NoneCodeStartTagContent" />+<!-- <RegExpr String=":(?= *nyan *[|}])" attribute="Special Character" context="NyanCodeStartTagContent" /> -->+ <RegExpr String=":(?= *(perl|title=[- \w]*\.(pl|PL|pm)) *[|}])" attribute="Special Character" context="PerlCodeStartTagContent" />+ <RegExpr String=":(?= *(php|title=[- \w]*\.php) *[|}])" attribute="Special Character" context="PhpCodeStartTagContent" />+ <RegExpr String=":(?= *(powershell|title=[- \w]*\.(ps1|psm1|psd1)) *[|}])" attribute="Special Character" context="PowerShellCodeStartTagContent" />+ <RegExpr String=":(?= *(python|title=[- \w]*\.py) *[|}])" attribute="Special Character" context="PythonCodeStartTagContent" />+ <RegExpr String=":(?= *(ruby|title=([- \w]*\.(rb|rake|gemspec)|Rakefile|Gemfile|Vagrantfile)) *[|}])" attribute="Special Character" context="RubyCodeStartTagContent" />+ <RegExpr String=":(?= *(ruby|title=([- \w]*\.erv)) *[|}])" attribute="Special Character" context="RHTMLCodeStartTagContent" />+ <RegExpr String=":(?= *(scala|title=[- \w]*\.(scala|sbt)) *[|}])" attribute="Special Character" context="ScalaCodeStartTagContent" />+ <RegExpr String=":(?= *(sql|title=[- \w]*\.sql) *[|}])" attribute="Special Character" context="SqlCodeStartTagContent" />+ <RegExpr String=":(?= *(swift|title=[- \w]*\.swift) *[|}])" attribute="Special Character" context="SwiftCodeStartTagContent" />+<!-- <RegExpr String=":(?= *vb *[|}])" attribute="Special Character" context="VisualBasicCodeStartTagContent" /> -->+ <RegExpr String=":(?= *(xml|title=[- \w]*\.(xml|xslt?)) *[|}])" attribute="Special Character" context="XmlCodeStartTagContent" />+ <RegExpr String=":(?= *(yaml|title=[- \w]*\.ya?ml) *[|}])" attribute="Special Character" context="YamlCodeStartTagContent" />+ </context>++ <context name="FindCodeAttributes" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="|" attribute="Special Character" context="#stay" />+ <DetectChar char="=" attribute="Normal" context="CodeAttributeValue" />+ <DetectIdentifier attribute="AttributeKeyword" context="#stay" />+ </context>+ <context name="CodeAttributeValue" attribute="AttributeValue" lineEndContext="#stay">+ <AnyChar String="|}" context="#pop" lookAhead="true" />+ </context>++ <context name="FindEndCode" attribute="Normal" lineEndContext="#stay">+ <StringDetect String="{code}" attribute="Special Character" context="#pop#pop#pop" />+ </context>++ <context name="AdaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="AdaCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="AdaCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Ada" />+ </context>++ <context name="BashCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="BashCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="BashCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Command##Bash">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Bash" />+ </context>++ <context name="CSharpCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="CSharpCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="CSharpCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##C#" />+ </context>++ <context name="ColdFusionCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="ColdFusionCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="ColdFusionCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##ColdFusion" />+ </context>++ <context name="CppCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="CppCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="CppCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##C++" />+ </context>++ <context name="CssCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="CssCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="CssCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##CSS" />+ </context>++ <context name="DiffCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="DiffCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="DiffCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Diff" />+ </context>++ <context name="ErlangCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="ErlangCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="ErlangCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Erlang" />+ </context>++ <context name="GroovyCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="GroovyCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="GroovyCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Groovy" />+ </context>++ <context name="HaskellCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="HaskellCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="HaskellCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Haskell" />+ </context>++ <context name="HtmlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="HtmlCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="HtmlCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##HTML" />+ </context>++ <context name="JavaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="JavaCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="JavaCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Java" />+ </context>++ <context name="JavaScriptCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="JavaScriptCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="JavaScriptCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="Normal##JavaScript" />+ </context>++ <context name="JsonCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="JsonCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="JsonCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##JSON" />+ </context>++ <context name="LuaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="LuaCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="LuaCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Lua" />+ </context>++ <context name="NoneCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="NoneCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="NoneCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ </context>++ <context name="PascalCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="PascalCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="PascalCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Pascal" />+ </context>++ <context name="PerlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="PerlCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="PerlCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Perl" />+ </context>++ <context name="PhpCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="PhpCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="PhpCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="phpsource##PHP/PHP" />+ </context>++ <context name="PowerShellCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="PowerShellCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="PowerShellCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##PowerShell" />+ </context>++ <context name="PythonCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="PythonCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="PythonCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Python" />+ </context>++ <context name="RubyCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="RubyCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="RubyCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Expr##Ruby">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="Ruby##Ruby" />+ </context>++ <context name="RHTMLCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="RHTMLCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="RHTMLCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Ruby/Rails/RHTML" />+ </context>++ <context name="ScalaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="ScalaCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="ScalaCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##Scala" />+ </context>++ <context name="SqlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="SqlCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="SqlCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##SQL" />+ </context>++ <context name="SwiftCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="SwiftCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="SwiftCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="Normal##Swift" />+ </context>++ <context name="XmlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="XmlCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="XmlCodeContent" attribute="Normal" lineEndContext="#stay">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##XML" />+ </context>++ <context name="YamlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="YamlCodeContent" />+ <IncludeRules context="FindCodeAttributes" />+ </context>+ <context name="YamlCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">+ <IncludeRules context="FindEndCode" />+ <IncludeRules context="##YAML" />+ </context>+++ <!-- Links -->+ <context name="BracketAnchorContent" attribute="Link" lineEndContext="#stay">+ <DetectChar char="]" attribute="Special Character" context="#pop" />+ </context>++ <context name="AttachmentLinkContent" attribute="Link" lineEndContext="#stay">+ <DetectChar char="]" attribute="Special Character" context="#pop" />+ </context>++ <context name="UserTagContent" attribute="Link" lineEndContext="#stay">+ <DetectChar char="]" attribute="Special Character" context="#pop" />+ </context>++ <context name="TaggedLinkContent" attribute="Link" lineEndContext="#stay" fallthroughContext="TaggedLinkUrl">+ <DetectChar char="|" attribute="Special Character" context="TaggedLinkUrl" />+ <RegExpr String="[^]|]+(?=\|)" attribute="Label" context="#stay" />+ </context>+ <context name="TaggedLinkUrl" attribute="Link" lineEndContext="#stay">+ <DetectChar char="]" attribute="Special Character" context="#pop#pop" />+ </context>++ <context name="BraceAnchorContent" attribute="Link" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop#pop" />+ </context>+++ <!-- Text Effects -->+ <context name="ColorTagColor" attribute="Normal" lineEndContext="#stay">+ <!-- Black and White have been skipped on purpose. -->+ <StringDetect String="silver}" context="ColorSilverTagColor" lookAhead="true" />+ <StringDetect String="gray}" context="ColorGrayTagColor" lookAhead="true" />+ <StringDetect String="red}" context="ColorRedTagColor" lookAhead="true" />+ <StringDetect String="maroon}" context="ColorMaroonTagColor" lookAhead="true" />+ <StringDetect String="yellow}" context="ColorYellowTagColor" lookAhead="true" />+ <StringDetect String="olive}" context="ColorOliveTagColor" lookAhead="true" />+ <StringDetect String="lime}" context="ColorLimeTagColor" lookAhead="true" />+ <StringDetect String="green}" context="ColorGreenTagColor" lookAhead="true" />+ <StringDetect String="aqua}" context="ColorAquaTagColor" lookAhead="true" />+ <StringDetect String="teal}" context="ColorTealTagColor" lookAhead="true" />+ <StringDetect String="blue}" context="ColorBlueTagColor" lookAhead="true" />+ <StringDetect String="navy}" context="ColorNavyTagColor" lookAhead="true" />+ <StringDetect String="fuchsia}" context="ColorFuchsiaTagColor" lookAhead="true" />+ <StringDetect String="purple}" context="ColorPurpleTagColor" lookAhead="true" />+ <DetectChar char="}" attribute="Special Character" context="HighlightedColorContent" />+ </context>+ <context name="HighlightedColorContent" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces />+ <DetectIdentifier />+ <StringDetect String="{color}" attribute="Special Character" context="#pop#pop" />+ </context>+ <context name="ColorSilverTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!SilverContent" />+ <StringDetect String="silver" attribute="Silver" />+ </context>+ <context name="SilverContent" attribute="Silver" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorGrayTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!GrayContent" />+ <StringDetect String="gray" attribute="Gray" />+ </context>+ <context name="GrayContent" attribute="Gray" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorRedTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!RedContent" />+ <StringDetect String="red" attribute="Red" />+ </context>+ <context name="RedContent" attribute="Red" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorMaroonTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!MaroonContent" />+ <StringDetect String="maroon" attribute="Maroon" />+ </context>+ <context name="MaroonContent" attribute="Maroon" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorYellowTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!YellowContent" />+ <StringDetect String="yellow" attribute="Yellow" />+ </context>+ <context name="YellowContent" attribute="Yellow" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorOliveTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!OliveContent" />+ <StringDetect String="olive" attribute="Olive" />+ </context>+ <context name="OliveContent" attribute="Olive" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorLimeTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!LimeContent" />+ <StringDetect String="lime" attribute="Lime" />+ </context>+ <context name="LimeContent" attribute="Lime" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorGreenTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!GreenContent" />+ <StringDetect String="green" attribute="Green" />+ </context>+ <context name="GreenContent" attribute="Green" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorAquaTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!AquaContent" />+ <StringDetect String="aqua" attribute="Aqua" />+ </context>+ <context name="AquaContent" attribute="Aqua" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorTealTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!TealContent" />+ <StringDetect String="teal" attribute="Teal" />+ </context>+ <context name="TealContent" attribute="Teal" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorBlueTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!BlueContent" />+ <StringDetect String="blue" attribute="Blue" />+ </context>+ <context name="BlueContent" attribute="Blue" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorNavyTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!NavyContent" />+ <StringDetect String="navy" attribute="Navy" />+ </context>+ <context name="NavyContent" attribute="Navy" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorFuchsiaTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!FuchsiaContent" />+ <StringDetect String="fuchsia" attribute="Fuchsia" />+ </context>+ <context name="FuchsiaContent" attribute="Fuchsia" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>+ <context name="ColorPurpleTagColor" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="}" attribute="Special Character" context="#pop!PurpleContent" />+ <StringDetect String="purple" attribute="Purple" />+ </context>+ <context name="PurpleContent" attribute="Purple" lineEndContext="#stay">+ <IncludeRules context="HighlightedColorContent" />+ </context>++ <context name="BlockQuote" lineEndContext="#stay" lineEmptyContext="#pop" attribute="Block Quotation"/>+ <context name="BoldContent" attribute="Bold" lineEndContext="#stay">+ <DetectChar char="*" attribute="Special Character" context="#pop" />+ </context>+ <context name="CitationContent" attribute="Citation" lineEndContext="#stay">+ <Detect2Chars char="?" char1="?" attribute="Special Character" context="#pop" />+ </context>+ <context name="DeletedContent" attribute="Stroked Out" lineEndContext="#stay">+ <DetectChar char="-" attribute="Special Character" context="#pop" />+ </context>+ <context name="InsertedContent" attribute="Underlined" lineEndContext="#stay">+ <DetectChar char="+" attribute="Special Character" context="#pop" />+ </context>+ <context name="ItalicContent" attribute="Italic" lineEndContext="#stay">+ <DetectChar char="_" attribute="Special Character" context="#pop" />+ </context>+ <context name="Monospaced" attribute="Normal" lineEndContext="#stay">+ <Detect2Chars char="}" char1="}" attribute="Special Character" context="#pop" />+ </context>+ <context name="Quote" attribute="Block Quotation" lineEndContext="#stay">+ <DetectSpaces />+ <DetectIdentifier />+ <StringDetect String="{quote}" context="#pop" attribute="Special Character" />+ </context>+ <context name="SubscriptContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="~" attribute="Special Character" context="#pop" />+ </context>+ <context name="SuperscriptContent" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="^" attribute="Special Character" context="#pop" />+ </context>+++ <!-- Tables -->+ <context name="TableHeaderRow" attribute="Bold" lineEndContext="#pop">+ <DetectSpaces />+ <DetectIdentifier />+ <Detect2Chars char="|" char1="|" attribute="Special Character" context="#stay" />+ <IncludeRules context="FindTextBreaks" />+ <IncludeRules context="FindEscapeSequences" />+ <IncludeRules context="FindIcons" />+ </context>+ <context name="TableRegularRow" attribute="Normal" lineEndContext="#pop">+ <DetectSpaces />+ <DetectChar char="|" attribute="Special Character" context="#stay" />+ <IncludeRules context="FindText" />+ <IncludeRules context="FindTextBreaks" />+ <IncludeRules context="FindEscapeSequences" />+ <IncludeRules context="FindLinks" />+ <IncludeRules context="FindColor" />+ <IncludeRules context="FindIcons" />+ </context>++ <context name="NoFormat" attribute="Normal" lineEndContext="#stay">+ <DetectSpaces />+ <DetectIdentifier />+ <StringDetect String="{noformat}" attribute="Special Character" context="#pop" />+ </context>+++ <!-- Rules to Include -->++ <!-- BlockQuotes -->+ <context name="FindBlockQuote" attribute="Normal" lineEndContext="#stay">+ <StringDetect String="bq. " context="BlockQuote" attribute="Special Character" column="0" />+ </context>++ <!-- Colors -->+ <context name="FindColor" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="\{color:(?=[^}]+\})" attribute="Special Character" context="ColorTagColor" />+ </context>++ <!-- Headings -->+ <context name="FindHeader" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^h[1-6]\. " context="Header" attribute="Special Character" column="0" />+ </context>++ <!-- Quotes -->+ <context name="FindQuote" attribute="Normal" lineEndContext="#stay">+ <StringDetect String="{quote}" context="Quote" attribute="Special Character" />+ </context>++ <!-- Text Breaks -->+ <context name="FindTextBreaks" attribute="Normal" lineEndContext="#stay">+ <Detect2Chars char="\" char1="\" attribute="Special Character" />+ <StringDetect String="----" attribute="Special Character" column="0" />+ <StringDetect String="---" attribute="Special Character" />+ <Detect2Chars char="-" char1="-" attribute="Special Character" />+ </context>++ <!-- Embedded Items -->+ <context name="FindEmbeddedItems" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&embeddedItem;" attribute="Special Character" context="EmbeddedItemContent" />+ </context>++ <!-- Links -->+ <context name="FindLinks" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&bracketAnchor;" attribute="Special Character" context="BracketAnchorContent" />+ <RegExpr String="&attachment;" attribute="Special Character" context="AttachmentLinkContent" />+ <RegExpr String="&userTag;" attribute="Special Character" context="UserTagContent" />+ <RegExpr String="&taggedLink;" attribute="Special Character" context="TaggedLinkContent" />+ <RegExpr String="\{anchor:(?=[^}]+\})" attribute="Special Character" context="BraceAnchorContent" />+ <RegExpr String="&url;" attribute="Link" />+ </context>++ <!-- Lists -->+ <context name="FindListItem" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="^([*#]+|-)(?=\s)" attribute="Special Character" context="#stay" column="0" />+ </context>++ <!-- Text Effects -->+ <context name="FindTextEffects" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&strong;" attribute="Special Character" context="BoldContent" />+ <RegExpr String="&citation;" attribute="Special Character" context="CitationContent" />+ <RegExpr String="&deleted;" attribute="Special Character" context="DeletedContent" />+ <RegExpr String="&inserted;" attribute="Special Character" context="InsertedContent" />+ <RegExpr String="&subscript;" attribute="Special Character" context="SubscriptContent" />+ <RegExpr String="&superscript;" attribute="Special Character" context="SuperscriptContent" />+ <RegExpr String="&monospaced;" attribute="Special Character" context="Monospaced" />+ </context>+ <context name="EmphasisOrIdentifier" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&emphasis;" attribute="Special Character" context="#pop!ItalicContent" />+ <DetectIdentifier context="#pop" />+ </context>++ <!-- Text -->+ <context name="FindText" attribute="Normal" lineEndContext="#stay">+ <DetectChar char="_" context="EmphasisOrIdentifier" lookAhead="true" />+ <DetectIdentifier />+ <IncludeRules context="FindTextEffects" />+ </context>++ <!-- Tables -->+ <context name="FindTables" attribute="Normal" lineEndContext="#stay">+ <Detect2Chars char="|" char1="|" attribute="Special Character" context="TableHeaderRow" column="0" />+ <DetectChar char="|" attribute="Special Character" context="TableRegularRow" column="0" />+ </context>++ <!-- No format -->+ <context name="FindNoFormat" attribute="Normal" lineEndContext="#stay">+ <StringDetect String="{noformat}" context="NoFormat" attribute="Special Character" />+ </context>++ <!-- Panels -->+ <context name="FindPanels" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&panel;" attribute="Special Character" context="PanelStartTagContent" />+ </context>++ <!-- Code -->+ <context name="FindCode" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="&code;" attribute="Special Character" context="CodeContext" />+ </context>++ <!-- Escape Sequences -->+ <context name="FindEscapeSequences" attribute="Normal" lineEndContext="#stay">+ <RegExpr String="\\[^ \\]" attribute="EscapeSequence" />+ </context>++ <!-- Line Breaks -->+ <context name="FindLineBreaks" attribute="Normal" lineEndContext="#stay">+ <LineContinue attribute="Special Character" />+ </context>++ <!-- Icons -->+ <context name="FindIcons" attribute="Normal" lineEndContext="#stay">+ <RegExpr String=":\)|:\(|:P|:D|;\)|\(([yni/x!+-?*]|on|off|[*][rgby]|flag|flagoff)\)" attribute="Special Character" />+ </context>++ </contexts>+ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal" /><!-- Must be first. -->++ <itemData name="Bold" defStyleNum="dsNormal" bold="true" />+ <itemData name="Header" defStyleNum="dsKeyword" />+ <itemData name="Italic" defStyleNum="dsNormal" italic="true" />+ <itemData name="Citation" defStyleNum="dsNormal" italic="true" />+ <itemData name="Block Quotation" defStyleNum="dsNormal" />+ <itemData name="Special Character" defStyleNum="dsDecVal" bold="true" />+ <itemData name="Stroked Out" defStyleNum="dsNormal" strikeOut="true" />+ <itemData name="Underlined" defStyleNum="dsNormal" underline="true" />+ <itemData name="AttributeKeyword" defStyleNum="dsOthers" spellChecking="false" />+ <itemData name="AttributeValue" defStyleNum="dsString" spellChecking="false" />+ <itemData name="EscapeSequence" defStyleNum="dsChar" spellChecking="false" />+ <itemData name="Link" defStyleNum="dsPreprocessor" spellChecking="false" />+ <itemData name="Label" defStyleNum="dsAnnotation" spellChecking="false" />++ <!-- Colors -->+ <itemData name="Silver" defStyleNum="dsNormal" color="silver" />+ <itemData name="Gray" defStyleNum="dsNormal" color="gray" />+ <itemData name="Red" defStyleNum="dsNormal" color="red" />+ <itemData name="Maroon" defStyleNum="dsNormal" color="maroon" />+ <itemData name="Yellow" defStyleNum="dsNormal" color="yellow" />+ <itemData name="Olive" defStyleNum="dsNormal" color="olive" />+ <itemData name="Lime" defStyleNum="dsNormal" color="lime" />+ <itemData name="Green" defStyleNum="dsNormal" color="green" />+ <itemData name="Aqua" defStyleNum="dsNormal" color="aqua" />+ <itemData name="Teal" defStyleNum="dsNormal" color="teal" />+ <itemData name="Blue" defStyleNum="dsNormal" color="blue" />+ <itemData name="Navy" defStyleNum="dsNormal" color="navy" />+ <itemData name="Fuchsia" defStyleNum="dsNormal" color="fuchsia" />+ <itemData name="Purple" defStyleNum="dsNormal" color="purple" />+ </itemDatas>+ </highlighting>+ <general>+ <keywords casesensitive="0" />+ </general>+</language>
+ xml/k.xml view
@@ -0,0 +1,424 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY kDateTime1 "(?:\d{4}\.\d\dm|\d{4}\.\d\d\.\d\d(?:|[DT](?:\d*|\d\d:\d\d|\d\d:\d\d:\d\d|\d\d:\d\d:\d\d\.\d*)))">+ <!ENTITY kDateTime2 "\d+D(?:\d*|\d\d:\d\d|\d\d:\d\d:\d\d|\d\d:\d\d:\d\d\.\d*)">+ <!ENTITY kDateTime3 "(?:\d+t|\d\d:\d*|\d\d:\d\d:\d\d(?:|\.\d+))">++ <!ENTITY kNumber1 "[-]?(?:0(?:n|Ne|ne|Nf|nf)|(?:[\d]+\.[\d]*|\.?[\d]+)e[-]?\d+|(?:[\d]+\.[\d]*[ef]?|\.[\d]+[ef]?|[\d]+[ef]))">+ <!ENTITY kNumber2 "[-]?(?:0N[hj]?|[\d]+[ijh]?)">+]>+<language name="k" version="7" kateversion="5.0" section="Scripts" extensions="*.k" license="LGPLv2+" author="James Schmitz (james.schmitz@gmail.com)">+<highlighting>+ <list name="flowcontrol" >+ <item>while</item>+ <item>if</item>+ <item>do</item>+ </list>+ <list name="kkeywords" >+ <item>abs</item>+ <item>acos</item>+ <item>asin</item>+ <item>atan</item>+ <item>avg</item>+ <item>bin</item>+ <item>by</item>+ <item>cos</item>+ <item>delete</item>+ <item>div</item>+ <item>exec</item>+ <item>exit</item>+ <item>exp</item>+ <item>from</item>+ <item>getenv</item>+ <item>i</item>+ <item>in</item>+ <item>insert</item>+ <item>last</item>+ <item>like</item>+ <item>log</item>+ <item>max</item>+ <item>min</item>+ <item>prd</item>+ <item>select</item>+ <item>setenv</item>+ <item>sin</item>+ <item>sqrt</item>+ <item>ss</item>+ <item>sum</item>+ <item>tan</item>+ <item>update</item>+ <item>wavg</item>+ <item>within</item>+ <item>wsum</item>+ <item>xexp</item>+ </list>+ <list name="DotQ">+ <item>.Q.addmonths</item>+ <item>.Q.addr</item>+ <item>.Q.host</item>+ <item>.Q.chk</item>+ <item>.Q.cn</item>+ <item>.Q.dd</item>+ <item>.Q.dpft</item>+ <item>.Q.dsftg</item>+ <item>.Q.def</item>+ <item>.Q.en</item>+ <item>.Q.fc</item>+ <item>.Q.fk</item>+ <item>.Q.fmt</item>+ <item>.Q.foo</item>+ <item>.Q.fs</item>+ <item>.Q.ft</item>+ <item>.Q.fu</item>+ <item>.Q.gc</item>+ <item>.Q.hdpf</item>+ <item>.Q.ind</item>+ <item>.Q.j10</item>+ <item>.Q.x10</item>+ <item>.Q.j12</item>+ <item>.Q.x12</item>+ <item>.Q.k</item>+ <item>.Q.l</item>+ <item>.Q.opt</item>+ <item>.Q.par</item>+ <item>.Q.qp</item>+ <item>.Q.qt</item>+ <item>.Q.s</item>+ <item>.Q.s1</item>+ <item>.Q.ty</item>+ <item>.Q.v</item>+ <item>.Q.V</item>+ <item>.Q.view</item>+ <item>.Q.w</item>+ <item>.Q.M</item>+ <item>.Q.pf</item>+ <item>.Q.pt</item>+ <item>.Q.PD</item>+ <item>.Q.PV</item>+ <item>.Q.pd</item>+ <item>.Q.pv</item>+ <item>.Q.pn</item>+ <item>.Q.bv</item>+ <item>.Q.vp</item>+ <item>.Q.P</item>+ <item>.Q.D</item>+ <item>.Q.u</item>+ </list>+ <list name="Doth" >+ <item>.h.br</item>+ <item>.h.c0</item>+ <item>.h.c1</item>+ <item>.h.cd</item>+ <item>.h.code</item>+ <item>.h.data</item>+ <item>.h.eb</item>+ <item>.h.ec</item>+ <item>.h.ed</item>+ <item>.h.edsn</item>+ <item>.h.es</item>+ <item>.h.ex</item>+ <item>.h.fram</item>+ <item>.h.ha</item>+ <item>.h.hb</item>+ <item>.h.hc</item>+ <item>.h.he</item>+ <item>.h.hn</item>+ <item>.h.hp</item>+ <item>.h.hr</item>+ <item>.h.ht</item>+ <item>.h.hta</item>+ <item>.h.htac</item>+ <item>.h.htc</item>+ <item>.h.html</item>+ <item>.h.http</item>+ <item>.h.hu</item>+ <item>.h.hug</item>+ <item>.h.hy</item>+ <item>.h.iso8601</item>+ <item>.h.jx</item>+ <item>.h.logo</item>+ <item>.h.nbr</item>+ <item>.h.pre</item>+ <item>.h.text</item>+ <item>.h.tx</item>+ <item>.h.ty</item>+ <item>.h.uh</item>+ <item>.h.xd</item>+ <item>.h.xmp</item>+ <item>.h.xs</item>+ <item>.h.xt</item>+ </list>+ <list name="Doto" >+ <item>.o.B0</item>+ <item>.o.C0</item>+ <item>.o.Cols</item>+ <item>.o.Columns</item>+ <item>.o.FG</item>+ <item>.o.Fkey</item>+ <item>.o.Gkey</item>+ <item>.o.Key</item>+ <item>.o.PS</item>+ <item>.o.Special</item>+ <item>.o.Stats</item>+ <item>.o.T</item>+ <item>.o.T0</item>+ <item>.o.TI</item>+ <item>.o.Tables</item>+ <item>.o.Ts</item>+ <item>.o.TypeInfo</item>+ <item>.o.ex</item>+ <item>.o.o</item>+ <item>.o.t</item>+ </list>+ <list name="Dotz" >+ <item>.z.a</item>+ <item>.z.ac</item>+ <item>.z.b</item>+ <item>.z.bm</item>+ <item>.z.c</item>+ <item>.z.exit</item>+ <item>.z.f</item>+ <item>.z.h</item>+ <item>.z.i</item>+ <item>.z.k</item>+ <item>.z.K</item>+ <item>.z.l</item>+ <item>.z.n</item>+ <item>.z.N</item>+ <item>.z.o</item>+ <item>.z.p</item>+ <item>.z.P</item>+ <item>.z.pc</item>+ <item>.z.pg</item>+ <item>.z.ph</item>+ <item>.z.pi</item>+ <item>.z.po</item>+ <item>.z.pp</item>+ <item>.z.ps</item>+ <item>.z.pw</item>+ <item>.z.q</item>+ <item>.z.s</item>+ <item>.z.ts</item>+ <item>.z.u</item>+ <item>.z.vs</item>+ <item>.z.w</item>+ <item>.z.W</item>+ <item>.z.ws</item>+ <item>.z.x</item>+ <item>.z.z</item>+ <item>.z.Z</item>+ <item>.z.t</item>+ <item>.z.T</item>+ <item>.z.d</item>+ <item>.z.D</item>+ <item>.z.zd</item>+ </list>+ <list name="Dotq" >+ <item>.q.aj</item>+ <item>.q.aj0</item>+ <item>.q.all</item>+ <item>.q.and</item>+ <item>.q.any</item>+ <item>.q.asc</item>+ <item>.q.asof</item>+ <item>.q.attr</item>+ <item>.q.avgs</item>+ <item>.q.ceiling</item>+ <item>.q.cols</item>+ <item>.q.cor</item>+ <item>.q.count</item>+ <item>.q.cov</item>+ <item>.q.cross</item>+ <item>.q.csv</item>+ <item>.q.cut</item>+ <item>.q.deltas</item>+ <item>.q.desc</item>+ <item>.q.dev</item>+ <item>.q.differ</item>+ <item>.q.distinct</item>+ <item>.q.each</item>+ <item>.q.ej</item>+ <item>.q.enlist</item>+ <item>.q.eval</item>+ <item>.q.except</item>+ <item>.q.fby</item>+ <item>.q.fills</item>+ <item>.q.first</item>+ <item>.q.fkeys</item>+ <item>.q.flip</item>+ <item>.q.floor</item>+ <item>.q.get</item>+ <item>.q.group</item>+ <item>.q.gtime</item>+ <item>.q.hclose</item>+ <item>.q.hcount</item>+ <item>.q.hdel</item>+ <item>.q.hopen</item>+ <item>.q.hsym</item>+ <item>.q.iasc</item>+ <item>.q.idesc</item>+ <item>.q.ij</item>+ <item>.q.inter</item>+ <item>.q.inv</item>+ <item>.q.key</item>+ <item>.q.keys</item>+ <item>.q.lj</item>+ <item>.q.load</item>+ <item>.q.lower</item>+ <item>.q.lsq</item>+ <item>.q.ltime</item>+ <item>.q.ltrim</item>+ <item>.q.mavg</item>+ <item>.q.maxs</item>+ <item>.q.mcount</item>+ <item>.q.md5</item>+ <item>.q.mdev</item>+ <item>.q.med</item>+ <item>.q.meta</item>+ <item>.q.mins</item>+ <item>.q.mmax</item>+ <item>.q.mmin</item>+ <item>.q.mmu</item>+ <item>.q.mod</item>+ <item>.q.msum</item>+ <item>.q.neg</item>+ <item>.q.next</item>+ <item>.q.not</item>+ <item>.q.null</item>+ <item>.q.or</item>+ <item>.q.over</item>+ <item>.q.parse</item>+ <item>.q.peach</item>+ <item>.q.pj</item>+ <item>.q.plist</item>+ <item>.q.prds</item>+ <item>.q.prev</item>+ <item>.q.prior</item>+ <item>.q.rand</item>+ <item>.q.rank</item>+ <item>.q.ratios</item>+ <item>.q.raze</item>+ <item>.q.read0</item>+ <item>.q.read1</item>+ <item>.q.reciprocal</item>+ <item>.q.reverse</item>+ <item>.q.rload</item>+ <item>.q.rotate</item>+ <item>.q.rsave</item>+ <item>.q.rtrim</item>+ <item>.q.save</item>+ <item>.q.scan</item>+ <item>.q.set</item>+ <item>.q.show</item>+ <item>.q.signum</item>+ <item>.q.ssr</item>+ <item>.q.string</item>+ <item>.q.sublist</item>+ <item>.q.sums</item>+ <item>.q.sv</item>+ <item>.q.system</item>+ <item>.q.tables</item>+ <item>.q.til</item>+ <item>.q.trim</item>+ <item>.q.txf</item>+ <item>.q.type</item>+ <item>.q.uj</item>+ <item>.q.ungroup</item>+ <item>.q.union</item>+ <item>.q.upper</item>+ <item>.q.upsert</item>+ <item>.q.value</item>+ <item>.q.var</item>+ <item>.q.view</item>+ <item>.q.views</item>+ <item>.q.vs</item>+ <item>.q.where</item>+ <item>.q.wj</item>+ <item>.q.wj1</item>+ <item>.q.xasc</item>+ <item>.q.xbar</item>+ <item>.q.xcol</item>+ <item>.q.xcols</item>+ <item>.q.xdesc</item>+ <item>.q.xgroup</item>+ <item>.q.xkey</item>+ <item>.q.xlog</item>+ <item>.q.xprev</item>+ <item>.q.xrank</item>+ </list>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >+ <RegExpr attribute="kSystemCommand" String="^\\[^\s].*" context="#stay" column="0" />+ <DetectChar attribute="String" context="string" char=""" />+ <AnyChar attribute="kSeparators" String="{([|])}" context="#stay" />+ <RegExpr attribute="kHSym" String="`:[\w/:.]*" context="#stay" />+ <RegExpr attribute="kSymbol" String="(`[a-zA-Z\d.][\w:.]*|`|\d[a-zA-Z\d:.]*s)" context="#stay" />+ <keyword attribute="FlowControl" context="#stay" String="flowcontrol" />+ <RegExpr attribute="FlowControl" String="\$(?=\[)" context="#stay" />+ <keyword attribute="kKeyword" context="#stay" String="kkeywords" />+ <keyword attribute="DotQfunctions" context="#stay" String="DotQ" />+ <keyword attribute="Dotzfunctions" context="#stay" String="Dotz" />+ <keyword attribute="Dothfunctions" context="#stay" String="Doth" />+ <keyword attribute="Dotofunctions" context="#stay" String="Doto" />+ <keyword attribute="Dotqfunctions" context="#stay" String="Dotq" />+ <RegExpr attribute="kIdentifier" String="(?:[a-zA-Z][\w.]*|\.[a-zA-Z][\w.]*)" context="#stay" />+ <RegExpr attribute="kBool" String="[01]+b" context="#stay" />+ <RegExpr attribute="kByte" String="0x[0-9a-fA-F]*" context="#stay" />+ <RegExpr attribute="kGuid" String="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" context="#stay" />+ <RegExpr attribute="kDateTime" String="&kDateTime1;|&kDateTime2;|&kDateTime3;" context="#stay" />+ <RegExpr attribute="kNumber" String="&kNumber1;|&kNumber2;" context="#stay" />+ <Detect2Chars attribute="Comment" context="comment" char=" " char1="/" />+ <RegExpr String="^\\[\s]*$" attribute="CommentToEOF" context="commentToEOF" column="0" />+ <RegExpr String="^/[\s]*$" attribute="MultiLineComment" context="multicomment" beginRegion="Comment" column="0" />+ <DetectChar attribute="Comment" context="comment" char="/" firstNonSpace="true" /> + </context>+ <context attribute="String" lineEndContext="#stay" name="string" >+ <DetectChar attribute="String" context="#pop" char=""" />+ </context>+ <context name="comment" attribute="Comment" lineEndContext="#pop" >+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>+ <context name="multicomment" attribute="MultiLineComment" lineEndContext="#stay" >+ <RegExpr String="^\\[\s]*$" attribute="MultiLineComment" context="#pop" endRegion="Comment" column="0" />+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>+ <context name="commentToEOF" attribute="CommentToEOF" lineEndContext="#stay" >+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" spellChecking="false" defStyleNum="dsNormal" />+ <itemData name="kSystemCommand" spellChecking="false" defStyleNum="dsOthers" />+ <itemData name="kSeparators" defStyleNum="dsNormal" />+ <itemData name="kSymbol" spellChecking="false" defStyleNum="dsOthers" />+ <itemData name="kHSym" spellChecking="false" defStyleNum="dsOthers" />+ <itemData name="FlowControl" defStyleNum="dsKeyword" />+ <itemData name="kKeyword" defStyleNum="dsKeyword" />+ <itemData name="Dothfunctions" defStyleNum="dsKeyword" />+ <itemData name="DotQfunctions" defStyleNum="dsKeyword" />+ <itemData name="Dotzfunctions" defStyleNum="dsKeyword" />+ <itemData name="Dotofunctions" defStyleNum="dsKeyword" />+ <itemData name="Dotqfunctions" defStyleNum="dsKeyword" />+ <itemData name="kIdentifier" spellChecking="false" defStyleNum="dsNormal" />+ <itemData name="kNumber" spellChecking="false" defStyleNum="dsDecVal" />+ <itemData name="kBool" spellChecking="false" defStyleNum="dsBaseN" />+ <itemData name="kGuid" spellChecking="false" defStyleNum="dsBaseN" />+ <itemData name="kByte" spellChecking="false" defStyleNum="dsBaseN" />+ <itemData name="String" spellChecking="false" defStyleNum="dsString" />+ <itemData name="kDateTime" spellChecking="false" defStyleNum="dsOthers" />+ <itemData name="Comment" spellChecking="true" defStyleNum="dsComment" />+ <itemData name="MultiLineComment" spellChecking="true" defStyleNum="dsComment" />+ <itemData name="CommentToEOF" defStyleNum="dsComment" />+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="/" />+ </comments>+ <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="`#'@$"" />+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ xml/logfile.xml view
@@ -0,0 +1,36 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!-- same as logfile-advanced.xml -->+ <!ENTITY critical "crit|critical|fatal|QFATAL">+ <!ENTITY debug "debug|QDEBUG">+ <!ENTITY error "err|error|fail|failure|QCRITICAL">+ <!ENTITY info "info|information|QINFO">+ <!ENTITY warn "warn|warning|QWARN">+ <!ENTITY firstchars "cdefiqw">+ <!ENTITY search "^([^&firstchars;]*+((?!\b(&critical;|&debug;|&error;|&info;|&warn;)\b)[&firstchars;])?)*+">+]>+<language name="Log File (simplified)" section="Other" version="3" kateversion="5.62" extensions="*.log;*.log.*;syslog;syslog.*" priority="-10" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+ <highlighting>++ <contexts>+ <context name="Start" lineEndContext="#stay" attribute="Normal">+ <RegExpr String="&search;\b(&info;)\b.*" attribute="Information" insensitive="1" column="0"/>+ <RegExpr String="&search;\b(&debug;)\b.*" attribute="Debug" insensitive="1" column="0"/>+ <RegExpr String="&search;\b(&warn;)\b.*" attribute="Warning" insensitive="1" column="0"/>+ <RegExpr String="&search;\b(&error;)\b.*" attribute="Error" insensitive="1" column="0"/>+ <RegExpr String="&search;\b(&critical;)\b.*" attribute="Critical" insensitive="1" column="0"/>+ <RegExpr String=".*" attribute="Normal"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal"/>+ <itemData name="Information" defStyleNum="dsPreprocessor"/>+ <itemData name="Warning" defStyleNum="dsInformation"/>+ <itemData name="Error" defStyleNum="dsError" underline="0"/>+ <itemData name="Critical" defStyleNum="dsAlert"/>+ <itemData name="Debug" defStyleNum="dsDataType"/>+ </itemDatas>+ </highlighting>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
xml/markdown.xml view
@@ -94,7 +94,7 @@ <!ENTITY checkbox "\[[ x]\](?=\s)"> ]> -<language name="Markdown" version="31" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">+<language name="Markdown" version="33" kateversion="6.22" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD"> <highlighting> <contexts> <!-- Start of the Markdown document: find metadata or code block -->@@ -367,6 +367,7 @@ <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition --> <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!rhtml-code" String="&fcode;\s*((?:xml\.|js\.)?erb)&end;" insensitive="true" beginRegion="code-block"/>@@ -375,6 +376,9 @@ <RegExpr attribute="Fenced Code" context="#pop!nim-code" String="&fcode;\s*(?:nims?)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!toml-code" String="&fcode;\s*toml&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!ini-code" String="&fcode;\s*ini&end;" insensitive="true" beginRegion="code-block"/>+ <RegExpr attribute="Fenced Code" context="#pop!desktop-code" String="&fcode;\s*desktop&end;" insensitive="true" beginRegion="code-block"/> <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$" beginRegion="code-block"/> </context> <context name="code" attribute="Code" lineEndContext="#stay"> <!-- Unknown language -->@@ -448,7 +452,7 @@ <IncludeRules context="code"/> <IncludeRules context="##JSON" includeAttrib="true"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code">+ <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code" fallthroughContext="Lvl0Text##YAML"> <IncludeRules context="code"/> <IncludeRules context="##YAML" includeAttrib="true"/> </context>@@ -519,6 +523,18 @@ <context attribute="Normal Text" lineEndContext="#stay" name="xml-code"> <IncludeRules context="code"/> <IncludeRules context="##XML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="toml-code">+ <IncludeRules context="code"/>+ <IncludeRules context="##TOML" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ini-code">+ <IncludeRules context="code"/>+ <IncludeRules context="##INI Files" includeAttrib="true"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="desktop-code">+ <IncludeRules context="code"/>+ <IncludeRules context="Normal##.desktop" includeAttrib="true"/> </context> <!-- Common -->
− xml/markdown.xml.patch
@@ -1,23 +0,0 @@-diff --git a/skylighting-core/xml/markdown.xml b/skylighting-core/xml/markdown.xml-index 92831ed..d2975fe 100644---- a/skylighting-core/xml/markdown.xml-+++ b/skylighting-core/xml/markdown.xml-@@ -339,7 +339,6 @@- <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true" beginRegion="code-block"/>- <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true" beginRegion="code-block"/>- <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true" beginRegion="code-block"/>-- <RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true" beginRegion="code-block"/>- <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->- <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true" beginRegion="code-block"/>- <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true" beginRegion="code-block"/>-@@ -456,10 +455,6 @@- <IncludeRules context="code"/>- <IncludeRules context="##R Script" includeAttrib="true"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="raku-code">-- <IncludeRules context="code"/>-- <IncludeRules context="base##Raku" includeAttrib="true"/>-- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">- <IncludeRules context="code"/>- <IncludeRules context="##reStructuredText" includeAttrib="true"/>
+ xml/mermaid.xml view
@@ -0,0 +1,4811 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY mmd_ent_part "([a-zA-Z]+|[0-9]+);">+ <!ENTITY html_ent_part "([a-zA-Z]+|#[0-9]+);">+ <!ENTITY mmd_ent "#&mmd_ent_part;">+ <!ENTITY html_ent "&&html_ent_part;">+ <!ENTITY prefix_mmd_ent_no_ent "#(?!&mmd_ent_part;)">+ <!ENTITY prefix_html_ent_no_ent "&(?!&html_ent_part;)">+ <!ENTITY prefix_ent_no_ent "&prefix_mmd_ent_no_ent;|&prefix_html_ent_no_ent;">++ <!ENTITY prefix_html_tag "<(?=[/a-zA-Z])">+ <!ENTITY prefix_html_tag_no_tag "<(?![/a-zA-Z])">++ <!ENTITY md_syms "$\\*_#<&">+ <!ENTITY md_no_underscore "\B_++\B">+ <!ENTITY md_sym_no_undescore_math_escape "&md_no_underscore;|\$(?!\$)|\\(?=$|[[:alnum:]\s]|\$\$)">+ <!ENTITY md_sym_no_md_no_lt "&md_sym_no_undescore_math_escape;|&prefix_ent_no_ent;">+ <!ENTITY md_sym_no_md "&md_sym_no_md_no_lt;|&prefix_html_tag_no_tag;">+ <!ENTITY md_unescapable_ent "\\(?=&mmd_ent;|&html_ent;)">++ <!ENTITY md_strict_syms "\\*_#<&">+ <!ENTITY md_strict_text "([^&md_strict_syms;]++|&md_no_underscore;|\\(?=$|[[:alnum:]\s])|&prefix_html_ent_no_ent;|&prefix_html_tag_no_tag;)++">++ <!-- '<' is a entity, but ';' in '<' is not an entity part...+ Considers '&' as simple text -->+ <!ENTITY md_mmd_syms "$\\*_#<">+ <!ENTITY md_mmd_no_md "&md_sym_no_undescore_math_escape;|&prefix_mmd_ent_no_ent;|&prefix_html_tag_no_tag;">+++ <!--+ Generic keywords+ -->++ <!ENTITY accessibility "accTitle\s*:|accDescr\s*[:{]">+ <!-- direction is bugged: https://github.com/mermaid-js/mermaid/pull/7009 -->+ <!ENTITY direction "direction(?=\s+(TB|TD|BT|RL|LR))">++ <!--+ Flowchart+ -->++ <!ENTITY flowchart_node_nospecial "&md_sym_no_md;|&md_unescapable_ent;">+ <!ENTITY flowchart_qtext_syms "&md_syms;"">+ <!ENTITY flowchart_qtext_no_md "&flowchart_node_nospecial;|\\(?=")">+ <!ENTITY flowchart_qtext "([^&flowchart_qtext_syms;]++|&flowchart_qtext_no_md;)++">+ <!ENTITY flowchart_mdtext "([^&md_syms;"`]++|&flowchart_node_nospecial;|\\(?=`))++">++ <!ENTITY flowchart_symbol_in_node "&%#$!*_+'\\/?`.,">+ <!ENTITY flowchart_symbol_in_node_no_comma "&%#$!*_+'\\/?`.">+ <!-- click: https://github.com/mermaid-js/mermaid/issues/7023 -->+ <!ENTITY flowchart_kw_no_node "(?!\b(&accessibility;|&direction;|click\b(?![-:&flowchart_symbol_in_node;=~;(){}\[\]|@])|(subgraph|end|linkStyle|style|classDef|class|graph|flowchart)\b))(?)">+ <!ENTITY flowchart_node+ "&flowchart_kw_no_node;([0-9\p{L}_&flowchart_symbol_in_node;]+|-(?![-.])|:(?!::))+">+ <!ENTITY flowchart_node_no_comma+ "&flowchart_kw_no_node;([0-9\p{L}_&flowchart_symbol_in_node_no_comma;]+|-(?![-.])|:(?!::))+">+ <!ENTITY css_class_name "([0-9\p{L}_&"%`\':.#?!$/*+]+|-(?![-.]))+">+ <!-- whitout '{},' -->+ <!ENTITY new_shape_syms "./\;[]()`%#&!$@*=<>?|'":-+">++ <!--+ Sequence Diagram+ -->++ <!ENTITY seq_kw_no_node "(?!&accessibility;|(autonumber|participant|box|end|links?|create|destroy|activate|deactivate|Note|loop|alt|else|opt|par|and|critical|option|break|rect|sequenceDiagram)\b)">+ <!ENTITY seq_node "&seq_kw_no_node;([^-;:#(%<>,\\/]++|-(?![->x)]|[|][\\/]|//|\\\\)|\((?!\))|\\(?![\\|]-)|/(?![/|]-))++">++ <!--+ Class Diagram+ -->++ <!ENTITY class_kw_no_node "(?!&accessibility;|&direction;|(class|namespace|callback|click|link|classDef|cssClass|style|note for|note|classDiagram)\b)">+ <!ENTITY class_node "&class_kw_no_node;([0-9\p{L}_]+|-(?![-])|\.(?!\.))+">+ <!ENTITY class_syms_no_label ";:">++ <!--+ State Diagram+ -->++ <!ENTITY state_kw_no_node "(?!(&accessibility;|&direction;|(state|note|classDef|class|stateDiagram)(?=$|[-\s{}:])))">+ <!ENTITY state_node "&state_kw_no_node;([^-\s{}:%"])[^-\s{}:]*">++ <!--+ Entity Relationship Diagram+ -->++ <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->+ <!-- without direction: https://github.com/mermaid-js/mermaid/pull/7009 -->+ <!ENTITY er_kw "((erDiagram|classDef|style|1|one|many|to|u|zero or (one|more|many)|only one|optionally to)\b|0[+])">+ <!ENTITY er_kw_no_node "(?!(&accessibility;|&direction;|&er_kw;))">+ <!ENTITY er_node "&er_kw_no_node;([\w*]+|-(?![-])|\.(?!\.))+">+ <!ENTITY er_link "[|}][o|]([.][.]|--)[|o][{|]">++ <!--+ User Journey Diagram+ -->++ <!ENTITY journey_kw_no_task "(?!&accessibility;|title(\s|$)|section(\s[^:]|\s?$)|journey\b)">+ <!ENTITY journey_task "&journey_kw_no_task;[^#:;]+">++ <!--+ Gantt Diagram+ -->++ <!ENTITY gantt_kw_no_task "(?!&accessibility;|(title|excludes|weekend|section|dateFormat|axisFormat|tickInterval|weekday|todayMarker)(\s|$)|gantt\b)">+ <!ENTITY gantt_task "&gantt_kw_no_task;[^#:]+">++ <!--+ Quadrant Chart+ -->++ <!ENTITY quadrant_kw "((title|classDef)\b|quadrantChart|quadrant-[1234]|[xy]-axis)">+ <!ENTITY quadrant_kw_no_text "(?!&accessibility;|&quadrant_kw;)">+ <!ENTITY quadrant_invalid_char ";(){}[]<>~:"|^@">+ <!ENTITY quadrant_text "&quadrant_kw_no_text;([^\Q&quadrant_invalid_char;\E%\-qxytc]++|%(?!%)|--(?!>)|-(?!->)|(?!\b&quadrant_kw;)\w++)++">++ <!--+ Requirement Diagram+ -->++ <!ENTITY requirement_kw "(requirementDiagram|functionalRequirement|performanceRequirement|interfaceRequirement|physicalRequirement|designConstraint|requirement|element|type|docref|id|text|risk|verifymethod|Low|Medium|High|Analysis|Inspection|Test|Demonstration|style|classDef|class)\b">+ <!ENTITY requirement_kw_no_item "(?!&accessibility;|&requirement_kw;|&direction;|[^a-zA-Z0-9])">+ <!ENTITY requirement_node_in_node "([^-=,:<>{&md_syms;]++|&md_sym_no_md_no_lt;)++">+ <!ENTITY requirement_node_in_ref "([^-\s=,:<>{&md_syms;]++|&md_sym_no_md_no_lt;)++">+ <!ENTITY requirement_node "&requirement_kw_no_item;&requirement_node_in_node;">+ <!ENTITY requirement_ref "(?![^a-zA-Z0-9])&requirement_node_in_ref;">++ <!--+ Requirement Diagram+ -->++ <!ENTITY zenuml_no_node "(?!(title|as|new|if|else|while|opt|par|try|catch|finally|return)(?=$|[^a-zA-Z0-9(]))">+ <!ENTITY zenuml_node "&zenuml_no_node;(?:[^-:.{}()\s]++|-(?=$|[^>])|\s+(?!as($|\s)))+">++ <!--+ XY Chart+ -->++ <!-- https://github.com/mermaid-js/mermaid/issues/7157 -->+ <!-- '_' and 0-9 are not a word part... At the beginning only -->+ <!ENTITY xy_wend "($|[^_a-z0-9])">+ <!ENTITY xy_no_kw "([ac-gi-km-suwz]|t(?!itle&xy_wend;)|x(?!-axis&xy_wend;)|y(?!-axis&xy_wend;)|b(?!ar&xy_wend;)|l(?!ine&xy_wend;)|h(?!orizontal&xy_wend;)|v(?!ertical&xy_wend;))">+ <!ENTITY xy_text "[-*=+#.&;_\s0-9]*+(&xy_no_kw;[a-z0-9]*+[-*=+#.&;_\s0-9]*+)*+">+ <!ENTITY xy_title "[*=+#.&;\s]*+(((_|&xy_no_kw;)[_a-z]*+|-(?![0-9]))[*=+#.&;\s]*+)*+">++ <!--+ Block Diagram+ -->++ <!ENTITY block_no_kw "(?!block\b|end\b|space\b|columns\s+[0-9]|style\s|classDef\s|class\s)">+ <!ENTITY block_in_node "([^-(){}[<>: #&]+|&prefix_ent_no_ent;)">+ <!ENTITY block_first_ch_node "([^-(){}[<>: #&"]|&prefix_ent_no_ent;)">+ <!ENTITY block_node "(\s*&block_no_kw;&block_first_ch_node;&block_in_node;*+)">++ <!--+ Kanban Diagram+ -->++ <!ENTITY kanban_node "([^\[\](){}@&md_syms;]+|&md_sym_no_md;)++">+ <!ENTITY kanban_qtext "([^\[\]()}@&md_syms;]+|&md_sym_no_md;)++">++ <!--+ Architecture Diagram+ -->++ <!ENTITY archi_id_ch "0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz">++ <!--+ Radar Diagram+ -->++ <!ENTITY radar_id_ch "-0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz">+]>+<!-- Priority greater than Markdown which also uses .mmd -->+<language+ name="Mermaid" section="Scientific" priority="30"+ version="2" kateversion="6.22"+ mimetype="text/vnd.mermaid" extensions="*.mmd;*.mermaid"+ author="Jonathan Poelen (jonathan.poelen@gmail.com)"+ license="MIT"+>+ <!--+ https://mermaid.js.org/syntax/+ https://mermaid.live/edit++ Flowchart (flowchart, graph) based on v11.12+ Sequence diagrams (sequenceDiagram) based on v11.12+ + half arrow and central connection circle: https://github.com/mermaid-js/mermaid/pull/6789+ Class diagrams (classDiagram) based on v11.12+ State diagrams (stateDiagram-v2, stateDiagram) based on v11.12+ Entity Relationship Diagram (erDiagram) based on v11.12+ User Journey Diagram (journey) based on v11.12+ Gantt diagrams (gantt) based on v11.12+ Pie chart diagrams (pie) based on v11.12+ Quadrant Chart (quadrantChart) based on v11.12+ Requirement Diagram (requirementDiagram) based on v11.12+ GitGraph Diagram (gitGraph) based on v11.12+ Mindmap (mindmap) based on v11.12+ Timeline Diagram (timeline) based on v11.12+ ZenUML (zenuml) based on v11.12+ Sankey diagram (sankey) based on v11.12+ XY Chart (xychart) based on v11.12+ Block Diagram (block) based on v11.12+ Packet Diagram (packet) based on v11.12+ Mermaid Kanban Diagram (kanban) based on v11.12+ Architecture Diagram (architecture-beta) based on v11.12+ Radar Diagram (radar-beta) based on v11.12+ Treemap Diagram (treemap-beta) based on v11.12+ -->++ <highlighting>++ <contexts>++ <context name="Normal" attribute="Normal" lineEndContext="Mermaid"+ fallthroughContext="Mermaid">+ <StringDetect String="---" attribute="Comment" context="Frontmatter" column="0"/>+ </context>++ <!-- https://mermaid.js.org/intro/syntax-reference.html#frontmatter-for-diagram-code -->+ <context name="Frontmatter" attribute="Normal" fallthroughContext="Lvl0Text##YAML">+ <StringDetect String="---" attribute="Comment" context="#pop!Mermaid" column="0"/>+ <IncludeRules context="##YAML" includeAttrib="1"/>+ </context>++ <context name="Mermaid" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <WordDetect String="flowchart" attribute="Keyword" context="Flowchart"/>+ <WordDetect String="graph" attribute="Keyword" context="Flowchart"/>+ <WordDetect String="sequenceDiagram" attribute="Keyword" context="SequenceDiag"/>+ <WordDetect String="classDiagram" attribute="Keyword"+ context="ClassDiag!LineErrorExceptSpaces"/>+ <WordDetect String="stateDiagram-v2" attribute="Keyword"+ context="StateDiag!LineErrorExceptSpaces"/>+ <WordDetect String="stateDiagram" attribute="Keyword"+ context="StateDiag!LineErrorExceptSpaces"/>+ <WordDetect String="erDiagram" attribute="Keyword"+ context="erDiag!LineErrorExceptSpaces"/>+ <WordDetect String="journey" attribute="Keyword" context="Journey"/>+ <WordDetect String="gantt" attribute="Keyword" context="Gantt"/>+ <WordDetect String="pie" attribute="Keyword" context="Pie"/>+ <WordDetect String="quadrantChart" attribute="Keyword" context="Quadrant"/>+ <WordDetect String="requirementDiagram" attribute="Keyword" context="Requirement"/>+ <WordDetect String="gitGraph" attribute="Keyword" context="Git"/>+ <WordDetect String="mindmap" attribute="Keyword" context="Mindmap"/>+ <WordDetect String="timeline" attribute="Keyword" context="Timeline"/>+ <WordDetect String="zenuml" attribute="Keyword" context="ZenUML"/>+ <WordDetect String="sankey" attribute="Keyword" context="Sankey"+ additionalDeliminator="""/>+ <WordDetect String="xychart" attribute="Keyword" context="XYChart"/>+ <WordDetect String="block" attribute="Keyword" context="Block"/>+ <WordDetect String="packet" attribute="Keyword" context="Packet"/>+ <WordDetect String="kanban" attribute="Keyword" context="Kanban"/>+ <WordDetect String="architecture-beta" attribute="Keyword" context="Archi"/>+ <WordDetect String="radar-beta" attribute="Keyword" context="Radar"/>+ <WordDetect String="treemap-beta" attribute="Keyword" context="Treemap"+ additionalDeliminator=""'"/>++ <IncludeRules context="Find_Comment"/>+ </context>++ <!--+ @{ Accessibility+ https://mermaid.js.org/config/accessibility.html+ -->+ <context name="Find_Accessibility" attribute="Error">+ <WordDetect String="accTitle" attribute="Keyword" context="accTitle"+ weakDeliminator="!%&()*+,-./<=>?[\\]^{|}~"/>+ <WordDetect String="accDescr" attribute="Keyword" context="accDescr"+ weakDeliminator="!%&()*+,-./<=>?[\\]^|}~"/>+ </context>++ <context name="Find_Accessibility_Insensitive" attribute="Error">+ <WordDetect String="accTitle" attribute="Keyword" context="accTitle" insensitive="1"+ weakDeliminator="!%&()*+,-./<=>?[\\]^{|}~"/>+ <WordDetect String="accDescr" attribute="Keyword" context="accDescr" insensitive="1"+ weakDeliminator="!%&()*+,-./<=>?[\\]^|}~"/>+ </context>++ <context name="accTitle" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String=":" attribute="Keyword Property Separator" context="accTitle_Text"/>+ <DetectSpaces/>+ </context>+ <context name="accTitle_Text" attribute="Text" lineEndContext="#pop#pop">+ </context>++ <context name="accDescr" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"+ context="accDescr_Block" beginRegion="block"/>+ <IncludeRules context="accTitle"/>+ </context>+ <context name="accDescr_Block" attribute="Text">+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"+ endRegion="block"/>+ </context>+ <!--+ @} Accessibility+ -->+++ <!--+ @{ Flowcharts https://mermaid.js.org/syntax/flowchart.html+ -->++ <context name="Flowchart" attribute="Normal" lineEndContext="Flowchart_Body"+ fallthroughContext="Flowchart_Body!LineError">+ <StringDetect String=";" attribute="Symbol Separator" context="Flowchart_Body"/>+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="TB" attribute="Keyword Parameter"/>+ <StringDetect String="TD" attribute="Keyword Parameter"/>+ <StringDetect String="BT" attribute="Keyword Parameter"/>+ <StringDetect String="RL" attribute="Keyword Parameter"/>+ <StringDetect String="LR" attribute="Keyword Parameter"/>+ </context>++ <context name="Flowchart_Body" attribute="Error" fallthroughContext="Flowchart_AfterNode">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Flowchart_Find_MdText"/>+ <IncludeRules context="Flowchart_Find_UnicodeText"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Flowchart_AfterNode!Flowchart_DeclClassName"/>++ <StringDetect String='|' attribute="Error"+ context="Flowchart_LinkPipe!Flowchart_QText"/>++ <StringDetect String=";" attribute="Symbol Separator"/>+ <IncludeRules context="Find_Comment"/>++ <RegExpr String="&flowchart_node;" attribute="Node" context="Flowchart_AfterNode"/>++ <WordDetect String="subgraph" attribute="Keyword" beginRegion="kwblock"/>+ <WordDetect String="end" attribute="Keyword" endRegion="kwblock"/>+ <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>+ <WordDetect String="linkStyle" attribute="Keyword" context="Flowchart_KwLinkStyle"/>+ <WordDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"/>+ <WordDetect String="class" attribute="Keyword" context="Flowchart_KwClass"/>+ <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>+ <WordDetect String="click" attribute="Keyword" context="Flowchart_KwClick"/>++ <IncludeRules context="Find_Accessibility"/>++ <!-- because mermaid... -->+ <StringDetect String="graph" attribute="Error" context="#pop"/>+ <StringDetect String="flowchart" attribute="Error" context="#pop"/>+ </context>++ <!-- :::classname+ ~~~~~~~~~ -->+ <context name="Flowchart_DeclClassName" attribute="Normal"+ lineEndContext="#pop" fallthroughContext="#pop">+ <RegExpr String="&css_class_name;" attribute="Class Name" context="#pop"/>+ </context>++ <context name="Flowchart_AfterNode" attribute="Normal" lineEndContext="#pop">+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <!-- no space for edge id: `A@{}id@==>`+ https://github.com/mermaid-js/mermaid/issues/7032 -->+ <StringDetect String="@" attribute="Node Separator"+ context="#pop!Flowchart_AfterNode_Spaces!Flowchart_NewShape"/>+ <DetectSpaces context="#pop!Flowchart_AfterNode_Spaces"/>+ <IncludeRules context="Flowchart_Find_Link"/>+ <IncludeRules context="Flowchart_Find_Shape"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Flowchart_DeclClassName"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>++ <context name="Flowchart_AfterNode_Spaces" attribute="Normal" lineEndContext="#pop">+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <StringDetect String="& " attribute="Union" context="#pop"/>+ <IncludeRules context="Flowchart_Find_Link"/>+ <!-- Normally no spaces before, but subgraph keyword -->+ <IncludeRules context="Flowchart_Find_Shape"/>+ <!-- Normally any character, but the IDs are no longer referable... -->+ <RegExpr String="[a-zA-F][a-zA-F0-9]*(?=@)" attribute="ID" context="Flowchart_ID"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>+ <context name="Flowchart_ID" attribute="Normal">+ <StringDetect String="@" attribute="ID Separator" context="#pop#pop!Flowchart_LinkOrError"/>+ </context>++ <context name="Flowchart_LinkOrError" attribute="Normal" lineEndContext="#pop">+ <IncludeRules context="Flowchart_Find_Link"/>+ <DetectSpaces attribute="Error" context="#pop"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>++ <context name="Flowchart_Find_Link" attribute="Normal">+ <StringDetect String="--" attribute="Link" context="Flowchart_LinkLine"/>+ <StringDetect String="<--" attribute="Link" context="Flowchart_LinkLine"/>+ <StringDetect String="o--" attribute="Link" context="Flowchart_LinkLine"/>+ <StringDetect String="x--" attribute="Link" context="Flowchart_LinkLine"/>++ <StringDetect String="==" attribute="Link" context="Flowchart_LinkThick"/>+ <StringDetect String="<==" attribute="Link" context="Flowchart_LinkThick"/>+ <StringDetect String="o==" attribute="Link" context="Flowchart_LinkThick"/>+ <StringDetect String="x==" attribute="Link" context="Flowchart_LinkThick"/>++ <StringDetect String="-." attribute="Link" context="Flowchart_LinkDotted"/>+ <StringDetect String="<-." attribute="Link" context="Flowchart_LinkDotted"/>+ <StringDetect String="o-." attribute="Link" context="Flowchart_LinkDotted"/>+ <StringDetect String="x-." attribute="Link" context="Flowchart_LinkDotted"/>++ <StringDetect String="~~~" attribute="Link" context="Flowchart_LinkInvisible"/>++ <AnyChar String="-=~" attribute="Error" context="#pop"/>+ </context>++ <context name="Flowchart_Find_Shape" attribute="Normal">+ <!-- [[...]] -->+ <StringDetect String="[[" attribute="Shape" context="Flowchart_TextNode_End[[]]!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- [(...)] -->+ <StringDetect String="[(" attribute="Shape" context="Flowchart_TextNode_End[()]!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- [/.../] or [/...\] -->+ <StringDetect String="[/" attribute="Shape" context="Flowchart_TextNode_Text[//]!Flowchart_QText"/>+ <!-- [\.../] or [\...\] -->+ <StringDetect String="[\" attribute="Shape" context="Flowchart_TextNode_Text[//]!Flowchart_QText"/>+ <!-- [...] -->+ <StringDetect String="[" attribute="Shape" context="Flowchart_TextNode_End[]!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- (((...))) -->+ <StringDetect String="(((" attribute="Shape" context="Flowchart_TextNode_End((()))!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- ((...)) -->+ <StringDetect String="((" attribute="Shape" context="Flowchart_TextNode_End(())!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- ([...]) -->+ <StringDetect String="([" attribute="Shape" context="Flowchart_TextNode_End([])!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- (...) -->+ <StringDetect String="(" attribute="Shape" context="Flowchart_TextNode_End()!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- {{...}} -->+ <StringDetect String="{{" attribute="Shape" context="Flowchart_TextNode_End{{}}!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- {...} -->+ <StringDetect String="{" attribute="Shape" context="Flowchart_TextNode_End{}!Flowchart_TextNode_Text!Flowchart_QText"/>+ <!-- >...] -->+ <StringDetect String=">" attribute="Shape" context="Flowchart_TextNode_End[]!Flowchart_TextNode_Text!Flowchart_QText"/>+ </context>+++ <!--+ @{ Link: ==>, etc+ -->+ <context name="Flowchart_Find_LinkText_Common" attribute="Link Text">+ <IncludeRules context="EmptyQuotedText"/>+ <StringDetect String='"' attribute="Error"/>+ <IncludeRules context="Find_Comment_InText"/>+ </context>+ <context name="Flowchart_Find_LinkText_Special_Common" attribute="Link Text">+ <IncludeRules context="EmptyQuotedText_ThenPop"/>+ <StringDetect String='"' attribute="Error" context="#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ </context>++ <!-- A - - note - - - B+ A - - note - - - - -x B+ A - - - B+ A - - - - - -x B+ A - - | note | B+ A - - - -x| note | B+ ~~~~~~~~~~~~~~~+ -->+ <context name="Flowchart_LinkLine" attribute="Link"+ lineEndContext="Flowchart_LinkLine_Text!Flowchart_LinkText_Q"+ fallthroughContext="Flowchart_LinkLine_Text!Flowchart_LinkText_Q">+ <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_PipeOrNoLink"/>+ <StringDetect String="-" attribute="Link"+ context="Flowchart_LinkEnd_PipeOrNoLink!Flowchart_LinkLine_End"/>+ </context>+ <context name="Flowchart_LinkLine_End" attribute="Link"+ lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar String="ox>" attribute="Link" context="#pop"/>+ <StringDetect String="-"/>+ </context>+ <!-- A - - note - - - B+ ~~~~~~~~~~~~~+ -->+ <context name="Flowchart_LinkLine_Text" attribute="Link Text"+ fallthroughContext="Flowchart_LinkLine_Text_Special">+ <StringDetect String="--" attribute="Link"+ context="#pop#pop!Flowchart_LinkLine_TextEnd"/>+ <IncludeRules context="Flowchart_Find_LinkText_Common"/>+ <RegExpr String='([^-"&md_syms;]++|&md_sym_no_md;|-(?!-))++(\\(?=--[->xo]))?'+ attribute="Link Text" context="Flowchart_LinkLine_Text_Special"/>+ </context>+ <context name="Flowchart_LinkLine_Text_Special" attribute="Link Text"+ lineEndContext="#pop">+ <StringDetect String="--" attribute="Link"+ context="#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>+ <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>+ <IncludeRules context="Find_Md_Html_LinkLine_ThenPop"/>+ </context>+ <!-- A - - note - - - B+ ~~~~+ -->+ <context name="Flowchart_LinkLine_TextEnd" attribute="Link" lineEndContext="#pop">+ <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>+ <StringDetect String="-" attribute="Link"+ context="Flowchart_LinkEnd_NoLink!Flowchart_LinkLine_End"/>+ <RegExpr String="." attribute="Error" context="#pop#pop"/>+ </context>+++ <!-- A == note === B+ A == note =====x B+ A === B+ A =====x B+ A == | note | B+ A ===x| note | B+ ~~~~~~~~~~~~~~~+ -->+ <!-- === -->+ <context name="Flowchart_LinkThick" attribute="Link"+ lineEndContext="Flowchart_LinkThick_Text!Flowchart_LinkText_Q"+ fallthroughContext="Flowchart_LinkThick_Text!Flowchart_LinkText_Q">+ <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_PipeOrNoLink"/>+ <StringDetect String="=" attribute="Link"+ context="Flowchart_LinkEnd_PipeOrNoLink!Flowchart_LinkThick_End"/>+ </context>+ <context name="Flowchart_LinkThick_End" attribute="Link"+ lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar String="ox>" attribute="Link" context="#pop"/>+ <StringDetect String="="/>+ </context>+ <!-- A == note === B+ ~~~~~~~~~~~+ -->+ <context name="Flowchart_LinkThick_Text" attribute="Link Text"+ fallthroughContext="Flowchart_LinkThick_Text_Special">+ <StringDetect String="==" attribute="Link"+ context="#pop#pop!Flowchart_LinkThick_TextEnd"/>+ <StringDetect String="=" attribute="Error"/>+ <IncludeRules context="Flowchart_Find_LinkText_Common"/>+ <RegExpr String='([^="&md_syms;]++|&md_sym_no_md;|\\(?==))++'+ attribute="Link Text" context="Flowchart_LinkThick_Text_Special"/>+ </context>+ <context name="Flowchart_LinkThick_Text_Special" attribute="Link Text"+ lineEndContext="#pop">+ <StringDetect String="==" attribute="Link"+ context="#pop#pop#pop!Flowchart_LinkThick_TextEnd"/>+ <StringDetect String="=" attribute="Error" context="#pop"/>+ <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>+ <IncludeRules context="Find_Md_Html_LinkThick_ThenPop"/>+ </context>+ <!-- A == note === B+ ~~~+ -->+ <context name="Flowchart_LinkThick_TextEnd" attribute="Link" lineEndContext="#pop">+ <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>+ <StringDetect String="=" attribute="Link"+ context="Flowchart_LinkEnd_NoLink!Flowchart_LinkThick_End"/>+ <RegExpr String="." context="#pop#pop"/>+ </context>+++ <!-- A -. note .- B+ A -. note ....-x B+ A -.- B+ A -....-x B+ A -.- | note | B+ A -....-x| note | B+ ~~~~~~~~~~~~~+ -->+ <context name="Flowchart_LinkDotted" attribute="Link"+ lineEndContext="Flowchart_LinkDotted_Text!Flowchart_LinkText_Q"+ fallthroughContext="Flowchart_LinkDotted_Text!Flowchart_LinkText_Q">+ <RegExpr String="[.]*-[ox>]?" attribute="Link"+ context="Flowchart_LinkEnd_PipeOrNoLink"/>+ </context>+ <!-- -.note.-+ ~~~~~~+ -->+ <context name="Flowchart_LinkDotted_Text" attribute="Link Text"+ fallthroughContext="Flowchart_LinkDotted_Text_Special">+ <StringDetect String="." context="#pop#pop!Flowchart_LinkDotted_TextEnd" lookAhead="1"/>+ <IncludeRules context="Flowchart_Find_LinkText_Common"/>+ <RegExpr String='([^."&md_syms;]++|&md_sym_no_md;|\\(?=\.))++'+ attribute="Link Text" context="Flowchart_LinkDotted_Text_Special"/>+ </context>+ <context name="Flowchart_LinkDotted_Text_Special" attribute="Link Text"+ lineEndContext="#pop">+ <StringDetect String="." context="#pop#pop#pop!Flowchart_LinkDotted_TextEnd"+ lookAhead="1"/>+ <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>+ <IncludeRules context="Find_Md_Html_LinkDotted_ThenPop"/>+ </context>+ <!-- -.note.-+ ~~+ -->+ <context name="Flowchart_LinkDotted_TextEnd" attribute="Link Text">+ <RegExpr String="[.]*-[ox>]?" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>+ <RegExpr String="[.]+>?|." attribute="Error" context="#pop#pop"/>+ </context>+++ <!-- ~~~ -->+ <context name="Flowchart_LinkInvisible" attribute="Link"+ lineEndContext="Flowchart_LinkEnd_PipeOrNoLink"+ fallthroughContext="Flowchart_LinkEnd_PipeOrNoLink">+ <StringDetect String="~" attribute="Link"/>+ </context>+++ <!-- A ===| note | B+ ~+ -->+ <context name="Flowchart_LinkEnd_PipeOrNoLink" attribute="Error"+ fallthroughContext="#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="|" attribute="Link Text Delimiter"+ context="#pop#pop#pop!Flowchart_LinkPipe!Flowchart_QText"/>+ <IncludeRules context="Flowchart_LinkEnd_NoLink"/>+ </context>++ <!-- A ==x==>-+ ~ Error+ -->+ <context name="Flowchart_LinkEnd_NoLink" attribute="Error"+ fallthroughContext="#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String="--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>+ <StringDetect String="o--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>+ <StringDetect String="x--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>+ <StringDetect String="<--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>++ <StringDetect String="o==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>+ <StringDetect String="x==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>+ <StringDetect String="<==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>++ <StringDetect String="-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>+ <StringDetect String="o-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>+ <StringDetect String="x-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>+ <StringDetect String="<-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>++ <StringDetect String="~~~" attribute="Error" context="#pop#pop!Flowchart_LinkInvisible"/>+ <!-- only one '-' is not a link but a node name -->+ <AnyChar String="=~" attribute="Error" context="#pop#pop#pop"/>++ </context>++ <!-- A ===| note | B+ ~~~~~~+ -->+ <context name="Flowchart_LinkPipe" attribute="Link Text"+ fallthroughContext="Flowchart_LinkPipe_Special">+ <StringDetect String="|" attribute="Link Text Delimiter" context="#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String='([^|{}[]()"&md_syms;]++|&md_sym_no_md;|\\(?=\|))++'+ attribute="Link Text" context="Flowchart_LinkPipe_Special"/>+ </context>+ <context name="Flowchart_LinkPipe_Special" attribute="Link Text"+ lineEndContext="#pop">+ <StringDetect String="|" attribute="Link Text Delimiter" context="#pop#pop"/>+ <IncludeRules context="EmptyQuotedText_ThenPop"/>+ <AnyChar String='{}[]()"' attribute="Error" context="#pop#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <!-- A == note === B (and other link)+ ~+ -->+ <context name="Flowchart_LinkText_Q" attribute="Link Text"+ fallthroughContext="#pop!Flowchart_QText">+ <IncludeRules context="Find_Comment_InText"/>+ </context>+ <!--+ @} Link+ -->+++ <!-- node["..."] node["`...`"]+ ~~~~~ ~~~~~~~+ -->+ <context name="Flowchart_QText" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop">+ <IncludeRules context="EmptyQuotedText"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->+ <IncludeRules context="Flowchart_Find_MdText_ThenPop"/>+ <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>+ </context>++ <!-- node[...]+ ~~~+ Neither Quoted Text nor Markdown Formatting+ -->+ <context name="Flowchart_TextNode_Text" attribute="Text"+ fallthroughContext="Flowchart_TextNode_Text_Special">+ <AnyChar String='{}[]()"|@' context="#pop" lookAhead="1"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String='([^{}\[\]()"|@&md_syms;]++|&flowchart_node_nospecial;|\\(?=\]))++'+ attribute="Text" context="Flowchart_TextNode_Text_Special"/>+ </context>+ <context name="Flowchart_TextNode_Text_Special" attribute="Text"+ lineEndContext="#pop">+ <IncludeRules context="EmptyQuotedText_ThenPop"/>+ <AnyChar String='{}[]()"|@' context="#pop#pop" lookAhead="1"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <!-- node[/.../] (or /...\ or \.../ or \...\)+ ~~~+ Neither Quoted Text nor Markdown Formatting+ -->+ <context name="Flowchart_TextNode_Text[//]" attribute="Text"+ fallthroughContext="Flowchart_TextNode_Text[//]_Special">+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ <IncludeRules context="Find_Comment_InText"/>+ <StringDetect String="\]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <StringDetect String="/]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <RegExpr String='([^{}\[\]()"|@/&md_syms;]++|&flowchart_node_nospecial;|\\(?=[/\\]\])|/(?!\]))++'+ attribute="Text" context="Flowchart_TextNode_Text[//]_Special"/>+ </context>+ <context name="Flowchart_TextNode_Text[//]_Special" attribute="Text"+ lineEndContext="#pop">+ <StringDetect String="\]" attribute="Shape" context="#pop#pop#pop!Flowchart_AfterNode"/>+ <StringDetect String="/]" attribute="Shape" context="#pop#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="EmptyQuotedText_ThenPop"/>+ <AnyChar String='{}[]()"|@' attribute="Error"+ context="#pop#pop#pop!Flowchart_AfterNode"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text[//]_ThenPop"/>+ </context>+++ <!--+ @{ end text node: node[...], node((...)), etc+ ~ ~~+ -->+ <context name="Flowchart_TextNode_EndCommon" attribute="Normal">+ <AnyChar String='{}[]()"|@' attribute="Error" context="#pop#pop!Flowchart_AfterNode"/>+ </context>++ <context name="Flowchart_TextNode_End[]" attribute="Normal">+ <StringDetect String="]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End[[]]" attribute="Normal">+ <StringDetect String="]]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End[()]" attribute="Normal">+ <StringDetect String=")]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End()" attribute="Normal">+ <StringDetect String=")" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End(())" attribute="Normal">+ <StringDetect String="))" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End((()))" attribute="Normal">+ <StringDetect String=")))" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End([])" attribute="Normal">+ <StringDetect String="])" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End{{}}" attribute="Normal">+ <StringDetect String="}}" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>++ <context name="Flowchart_TextNode_End{}" attribute="Normal">+ <StringDetect String="}" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>+ <IncludeRules context="Flowchart_TextNode_EndCommon"/>+ </context>+ <!--+ @} end text node+ -->+++ <!--+ @{ new shape syntax+ -->+ <!-- A@{ shape: manual-file, label: "File Handling"}+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Flowchart_NewShape" attribute="Error">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"+ context="Flowchart_NewShape_Prop"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>+ <context name="Flowchart_NewShape_Prop" attribute="Error">+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->+ <StringDetect String=": " attribute="Property Separator"+ context="Flowchart_NewShape_PropValue"/>+ <LineContinue char=":" attribute="Property Separator"+ context="Flowchart_NewShape_PropValue"/>+ <IncludeRules context="Find_DQuote_NoSpecial"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"/>+ <IncludeRules context="Find_Prop"/>+ </context>+ <context name="Find_Prop" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <DetectIdentifier attribute="Property"/>+ <!-- <StringDetect String="-" attribute="Property"/> -->+ <!-- <Int attribute="Property"/> -->+ <IncludeRules context="Find_Comment"/>+ </context>+ <!-- A@{ prop: value }+ ~~~~~~+ -->+ <context name="Flowchart_NewShape_PropValue" attribute="Error"+ fallthroughContext="Flowchart_NewShape_PropValue_Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Flowchart_NewShape_QEnd!Flowchart_NewShape_PropValue_DQ"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7037 -->+ <StringDetect String="'" attribute="Quoted Text Delimiter"+ context="Flowchart_NewShape_QEnd!Flowchart_NewShape_PropValue_SQ"/>+ <DetectSpaces attribute="Normal"/>+ <Int attribute="Property Number"+ weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>+ <WordDetect String="true" attribute="Property Boolean"+ weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>+ <WordDetect String="false" attribute="Property Boolean"+ weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->+ <AnyChar String="`*#%@|>" attribute="Error"+ context="Flowchart_NewShape_PropValue_Text"/>+ </context>+ <!-- A@{ prop: value }+ ~~~~~~~+ -->+ <context name="Flowchart_NewShape_PropValue_Text" attribute="Text"+ fallthroughContext="Flowchart_NewShape_PropValue_Text_Special">+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop#pop"/>+ <StringDetect String="," attribute="List Separator" context="#pop#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 for '[]^', ': ', ' #' -->+ <RegExpr String='([^"{}\[\]^ :,&md_syms;]++|&flowchart_node_nospecial;|:(?! )| (?=$|[^#]|&mmd_ent;))++'+ attribute="Text" context="Flowchart_NewShape_PropValue_Text_Special"/>+ </context>+ <context name="Flowchart_NewShape_PropValue_Text_Special" attribute="Text"+ lineEndContext="#pop">+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop#pop#pop"/>+ <StringDetect String="," attribute="List Separator" context="#pop#pop#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 for '[]^' -->+ <AnyChar String='"{[]^' attribute="Error" context="#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->+ <StringDetect String=": " attribute="Error" context="#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->+ <StringDetect String=" #" attribute="Error" context="#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_NewShape_ThenPop"/>+ </context>+ <!-- A@{ prop: "value" }+ ~~~~~~~~+ -->+ <context name="Flowchart_NewShape_PropValue_DQ" attribute="Quoted Text">+ <IncludeRules context="Flowchart_UnicodeText"/>+ <StringDetect String="\" attribute="Error"/>+ </context>+ <!-- A@{ prop: 'value' }+ ~~~~~~~~+ mix of Mermaid Text and Yaml+ https://github.com/mermaid-js/mermaid/issues/7044+ -->+ <context name="Flowchart_NewShape_PropValue_SQ" attribute="Text"+ fallthroughContext="Flowchart_NewShape_PropValue_SQ_Special">+ <StringDetect String="''" attribute="Special Text Char"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String="([^'"}&md_syms;]++|&md_sym_no_md;)++"+ attribute="Text" context="Flowchart_NewShape_PropValue_SQ_Special"/>+ </context>+ <context name="Flowchart_NewShape_PropValue_SQ_Special" attribute="Text"+ lineEndContext="#pop">+ <StringDetect String="''" attribute="Special Text Char" context="#pop"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop#pop"/>+ <StringDetect String="}" attribute="Error" context="#pop#pop#pop#pop#pop#pop"/>+ <StringDetect String='"' attribute="Error" context="#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_NewShapeSQ_ThenPop"/>+ </context>+ <!-- A@{ prop: 'value' }+ ~+ -->+ <context name="Flowchart_NewShape_QEnd" attribute="Error">+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop#pop"/>+ <StringDetect String="," attribute="List Separator" context="#pop#pop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ </context>+ <!--+ @} new shape syntax+ -->+++ <!--+ @{ direction+ -->+ <context name="Flowchart_KwDirection" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop!FakeComment">+ <DetectSpaces/>+ <!-- insensitive except for Flowchart -->+ <StringDetect String="TB" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>+ <StringDetect String="TD" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>+ <StringDetect String="BT" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>+ <StringDetect String="RL" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>+ <StringDetect String="LR" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>+ </context>+ <!--+ @} direction+ -->+++ <!--+ @{ click+ -->+ <!-- click D href "https://www.github.com" "Open this in a new tab" _blank -->+ <context name="Flowchart_KwClick" attribute="Normal" lineEndContext="#pop">+ <DetectSpaces/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <RegExpr String="&flowchart_node;" attribute="Node" context="Flowchart_KwClick_Param"/>+ </context>+ <context name="Flowchart_KwClick_Param" attribute="Normal" lineEndContext="#pop#pop">+ <DetectSpaces/>+ <IncludeRules context="Flowchart_Find_UnicodeText"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <WordDetect String="_self" attribute="Keyword Parameter"/>+ <WordDetect String="_blank" attribute="Keyword Parameter"/>+ <WordDetect String="_parent" attribute="Keyword Parameter"/>+ <WordDetect String="_top" attribute="Keyword Parameter"/>+ <WordDetect String="href" attribute="Keyword Parameter"/>+ <WordDetect String="call" attribute="Keyword Parameter"/>+ <DetectIdentifier/>+ </context>+ <!--+ @} click+ -->+++ <!--+ @{ style, linkStyle, classDef and class+ -->+ <!-- linkStyle 1,2,7 stroke:#ff3,stroke-width:4px,color:red; -->+ <context name="Flowchart_KwLinkStyle" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwLinkStyle_Idx"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <context name="Flowchart_KwLinkStyle_Idx" attribute="Error" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop!Flowchart_CSSProp">+ <DetectSpaces attribute="Normal" context="#pop#pop!Flowchart_CSSProp"/>+ <Int attribute="ID"/>+ <StringDetect String="," attribute="List Separator"/>+ </context>++ <!-- style id1 fill:#f9f,stroke:#333,stroke-width:4px; -->+ <context name="Flowchart_KwStyle" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwStyle_Node"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <!-- https://github.com/mermaid-js/mermaid/issues/7041 -->+ <context name="Flowchart_KwStyle_Node" attribute="Error" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop!Flowchart_CSSProp">+ <RegExpr String="&flowchart_node;" attribute="Node" context="#pop#pop!Flowchart_CSSProp"/>+ </context>++ <!-- classDef firstClassName,secondClassName fill:#f9f,stroke:#333,stroke-width:4px; -->+ <context name="Flowchart_KwClassDef" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwClassDef_Default"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <!-- classDef default fill:#f9f -->+ <context name="Flowchart_KwClassDef_Default" attribute="Error" lineEndContext="#pop#pop"+ fallthroughContext="#pop!Flowchart_KwClassDef_ClassName">+ <StringDetect String="default " attribute="Keyword Parameter"+ context="#pop#pop!Flowchart_CSSProp"/>+ </context>+ <context name="Flowchart_KwClassDef_ClassName" attribute="Error"+ lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Flowchart_CSSProp">+ <DetectSpaces attribute="Normal" context="#pop#pop!Flowchart_CSSProp"/>+ <StringDetect String="," attribute="List Separator"/>+ <RegExpr String="&css_class_name;" attribute="Class Name"/>+ </context>++ <!-- class nodeId1,nodeId2 className; -->+ <context name="Flowchart_KwClass" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwClass_Node"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <context name="Flowchart_KwClass_Node" attribute="Normal" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwClass_ClassName"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <RegExpr String="&flowchart_node_no_comma;" attribute="Node"/>+ </context>+ <!-- https://github.com/mermaid-js/mermaid/issues/7043 -->+ <context name="Flowchart_KwClass_ClassName" attribute="Error"+ lineEndContext="#pop#pop#pop">+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>+ <DetectIdentifier attribute="Class Name"/>+ <RegExpr String="&css_class_name;" attribute="Class Name"/>+ </context>++ <!-- @{ inline CSS -->+ <context name="Flowchart_CSSProp" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="Flowchart_CSSValue">+ <DetectSpaces/>+ <StringDetect String=":" attribute="Style Property Separator"+ context="Flowchart_CSSValue"/>+ <StringDetect String="-" attribute="Style Property"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <StringDetect String="," attribute="Error"/>+ <DetectIdentifier attribute="Style Property"/>+ <StringDetect String="/*" attribute="Comment" context="Flowchart_CSSComment"/>+ </context>+ <context name="Flowchart_CSSValue" attribute="Style Value"+ lineEndContext="#pop#pop">+ <StringDetect String="," attribute="List Separator" context="#pop"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <StringDetect String="\," attribute="Special Text Char"/>+ <DetectIdentifier/>+ <DetectSpaces/>+ <RegExpr String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"+ attribute="Number" context="Flowchart_CSSUnit"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/5498+ conflict with Entity codes:+ https://mermaid.js.org/syntax/flowchart.html#entity-codes-to-escape-characters -->+ <RegExpr String="#[a-zA-Z0-9]{3}([a-zA-Z0-9]([a-zA-Z0-9]{2}([a-zA-Z0-9]{2})?+)?+)?+(?![a-zA-Z0-9]*;)"+ attribute="Style Hexadeximal Color"/>+ <RegExpr String="#[a-zA-Z0-9]+;" attribute="Error" context="#pop#pop"/>+ <StringDetect String="/*" attribute="Comment" context="Flowchart_CSSComment"/>+ </context>+ <context name="Flowchart_CSSUnit" attribute="Normal"+ lineEndContext="#pop#pop#pop" fallthroughContext="#pop">+ <StringDetect String="%" attribute="Style Unit" context="#pop"/>+ <DetectIdentifier attribute="Style Unit" context="#pop"/>+ </context>+ <context name="Flowchart_CSSComment" attribute="Normal" lineEndContext="#pop">+ <AnyChar String=",;" context="#pop" lookAhead="1"/>+ <StringDetect String="*/" attribute="Comment" context="#pop"/>+ <!-- Yes... And that's not the only problem -->+ <StringDetect String=" */" attribute="Error" context="#pop"/>+ </context>+ <!-- @} inline CSS -->+ <!--+ @} style, linkStyle, classDef and class+ -->+++ <!--+ @{ Quoted Text + Markdown Formatting+ -->+ <context name="EmptyQuotedText" attribute="Text" fallthroughContext="#pop">+ <StringDetect String='""' attribute="Comment"/>+ <StringDetect String='"``"' attribute="Comment"/>+ </context>+ <context name="EmptyQuotedText_ThenPop" attribute="Text" fallthroughContext="#pop">+ <StringDetect String='""' attribute="Comment" context="#pop"/>+ <StringDetect String='"``"' attribute="Comment" context="#pop"/>+ </context>++ <!-- "..." -->+ <context name="Flowchart_Find_UnicodeText" attribute="Text" fallthroughContext="#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Flowchart_UnicodeText"/>+ </context>+ <context name="Flowchart_Find_UnicodeText_ThenPop" attribute="Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!Flowchart_UnicodeText"/>+ </context>+ <context name="Flowchart_Find_UnicodeText_ThenPop2" attribute="Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop#pop!Flowchart_UnicodeText"/>+ </context>++ <!-- "..."+ ~~~~ -->+ <context name="Flowchart_UnicodeText" attribute="Quoted Text"+ fallthroughContext="Flowchart_UnicodeText_Special">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String="&flowchart_qtext;" attribute="Quoted Text"+ context="Flowchart_UnicodeText_Special"/>+ </context>+ <context name="Flowchart_UnicodeText_Special" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>+ </context>++ <!-- "`...`" -->+ <context name="Flowchart_Find_MdText" attribute="Text" fallthroughContext="#pop">+ <StringDetect String='"`' attribute="Markdown Text Delimiter"+ context="Flowchart_MdText"/>+ </context>+ <context name="Flowchart_Find_MdText_ThenPop" attribute="Text">+ <StringDetect String='"`' attribute="Markdown Text Delimiter"+ context="#pop!Flowchart_MdText"/>+ </context>++ <!-- "`...`"+ ~~~~~ -->+ <context name="Flowchart_MdText" attribute="Markdown Text"+ fallthroughContext="Flowchart_MdText_Special">+ <StringDetect String='`"' attribute="Markdown Text Delimiter" context="#pop"/>+ <AnyChar String='`"' attribute="Error" context="#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String="&flowchart_mdtext;" attribute="Markdown Text"+ context="Flowchart_MdText_Special"/>+ </context>+ <context name="Flowchart_MdText_Special" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String='`"' attribute="Markdown Text Delimiter" context="#pop#pop"/>+ <AnyChar String='`"' attribute="Error" context="#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Md_ThenPop"/>+ </context>++ <!--+ @{ Html+ -->++ <!-- special parser for HTML, because the quotes do not close the string inside -->++ <!-- A["<tag attr="...">"]+ stop on " (except attribute)+ -->+ <context name="Find_Md_Html_DQ_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_DQ"/>+ </context>++ <context name="Html_DQ" attribute="HTML Tag">+ <StringDetect String="/" context="Html_DQ_Close"/>+ <DetectIdentifier context="Html_DQ_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_DQ_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_DQ_AttrValue"/>+ <IncludeRules context="Html_DQ_Close"/>+ </context>+ <context name="Html_DQ_AttrValue" attribute="HTML Attribute">+ <DetectIdentifier/>+ <StringDetect String='"' context="#pop"/>+ <StringDetect String=">" attribute="Error" context="#pop#pop#pop"/>+ <StringDetect String="/>" attribute="Error" context="#pop#pop#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->+ <IncludeRules context="Find_Comment"/>+ <IncludeRules context="Find_Entities"/>+ </context>+ <context name="Html_DQ_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <StringDetect String='"' attribute="Error" context="#pop#pop"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- html close -->+ <context name="Html_Close_Tag" attribute="HTML Tag">+ <StringDetect String=">" attribute="HTML Tag" context="#pop#pop"/>+ <StringDetect String="/>" attribute="HTML Tag" context="#pop#pop"/>+ </context>+ <context name="Html_Find_Elem" attribute="HTML Tag">+ <DetectIdentifier/>+ <DetectSpaces/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->+ <IncludeRules context="Find_Comment"/>+ </context>++ <!-- A["<tag attr="...">"]+ stop on " (except attribute), newline+ -->+ <context name="Find_Md_Html_DQ_SingleLine_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_DQ_SingleLine"/>+ </context>++ <context name="Html_DQ_SingleLine" attribute="HTML Tag">+ <StringDetect String="/" context="Html_DQ_SingleLine_Close"/>+ <DetectIdentifier context="Html_DQ_SingleLine_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_DQ_SingleLine_Attrs" attribute="HTML Attribute"+ lineEndContext="#pop#pop">+ <StringDetect String='="' context="Html_DQ_SingleLine_AttrValue"/>+ <IncludeRules context="Html_DQ_SingleLine_Close"/>+ </context>+ <context name="Html_DQ_SingleLine_AttrValue" attribute="HTML Attribute"+ lineEndContext="#pop#pop#pop">+ <DetectIdentifier/>+ <StringDetect String='"' context="#pop"/>+ <StringDetect String=">" attribute="Error" context="#pop#pop#pop"/>+ <StringDetect String="/>" attribute="Error" context="#pop#pop#pop"/>+ <IncludeRules context="Find_Entities"/>+ </context>+ <context name="Html_DQ_SingleLine_Close" attribute="HTML Tag" lineEndContext="#pop#pop">+ <IncludeRules context="Html_Close_Tag"/>+ <StringDetect String='"' attribute="Error" context="#pop#pop"/>+ <DetectIdentifier/>+ <DetectSpaces/>+ </context>++ <!-- A[<tag attr="...">]+ stop on " (except attribute), {, }, [, ], (, ), |, @+ -->+ <context name="Find_Md_Html_Text_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Text"/>+ </context>++ <context name="Html_Text" attribute="HTML Tag">+ <StringDetect String="/" context="Html_Text_Close"/>+ <DetectIdentifier context="Html_Text_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_Text_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_Text_AttrValue"/>+ <IncludeRules context="Html_Text_Close"/>+ </context>+ <context name="Html_Text_AttrValue" attribute="HTML Attribute">+ <AnyChar String='{}[]()|@' context="#pop#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_DQ_AttrValue"/>+ </context>+ <context name="Html_Text_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <AnyChar String='{}[]()"|@' context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A[/<tag attr="...">/]+ stop on {, }, [, ], (, ), /], \]+ -->+ <context name="Find_Md_Html_Text[//]_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Text[//]"/>+ </context>++ <context name="Html_Text[//]" attribute="HTML Tag">+ <StringDetect String="/]" context="#pop" lookAhead="1"/>+ <StringDetect String="\]" context="#pop" lookAhead="1"/>+ <StringDetect String="/" context="Html_Text[//]_Close"/>+ <DetectIdentifier context="Html_Text[//]_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_Text[//]_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_Text[//]_AttrValue"/>+ <IncludeRules context="Html_Text[//]_Close"/>+ </context>+ <context name="Html_Text[//]_AttrValue" attribute="HTML Attribute">+ <AnyChar String='{}[]()' context="#pop#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_DQ_AttrValue"/>+ </context>+ <context name="Html_Text[//]_Close" attribute="HTML Tag">+ <StringDetect String="/]" context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Close_Tag"/>+ <StringDetect String="\]" context="#pop#pop" lookAhead="1"/>+ <AnyChar String='{}[]()' context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A["`<tag attr="...">`"]+ stop on {, }, [, ], (, ), `+ -->+ <context name="Find_Md_Html_Md_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Md"/>+ </context>++ <context name="Html_Md" attribute="HTML Tag">+ <StringDetect String="/" context="Html_Md_Close"/>+ <DetectIdentifier context="Html_Md_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_Md_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_Md_AttrValue"/>+ <IncludeRules context="Html_Md_Close"/>+ </context>+ <context name="Html_Md_AttrValue" attribute="HTML Attribute">+ <AnyChar String='{}[]()`' context="#pop#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_DQ_AttrValue"/>+ </context>+ <context name="Html_Md_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <AnyChar String='{}[]()"`' context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A[`<tag attr="...">`]+ stop on `+ -->+ <context name="Find_Md_Html_Backtick_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Backtick"/>+ </context>++ <context name="Html_Backtick" attribute="HTML Tag">+ <StringDetect String="/" context="Html_Backtick_Close"/>+ <DetectIdentifier context="Html_Backtick_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_Backtick_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_Backtick_AttrValue"/>+ <IncludeRules context="Html_Backtick_Close"/>+ </context>+ <context name="Html_Backtick_AttrValue" attribute="HTML Attribute">+ <StringDetect String="`" context="#pop#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_DQ_AttrValue"/>+ </context>+ <context name="Html_Backtick_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <StringDetect String="`" context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A -x B : <tag attr="...">+ stop on newline, ;, :, &+ -->+ <context name="Find_Md_Html_ClassLabel_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_ClassLabel"/>+ </context>++ <context name="Html_ClassLabel" attribute="HTML Tag">+ <StringDetect String="/" context="Html_ClassLabel_Close"/>+ <DetectIdentifier context="Html_ClassLabel_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_ClassLabel_Attrs" attribute="HTML Attribute"+ lineEndContext="#pop#pop">+ <StringDetect String='="' context="Html_ClassLabel_AttrValue"/>+ <IncludeRules context="Html_ClassLabel_Close"/>+ </context>+ <context name="Html_ClassLabel_AttrValue" attribute="HTML Attribute"+ lineEndContext="#pop#pop#pop">+ <DetectIdentifier/>+ <StringDetect String='"' context="#pop"/>+ <AnyChar String="&class_syms_no_label;" context="#pop#pop#pop" lookAhead="1"/>+ </context>+ <context name="Html_ClassLabel_Close" attribute="HTML Tag" lineEndContext="#pop#pop">+ <IncludeRules context="Html_Close_Tag"/>+ <DetectIdentifier/>+ <DetectSpaces/>+ <AnyChar String="&class_syms_no_label;" context="#pop#pop" lookAhead="1"/>+ </context>++ <!-- s1 - -> s2 : <tag attr="...">+ stop on newline, :+ -->+ <context name="Find_Md_Html_StateText_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_StateText"/>+ </context>++ <context name="Html_StateText" attribute="HTML Tag">+ <StringDetect String="/" context="Html_StateText_Close"/>+ <DetectIdentifier context="Html_StateText_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_StateText_Attrs" attribute="HTML Attribute"+ lineEndContext="#pop#pop">+ <StringDetect String='="' context="Html_StateText_AttrValue"/>+ <IncludeRules context="Html_StateText_Close"/>+ </context>+ <context name="Html_StateText_AttrValue" attribute="HTML Attribute"+ lineEndContext="#pop#pop#pop">+ <DetectIdentifier/>+ <StringDetect String='"' context="#pop"/>+ <AnyChar String=":" attribute="Error" context="#pop#pop#pop"/>+ </context>+ <context name="Html_StateText_Close" attribute="HTML Tag" lineEndContext="#pop#pop">+ <IncludeRules context="Html_Close_Tag"/>+ <DetectIdentifier/>+ <DetectSpaces/>+ <AnyChar String=":" attribute="Error" context="#pop#pop"/>+ </context>++ <!-- A@{label: <tag attr="...">}+ stop on " (except attribute), {, }, [, ]+ -->+ <context name="Find_Md_Html_NewShape_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_NewShape"/>+ </context>++ <context name="Html_NewShape" attribute="HTML Tag">+ <StringDetect String="/" context="Html_NewShape_Close"/>+ <DetectIdentifier context="Html_NewShape_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_NewShape_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_NewShape_AttrValue"/>+ <IncludeRules context="Html_NewShape_Close"/>+ </context>+ <context name="Html_NewShape_AttrValue" attribute="HTML Attribute">+ <AnyChar String='{}[]' context="#pop#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_DQ_AttrValue"/>+ </context>+ <context name="Html_NewShape_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <AnyChar String='{}[]"' context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A@{label: '<tag attr="...">'}+ stop on " (except attribute), {, }, [, ], '+ -->+ <context name="Find_Md_Html_NewShapeSQ_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag"+ context="#pop!Html_NewShapeSQ"/>+ </context>++ <context name="Html_NewShapeSQ" attribute="HTML Tag">+ <StringDetect String="/" context="Html_NewShapeSQ_Close"/>+ <DetectIdentifier context="Html_NewShapeSQ_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_NewShapeSQ_Attrs" attribute="HTML Attribute">+ <IncludeRules context="Html_NewShapeSQ_Close"/>+ <IncludeRules context="Find_Entities"/>+ </context>+ <context name="Html_NewShapeSQ_Close" attribute="HTML Tag">+ <IncludeRules context="Html_Close_Tag"/>+ <AnyChar String="{}[]'"" context="#pop#pop" lookAhead="1"/>+ <IncludeRules context="Html_Find_Elem"/>+ </context>++ <!-- A - - <tag attr="..."> - - - B+ stop on - -+ -->+ <context name="Find_Md_Html_LinkLine_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkLine"/>+ </context>++ <context name="Html_LinkLine" attribute="HTML Tag">+ <StringDetect String="/" context="Html_LinkLine_Close"/>+ <DetectIdentifier context="Html_LinkLine_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_LinkLine_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_LinkLine_AttrValue"/>+ <IncludeRules context="Html_LinkLine_Close"/>+ </context>+ <context name="Html_LinkLine_AttrValue" attribute="HTML Attribute">+ <IncludeRules context="Html_DQ_AttrValue"/>+ <StringDetect String="--" attribute="Error"+ context="#pop#pop#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>+ </context>+ <context name="Html_LinkLine_Close" attribute="HTML Tag">+ <IncludeRules context="Html_DQ_Close"/>+ <StringDetect String="--" attribute="Error"+ context="#pop#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>+ </context>++ <!-- A == <tag attr="..."> ==> B+ stop on =+ -->+ <context name="Find_Md_Html_LinkThick_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkThick"/>+ </context>++ <context name="Html_LinkThick" attribute="HTML Tag">+ <StringDetect String="/" context="Html_LinkThick_Close"/>+ <DetectIdentifier context="Html_LinkThick_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_LinkThick_Attrs" attribute="HTML Attribute">+ <IncludeRules context="Html_LinkThick_Close"/>+ </context>+ <context name="Html_LinkThick_Close" attribute="HTML Tag">+ <IncludeRules context="Html_DQ_Close"/>+ <StringDetect String="=" lookAhead="1" context="#pop#pop"/>+ </context>++ <!-- A -. <tag attr="..."> .- B+ stop on .+ -->+ <context name="Find_Md_Html_LinkDotted_ThenPop" attribute="Normal">+ <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkDotted"/>+ </context>++ <context name="Html_LinkDotted" attribute="HTML Tag">+ <StringDetect String="/" context="Html_LinkDotted_Close"/>+ <DetectIdentifier context="Html_LinkDotted_Attrs" attribute="HTML Tag"/>+ </context>+ <context name="Html_LinkDotted_Attrs" attribute="HTML Attribute">+ <StringDetect String='="' context="Html_LinkDotted_AttrValue"/>+ <IncludeRules context="Html_LinkDotted_Close"/>+ </context>+ <context name="Html_LinkDotted_AttrValue" attribute="HTML Attribute">+ <IncludeRules context="Html_DQ_AttrValue"/>+ <StringDetect String="." attribute="Error"+ context="#pop#pop#pop#pop#pop!Flowchart_LinkDotted_TextEnd"/>+ </context>+ <context name="Html_LinkDotted_Close" attribute="HTML Tag">+ <IncludeRules context="Html_DQ_Close"/>+ <StringDetect String="." attribute="Error"+ context="#pop#pop#pop#pop!Flowchart_LinkDotted_TextEnd"/>+ </context>+ <!--+ @} Html+ -->+ <!--+ @} Quoted Text + Markdown Formatting+ -->++ <!--+ @} Flowchart+ -->+++ <!--+ @{ Sequence Diagram+ -->++ <context name="SequenceDiag" attribute="Error" lineEndContext="SequenceDiag_Body">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=";" attribute="Symbol Separator" context="SequenceDiag_Body"/>+ </context>++ <context name="SequenceDiag_Body" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="SequenceDiag_Text"/>++ <RegExpr String="(\(\))?(--?(>>?|[x)]|[|][\\/]|//|\\\\)|<<--?>>|([\\/][|]|//|\\\\)--?)(\(\))?"+ attribute="Link" context="SequenceDiag_AfterNode"/>++ <StringDetect String=";" attribute="Symbol Separator"/>+ <IncludeRules context="Find_Comment"/>++ <AnyChar String="<>+-()#," attribute="Error"/>++ <RegExpr String="&seq_node;" attribute="Node"/>++ <WordDetect String="end" attribute="Keyword" endRegion="kwblock"/>+ <WordDetect String="participant" attribute="Keyword"+ context="SequenceDiag_KwParticipant"/>+ <WordDetect String="box" attribute="Keyword" beginRegion="kwblock"+ context="SequenceDiag_Text!SequenceDiag_Color"/>+ <WordDetect String="link" attribute="Keyword" context="SequenceDiag_KwLink"/>+ <WordDetect String="links" attribute="Keyword" context="SequenceDiag_KwLinks"/>+ <WordDetect String="create" attribute="Keyword" context="SequenceDiag_KwCreate"/>+ <WordDetect String="destroy" attribute="Keyword" context="SequenceDiag_Node"/>+ <WordDetect String="activate" attribute="Keyword" context="SequenceDiag_Node"/>+ <WordDetect String="deactivate" attribute="Keyword" context="SequenceDiag_Node"/>+ <WordDetect String="Note" attribute="Keyword" context="SequenceDiag_KwNote"/>+ <WordDetect String="loop" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="alt" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="opt" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="else" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock" endRegion="kwblock"/>+ <WordDetect String="par" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="and" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock" endRegion="kwblock"/>+ <WordDetect String="critical" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="option" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock" endRegion="kwblock"/>+ <WordDetect String="break" attribute="Keyword" context="SequenceDiag_Text"+ beginRegion="kwblock"/>+ <WordDetect String="rect" attribute="Keyword" beginRegion="kwblock"+ context="SequenceDiag_Text!SequenceDiag_Color"/>+ <WordDetect String="autonumber" attribute="Keyword"/>++ <IncludeRules context="Find_Accessibility"/>++ <!-- because mermaid... -->+ <StringDetect String="sequenceDiagram" attribute="Error" context="#pop"/>+ </context>++ <context name="SequenceDiag_AfterNode" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <AnyChar String="+-" attribute="Keyword" context="#pop"/>+ </context>++ <context name="SequenceDiag_Text" attribute="Text" lineEndContext="#pop">+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <IncludeRules context="SequenceDiag_Find_Text"/>+ </context>+ <context name="SequenceDiag_Find_Text" attribute="Text" lineEndContext="#pop">+ <DetectIdentifier/>+ <DetectSpaces/>+ <Int/>+ <StringDetect String="$$" attribute="Math Delimiter"/>+ <IncludeRules context="Find_Entity"/>+ <StringDetect String="#" attribute="Error"/>+ <IncludeRules context="Find_HTML_br"/>+ </context>++ <!--+ @{ participant+ -->+ <context name="SequenceDiag_KwParticipant" attribute="Node">+ <StringDetect String="@" lookAhead="1" context="SequenceDiag_MaybeYAMLConfig"/>+ <StringDetect String=" as " attribute="Keyword" context="#pop!SequenceDiag_Text"/>+ <IncludeRules context="SequenceDiag_Text"/>+ </context>+ <!--+ @} participant+ -->+++ <!--+ @{ color+ -->+ <context name="SequenceDiag_Color" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces/>+ <StringDetect String="rgb(" attribute="Style Value" context="#pop!SequenceDiag_Rgb"/>+ <StringDetect String="rgba(" attribute="Style Value" context="#pop!SequenceDiag_Rgb"/>+ <DetectIdentifier attribute="Style Value" context="#pop"/>+ </context>++ <!-- box rgb(from hwb(120deg 10% 20%) r g calc(b + 200)) bla bla+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="SequenceDiag_Rgb" attribute="Style Value" lineEndContext="#pop#pop">+ <DetectSpaces/>+ <Int attribute="Number" context="Flowchart_CSSUnit"/>+ <StringDetect String="#" attribute="Error"/>+ <StringDetect String="(" attribute="Style Value" context="SequenceDiag_Rgb"/>+ <StringDetect String=")" attribute="Style Value" context="#pop"/>+ <StringDetect String=";" lookAhead="1" context="#pop"/>+ <DetectIdentifier/>+ </context>+ <!--+ @} color+ -->+++ <!--+ @{ link <actor>: <link-label> @ <link-url>+ -->+ <context name="SequenceDiag_KwLink" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":" attribute="Node Separator"+ context="SequenceDiag_KwLink_Label"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <context name="SequenceDiag_KwLink_Label" attribute="Text" lineEndContext="#pop#pop">+ <StringDetect String="@" attribute="ID Separator"+ context="SequenceDiag_KwLink_URL"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <DetectSpaces/>+ <DetectIdentifier/>+ </context>+ <context name="SequenceDiag_KwLink_URL" attribute="Normal" lineEndContext="#pop#pop#pop">+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>+ </context>+ <!--+ @} link+ -->+++ <!--+ @{ links <actor>: <json-formatted link-name link-url pairs>+ -->+ <context name="SequenceDiag_KwLinks" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":" attribute="Node Separator" context="SequenceDiag_JSON"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <!--+ @} links+ -->+++ <!--+ @{ JSON+ -->+ <!-- only string value -->+ <context name="SequenceDiag_JSON" attribute="Error" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="SequenceDiag_JSON_Str"/>+ <StringDetect String=":" attribute="Property Separator"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ </context>+ <context name="SequenceDiag_JSON_Str" attribute="Quoted Text"+ lineEndContext="#pop#pop#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>+ </context>+ <!--+ @} JSON+ -->+++ <!--+ @{ create participant Carl as dsidisidsid+ -->+ <context name="SequenceDiag_KwCreate" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="SequenceDiag_KwCreate_Node">+ <DetectSpaces/>+ <WordDetect String="actor" attribute="Keyword Parameter"/>+ <WordDetect String="participant" attribute="Keyword Parameter"/>+ </context>+ <context name="SequenceDiag_KwCreate_Node" attribute="Node" lineEndContext="#pop#pop">+ <StringDetect String=" as " attribute="Keyword" context="#pop#pop!SequenceDiag_Text"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <IncludeRules context="SequenceDiag_Find_Text"/>+ </context>+ <!--+ @} create+ -->+++ <!--+ @{ node+ -->+ <context name="SequenceDiag_Node" attribute="Node" lineEndContext="#pop">+ <IncludeRules context="SequenceDiag_Text"/>+ </context>+ <!--+ @} node+ -->+++ <!--+ @{ Note right of John: Text in note+ -->+ <context name="SequenceDiag_KwNote" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="SequenceDiag_KwNote_Actors">+ <DetectSpaces/>+ <WordDetect String="right of" attribute="Keyword Parameter"+ context="SequenceDiag_KwNote_Actors"/>+ <WordDetect String="left of" attribute="Keyword Parameter"+ context="SequenceDiag_KwNote_Actors"/>+ <WordDetect String="over" attribute="Keyword Parameter"+ context="SequenceDiag_KwNote_Actors"/>+ </context>+ <!-- Note right of Alice,John: Text in note+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="SequenceDiag_KwNote_Actors" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":" attribute="Node Separator"+ context="#pop#pop!SequenceDiag_Text"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ </context>+ <!--+ @} Note+ -->+++ <!--+ @{ JSONConfig+ participant Alice@{type: boundary}+ ~~~~~~~~~~~~~~~~~+ -->+ <context name="SequenceDiag_MaybeYAMLConfig" attribute="Normal">+ <RegExpr String="(?<=[^\s])@(?=[^:]*:)" attribute="Node Separator"+ context="SequenceDiag_YAMLConfig"/>+ <StringDetect String="@" context="#pop"/>+ </context>++ <context name="SequenceDiag_YAMLConfig" attribute="Normal">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"+ context="SequenceDiag_YAMLConfig_Prop"/>+ <RegExpr String="." attribute="Error" context="#pop#pop#pop"/>+ </context>+ <!-- YAML with a single property without any special character -->+ <context name="SequenceDiag_YAMLConfig_Prop" attribute="Error">+ <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->+ <StringDetect String=": " attribute="Property Separator"+ context="SequenceDiag_YAMLConfig_PropValue"/>+ <LineContinue char=":" attribute="Property Separator"+ context="SequenceDiag_YAMLConfig_PropValue"/>+ <IncludeRules context="Find_DQuote_NoSpecial"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop#pop"/>+ <IncludeRules context="Find_Prop"/>+ </context>+ <!-- participant Alice@{ type: value }+ ~~~~~~~~+ -->+ <context name="SequenceDiag_YAMLConfig_PropValue" attribute="Error">+ <DetectSpaces attribute="Text"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop#pop#pop"/>+ <DetectIdentifier attribute="Text"/>+ <IncludeRules context="Find_DQuote_NoSpecial"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7037 -->+ <IncludeRules context="Find_SQuote_NoSpecial"/>+ <IncludeRules context="Find_Comment"/>+ </context>+ <!--+ @} JSONConfig+ -->++ <!--+ @} Sequence Diagram+ -->+++ <!--+ @{ Class Diagram+ -->++ <context name="ClassDiag" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="ClassDiag_Class_Mem"/>++ <StringDetect String="--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="<--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="*--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="o--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String=">--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="<|--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="|>--" attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="()--" attribute="Link" context="ClassDiag_RelationType_Right"/>++ <StringDetect String=".." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="<.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="*.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="o.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String=">.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="<|.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="|>.." attribute="Link" context="ClassDiag_RelationType_Right"/>+ <StringDetect String="().." attribute="Link" context="ClassDiag_RelationType_Right"/>++ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="ClassDiag_KwClass_Name!ClassDiag_Annotation"/>++ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>++ <IncludeRules context="Find_Comment"/>+ <IncludeRules context="Flowchart_Find_UnicodeText"/>++ <AnyChar String="<>+()#,;" attribute="Error"/>++ <WordDetect String="class" attribute="Keyword" context="ClassDiag_KwClass"/>+ <IncludeRules context="ClassDiag_Name"/>++ <WordDetect String="namespace" attribute="Keyword"/>++ <!-- TODO Flowchart uses ';' as separator, but should be an error with ClassDiag -->+ <WordDetect String="note for" attribute="Keyword" context="ClassDiag_KwNoteFor"/>+ <WordDetect String="note" attribute="Keyword" context="ClassDiag_KwNote"/>+ <WordDetect String="click" attribute="Keyword" context="Flowchart_KwClick"/>+ <WordDetect String="callback" attribute="Keyword" context="Flowchart_KwClick"/>+ <WordDetect String="link" attribute="Keyword" context="Flowchart_KwClick"/>+ <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>+ <WordDetect String="cssClass" attribute="Keyword" context="ClassDiag_KwCssClass"/>+ <WordDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"/>+ <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>++ <IncludeRules context="Find_Accessibility"/>++ <!-- because mermaid... -->+ <StringDetect String="classDiagram" attribute="Error"/>+ </context>++ <context name="ClassDiag_Name" attribute="Node" lineEndContext="#pop">+ <RegExpr String="&class_node;" attribute="Node"/>+ </context>+++ <!-- A ..> B+ ~~~+ -->+ <context name="ClassDiag_RelationType_Right" attribute="Link" lineEndContext="#pop"+ fallthroughContext="ClassDiag_AfterLink">+ <StringDetect String="<|" attribute="Link" context="ClassDiag_AfterLink"/>+ <AnyChar String="*o<>" attribute="Link" context="ClassDiag_AfterLink"/>+ <StringDetect String="|>" attribute="Link" context="ClassDiag_AfterLink"/>+ <StringDetect String="()" attribute="Link" context="ClassDiag_AfterLink"/>+ </context>++ <!-- A ..> B : LabelText+ ~~~~~~~~~~~~~~+ -->+ <context name="ClassDiag_AfterLink" attribute="Node" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Link Text Separator" context="ClassDiag_LabelText"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop#pop!Flowchart_UnicodeText"/>+ <IncludeRules context="ClassDiag_Name"/>+ </context>+ <!-- A ..> B : LabelText+ ~~~~~~~~~~+ -->+ <context name="ClassDiag_LabelText" attribute="Link Text" lineEndContext="#pop#pop#pop"+ fallthroughContext="ClassDiag_LabelText_Special">+ <RegExpr String='([^&md_mmd_syms;&class_syms_no_label;]++|&md_mmd_no_md;)++'+ attribute="Link Text" context="ClassDiag_LabelText_Special"/>+ </context>+ <context name="ClassDiag_LabelText_Special" attribute="Special Text Char"+ lineEndContext="#pop#pop#pop#pop">+ <AnyChar String="&class_syms_no_label;" attribute="Error" context="#pop#pop#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_ClassLabel_ThenPop"/>+ </context>+++ <!--+ @{ Shape : +draw()+ ~~~~~~~~+ -->+ <context name="ClassDiag_Class_Mem" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="ClassDiag_Class_Field">+ <AnyChar String="+-#~" attribute="Keyword" context="ClassDiag_Class_Field"/>+ <DetectSpaces/>+ </context>+ <context name="ClassDiag_Class_Field" attribute="Member"+ lineEndContext="#pop#pop">+ <StringDetect String=")" attribute="Member"+ context="#pop#pop!ClassDiag_Class_ReturnType"/>+ <IncludeRules context="ClassDiag_Class_Mem_Common"/>+ </context>+ <context name="ClassDiag_Class_ReturnType" attribute="Member Type" lineEndContext="#pop">+ <IncludeRules context="ClassDiag_Class_Mem_Common"/>+ <StringDetect String=":" attribute="Error"/>+ </context>++ <context name="ClassDiag_Class_Mem_Common" attribute="Member" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectIdentifier/>+ <StringDetect String="$$" lookAhead="1"+ context="ClassDiag_Class_Mem_AmbiguousMathClassifier"/>+ <StringDetect String="~" attribute="Generic Type Symbol"/>+ <LineContinue char="$" attribute="Keyword" context="#pop"/>+ <LineContinue char="*" attribute="Keyword" context="#pop"/>+ </context>+ <context name="ClassDiag_Class_Mem_AmbiguousMathClassifier" attribute="Normal">+ <RegExpr String="\$\$(?!$)" attribute="Math Delimiter" context="#pop"/>+ <StringDetect String="$" context="#pop"/>+ </context>+ <!--+ @} Shape : +draw()+ -->+++ <!--+ @{ class Name+ -->+ <context name="ClassDiag_KwClass" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"+ context="ClassDiag_KwClass_Block" beginRegion="block"/>+ <DetectSpaces attribute="Node"/>+ <IncludeRules context="ClassDiag_KwClass_Name"/>+ <StringDetect String="~" attribute="Generic Type Symbol"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="ClassDiag_ClassName"/>+ <StringDetect String="`" attribute="Quoted Text Delimiter"+ context="ClassDiag_KwClass_BacktickName"/>+ <StringDetect String="[" attribute="Shape"+ context="ClassDiag_KwClass_BoxedName"/>+ </context>+ <context name="ClassDiag_KwClass_Name" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectIdentifier attribute="Node"/>+ <Int attribute="Node"/>+ <StringDetect String="--" lookAhead="1" context="#pop"/>+ <StringDetect String=".." lookAhead="1" context="#pop"/>+ <AnyChar String="-." attribute="Node"/>+ </context>+ <!--+ class `Name`+ ~~~~~+ -->+ <context name="ClassDiag_KwClass_BacktickName" attribute="Quoted Text"+ fallthroughContext="ClassDiag_KwClass_BacktickName_Special">+ <StringDetect String="`" attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String="([^`&md_syms;]++|&md_sym_no_md;)++"+ attribute="Quoted Text" context="ClassDiag_KwClass_BacktickName_Special"/>+ </context>+ <context name="ClassDiag_KwClass_BacktickName_Special" attribute="Quoted Text"+ lineEndContext="#pop">+ <StringDetect String="`" attribute="Quoted Text Delimiter" context="#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Backtick_ThenPop"/>+ </context>+ <!--+ class ["Name"]+ ~~~~~~~+ -->+ <context name="ClassDiag_KwClass_BoxedName" attribute="Error" fallthroughContext="#pop">+ <StringDetect String="]" attribute="Shape" context="#pop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="EmptyQuotedText"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="ClassDiag_KwClass_BoxedName_End!Flowchart_UnicodeText"/>+ </context>+ <!--+ class [ "Name" ]+ ~~+ -->+ <context name="ClassDiag_KwClass_BoxedName_End" attribute="Error"+ fallthroughContext="#pop#pop">+ <StringDetect String="]" attribute="Shape" context="#pop#pop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="EmptyQuotedText"/>+ </context>+ <!--+ class Name { ... }+ ~~~~~~+ -->+ <context name="ClassDiag_KwClass_Block" attribute="Member"+ fallthroughContext="ClassDiag_KwClass_Mem">+ <DetectSpaces attribute="Member"/>+ <AnyChar String="+-#~" attribute="Keyword" context="ClassDiag_KwClass_Mem"/>+ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="ClassDiag_KwClass_Mem!ClassDiag_Annotation"/>+ <IncludeRules context="Find_Comment"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop" endRegion="block"/>+ </context>++ <context name="ClassDiag_KwClass_Mem" attribute="Member" lineEndContext="#pop">+ <StringDetect String=")" attribute="Member"+ context="#pop!ClassDiag_KwClass_ReturnType"/>+ <IncludeRules context="ClassDiag_KwClass_ReturnType"/>+ </context>+ <context name="ClassDiag_KwClass_ReturnType" attribute="Member Type"+ lineEndContext="#pop">+ <IncludeRules context="ClassDiag_Class_Mem_Common"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop#pop#pop" endRegion="block"/>+ </context>+ <!--+ @} class+ -->+++ <!--+ @{ note "bla bla"+ -->+ <context name="ClassDiag_KwNote" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>+ <!-- note for className "bla bla" -->+ <context name="ClassDiag_KwNoteFor" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="ClassDiag_KwClass_Name"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>+ <!--+ @} note+ -->+++ <!--+ @{ cssClass "nodeId1,nodeId2" className+ -->+ <context name="ClassDiag_KwCssClass" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="ClassDiag_KwCssClass_Classes"/>+ <DetectSpaces attribute="Normal"/>+ <RegExpr String="&css_class_name;" attribute="Class Name"/>+ </context>+ <context name="ClassDiag_KwCssClass_Classes" attribute="Node">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <StringDetect String="," attribute="Node Separator"/>+ <DetectIdentifier/>+ </context>+ <!--+ @} cssClass+ -->+++ <!-- <<annotation>>+ ~~~~~~~~~~~~+ -->+ <context name="ClassDiag_Annotation" attribute="Annotation" fallthroughContext="#pop">+ <DetectIdentifier attribute="Annotation"/>+ <StringDetect String=">>" attribute="Annotation Delimiter" context="#pop"/>+ </context>+++ <!-- class Name:::classname+ ~~~~~~~~~+ -->+ <context name="ClassDiag_ClassName" attribute="Class Name" lineEndContext="#pop"+ fallthroughContext="ClassDiag_ClassName2">+ <DetectSpaces context="ClassDiag_ClassName2"/>+ </context>+ <context name="ClassDiag_ClassName2" attribute="Class Name" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <DetectIdentifier/>+ <Int/>+ </context>++ <!--+ @} Class Diagram+ -->+++ <!--+ @{ State Diagram+ -->++ <context name="StateDiag" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="ClassDiag_Annotation"/>++ <StringDetect String="-->" attribute="Link"/>+ <StringDetect String="--" attribute="Concurrency"/>++ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="ClassDiag_ClassName"/>+ <StringDetect String=":" attribute="Link Text Separator" context="StateDiag_LinkText"/>++ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>++ <AnyChar String='-"' attribute="Error"/>++ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <StringDetect String="%" attribute="Comment" context="Comment"/>++ <RegExpr String="&state_node;" attribute="Node"/>++ <WordDetect String="note" attribute="Keyword" context="StateDiag_KwNote"/>+ <WordDetect String="state" attribute="Keyword" context="StateDiag_KwState"/>+ <WordDetect String="class" attribute="Keyword" context="StateDiag_KwClass"/>+ <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>+ <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>++ <IncludeRules context="Find_Accessibility"/>++ <!-- because mermaid... -->+ <StringDetect String="stateDiagram" attribute="Error"/>+ </context>++ <!-- s1 - -> s2 : EvScrollLockPressed+ ~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="StateDiag_LinkText" attribute="Link Text" lineEndContext="#pop"+ fallthroughContext="StateDiag_LinkText_Text">+ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <StringDetect String="%%" context="#pop!Comment"/>+ </context>+ <context name="StateDiag_LinkText_Text" attribute="Link Text" lineEndContext="#pop#pop"+ fallthroughContext="StateDiag_LinkText_Text_Special">+ <RegExpr String='([^&md_mmd_syms;;:]++|&md_mmd_no_md;)++'+ attribute="Link Text" context="StateDiag_LinkText_Text_Special"/>+ </context>+ <context name="StateDiag_LinkText_Text_Special" attribute="Special Text Char"+ lineEndContext="#pop#pop#pop">+ <StringDetect String=";" context="#pop#pop#pop" lookAhead="1"/>+ <StringDetect String=":" attribute="Error" context="#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_StateText_ThenPop"/>+ </context>+++ <!--+ @{ state s1 { ... } / state "..." as s1+ -->+ <context name="StateDiag_KwState" attribute="Node"+ fallthroughContext="StateDiag_KwState_State">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' lookAhead="1"+ context="StateDiag_KwState_As!StateDiag_KwState_State_EmptyDQ!Flowchart_Find_UnicodeText!StateDiag_KwState_State_EmptyDQ"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop"/>+ <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop"/>+ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="StateDiag_KwState_StateEnd!ClassDiag_Annotation"/>+ <RegExpr String="&mmd_ent;" attribute="Entity" context="StateDiag_KwState_State"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7105 -->+ <StringDetect String="#" attribute="Error"/>+ </context>+ <!-- state s1 { ... }+ ~~~~+ -->+ <context name="StateDiag_KwState_State" attribute="Node" lineEndContext="#pop#pop">+ <AnyChar String="123456789-"/>+ <DetectIdentifier/>+ <DetectSpaces attribute="Normal" context="#pop!StateDiag_KwState_StateEnd"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop#pop"/>+ <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop#pop"/>+ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="#pop!StateDiag_KwState_StateEnd!ClassDiag_Annotation"/>+ <RegExpr String="<(/[a-z]+|[a-z]+/?)>>" attribute="HTML Tag"/>+ </context>+ <context name="StateDiag_KwState_StateEnd" attribute="Error"+ lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop#pop"/>+ <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop#pop"/>+ <StringDetect String="<<" attribute="Annotation Delimiter"+ context="ClassDiag_Annotation"/>+ </context>+ <!-- state "" "..." "" as s1+ ~~ ~~+ -->+ <context name="StateDiag_KwState_State_EmptyDQ" attribute="Node"+ lineEndContext="#pop" fallthroughContext="#pop">+ <StringDetect String='""' attribute="Comment"/>+ <DetectSpaces attribute="Normal"/>+ </context>+ <!-- state "..." as s1+ ~~~+ -->+ <context name="StateDiag_KwState_As" attribute="Node" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="as" attribute="Keyword Parameter" context="#pop#pop"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <StringDetect String="%" attribute="Error" context="#pop#pop"/>+ </context>+ <!--+ @} state+ -->+++ <!--+ @{ note right of State bla bla end note / note left of State : bla bla+ ~~~~~~~~~ ~~~~~~~~+ -->+ <context name="StateDiag_KwNote" attribute="Node"+ fallthroughContext="StateDiag_KwNote_State!Spaces">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="right of" attribute="Keyword Parameter"+ context="StateDiag_KwNote_State!Spaces"/>+ <WordDetect String="left of" attribute="Keyword Parameter"+ context="StateDiag_KwNote_State!Spaces"/>+ </context>+ <!-- note right of State bla bla end note+ ~~~~~+ -->+ <context name="StateDiag_KwNote_State" attribute="Text"+ fallthroughContext="StateDiag_KwNote_Note">+ <RegExpr String="&state_node;" attribute="Node" context="StateDiag_KwNote_Note"/>+ </context>+ <!-- note right of State bla bla end note / note right of State : bla bla+ ~ ~~+ -->+ <context name="StateDiag_KwNote_Note" attribute="Text"+ fallthroughContext="StateDiag_KwNote_Block">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Text Separator" context="StateDiag_KwNote_Inline"/>+ </context>+ <!-- note right of State bla bla end note+ ~~~~~~~~~~~~~~~~+ -->+ <context name="StateDiag_KwNote_Block" attribute="Text"+ fallthroughContext="StateDiag_KwNote_Block_Special">+ <IncludeRules context="Find_Comment_InText"/>+ <!-- end note: https://github.com/mermaid-js/mermaid/issues/7089 -->+ <RegExpr String='([^&md_syms;e]++|e(?!nd note\b)|&md_sym_no_md;)++'+ attribute="Text" context="StateDiag_KwNote_Block_Special"/>+ </context>+ <context name="StateDiag_KwNote_Block_Special" attribute="Text" lineEndContext="#pop">+ <!-- https://github.com/mermaid-js/mermaid/issues/7089 -->+ <StringDetect String="end note" attribute="Keyword" context="#pop#pop#pop#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>+ </context>+ <!-- note right of State : bla bla+ ~~~~~~~~+ -->+ <context name="StateDiag_KwNote_Inline" attribute="Text"+ lineEndContext="#pop#pop#pop#pop"+ fallthroughContext="StateDiag_KwNote_Inline_Special">+ <RegExpr String='([^&md_syms;:]++|&md_sym_no_md;)++'+ attribute="Text" context="StateDiag_KwNote_Block_Special"/>+ </context>+ <context name="StateDiag_KwNote_Inline_Special" attribute="Text"+ lineEndContext="#pop#pop#pop#pop#pop">+ <StringDetect String=":" attribute="Error" context="#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>+ </context>+ <!--+ @} note+ -->+++ <!-- @{ class nodeId1,nodeId2 className; -->+ <context name="StateDiag_KwClass" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="StateDiag_KwClass_Node"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ </context>+ <context name="StateDiag_KwClass_Node" attribute="Normal" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal" context="Flowchart_KwClass_ClassName"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ <DetectIdentifier attribute="Node"/>+ </context>+ <!-- @} class -->++ <!--+ @} State Diagram+ -->+++ <!--+ @{ Entity Relationship Diagram+ -->++ <context name="erDiag" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String=":::" attribute="Class Name Delimiter" context="erDiag_ClassName"/>+ <StringDetect String=":" attribute="Link Text Separator" context="erDiag_LinkText"/>+ <StringDetect String="[" attribute="Shape" context="erDiag_NameAlias"/>++ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="erDiag_Attr"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="erDiag_QuotedText"/>++ <IncludeRules context="Find_Comment"/>++ <RegExpr String="&er_link;" attribute="Link" insensitive="1"/>+ <RegExpr String="&er_node;" attribute="Node" insensitive="1"/>++ <StringDetect String="one or zero" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="zero or one" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="one or many" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="many(1)" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="1+" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="zero or more" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="zero or many" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="many(0)" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="0+" attribute="Cardinality Text" insensitive="1"/>+ <StringDetect String="only one" attribute="Cardinality Text" insensitive="1"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->+ <StringDetect String="one" attribute="Cardinality Text" insensitive="1"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->+ <AnyChar String="uU1" attribute="Cardinality Text"/>++ <StringDetect String="to" attribute="Relationship Text" insensitive="1"/>+ <StringDetect String="optionally to" attribute="Relationship Text" insensitive="1"/>++ <StringDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"+ insensitive="1"/>+ <StringDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"+ insensitive="1"/>+ <StringDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"+ insensitive="1"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <!-- because mermaid... -->+ <!-- <StringDetect String="erDiagram" attribute="Error"/> -->++ <DetectIdentifier attribute="Error"/>+ </context>++ <!-- AAA ||..|| BBB : bla bla+ ~~~~~~~~+ -->+ <context name="erDiag_LinkText" attribute="Link Text"+ fallthroughContext="erDiag_LinkText_Text">+ <DetectSpaces/>+ <IncludeRules context="Find_Comment"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/5093 -->+ <RegExpr String="&er_kw;" lookAhead="1" context="#pop"/>+ </context>+ <context name="erDiag_LinkText_Text" attribute="Link Text" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <StringDetect String="*" attribute="Special Text Char"/>+ <RegExpr String="([^][<>/\\|`~%&:';.{}$()=+?",@^|#*_\s]+|&md_no_underscore;)+"/>+ <StringDetect String="_" attribute="Special Text Char"/>+ </context>++ <!-- AAA[text] / AAA["text"]+ ~~~~~ ~~~~~~~+ -->+ <context name="erDiag_NameAlias" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="erDiag_NameAlias_UnquotedText">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="erDiag_NameAlias_End!erDiag_QuotedText"/>+ <IncludeRules context="erDiag_LinkText"/>+ </context>+ <!-- AAA[text]+ ~~~~~+ -->+ <context name="erDiag_NameAlias_UnquotedText" attribute="Text" lineEndContext="#pop#pop"+ fallthroughContext="#pop!erDiag_NameAlias_End">+ <StringDetect String="]" attribute="Shape" context="#pop#pop"/>+ <IncludeRules context="erDiag_LinkText_Text"/>+ </context>+ <!-- AAA[ text ]+ ~~+ -->+ <context name="erDiag_NameAlias_End" attribute="Error" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="]" attribute="Shape" context="#pop#pop"/>+ <IncludeRules context="CharErrorAndPop2"/>+ </context>++ <!-- "text"+ ~~~~~+ -->+ <context name="erDiag_QuotedText" attribute="Quoted Text" lineEndContext="#pop"+ fallthroughContext="erDiag_QuotedText_Special">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <StringDetect String="~" attribute="Special Text Char"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String='([^&flowchart_qtext_syms;~]++|&flowchart_qtext_no_md;)++'+ attribute="Quoted Text" context="erDiag_QuotedText_Special"/>+ </context>+ <context name="erDiag_QuotedText_Special" attribute="Quoted Text"+ lineEndContext="#pop#pop">+ <StringDetect String="~" attribute="Special Text Char" context="#pop"/>+ <IncludeRules context="Flowchart_UnicodeText_Special"/>+ </context>++ <!-- Ent:::classname,classname+ ~~~~~~~~~~~~~~~~~~~+ -->+ <context name="erDiag_ClassName" attribute="Class Name" lineEndContext="#pop"+ fallthroughContext="erDiag_ClassName2">+ <DetectSpaces context="erDiag_ClassName2"/>+ <StringDetect String="," attribute="List Separator"/>+ </context>+ <context name="erDiag_ClassName2" attribute="Class Name" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <DetectIdentifier/>+ <AnyChar String="-"/>+ <Int/>+ <StringDetect String="," attribute="List Separator" context="#pop"/>+ <DetectSpaces context="#pop"/>+ </context>++ <!-- @{ Attribute -->+ <!-- Ent { string(ds) productCode PK "Dsds" }+ ~~~~~~~~~~~+ -->+ <context name="erDiag_Attr" attribute="Error">+ <DetectSpaces attribute="Member Type"/>+ <AnyChar String="*-[]()0123456789" attribute="Member Type"+ context="#pop!erDiag_Attr_Type"/>+ <IncludeRules context="erDiag_Attr_NotIdent"/>+ <DetectIdentifier attribute="Member Type" context="#pop!erDiag_Attr_Type"/>+ </context>+ <context name="erDiag_Attr_NotIdent" attribute="Error">+ <IncludeRules context="erDiag_Attr_IdentEnd"/>+ <IncludeRules context="Find_Comment"/>+ <WordDetect String="PK" attribute="Keyword Parameter" context="erDiag_Attr_Key"+ additionalDeliminator='-"' insensitive="1"/>+ <WordDetect String="FK" attribute="Keyword Parameter" context="erDiag_Attr_Key"+ additionalDeliminator='-"' insensitive="1"/>+ </context>+ <context name="erDiag_Attr_IdentEnd" attribute="Error">+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!erDiag_Attr!erDiag_QuotedText"/>+ <StringDetect String=',' attribute="List Separator" context="erDiag_Attr_Key"/>+ </context>+ <!-- Ent { string(ds) productCode PK "Dsds" }+ ~~~~~~~~~~+ -->+ <context name="erDiag_Attr_Type" attribute="Error"+ lineEndContext="#pop!erDiag_Attr_Name"+ fallthroughContext="#pop!erDiag_Attr_Name">+ <DetectSpaces attribute="Member Type" context="#pop!erDiag_Attr_Name"/>+ <DetectIdentifier attribute="Member Type"/>+ <AnyChar String="*-[]()0123456789" attribute="Member Type"/>+ <IncludeRules context="erDiag_Attr_IdentEnd"/>+ </context>+ <!-- Ent { string(ds) productCode PK "Dsds" }+ ~~~~~~~~~~~~+ -->+ <context name="erDiag_Attr_Name" attribute="Error">+ <DetectSpaces attribute="Member"/>+ <AnyChar String="*-[]()0123456789" attribute="Member"+ context="#pop!erDiag_Attr_Name2"/>+ <IncludeRules context="erDiag_Attr_NotIdent"/>+ <DetectIdentifier attribute="Member" context="#pop!erDiag_Attr_Name2"/>+ </context>+ <!-- Ent { string(ds) productCode PK "Dsds" }+ ~~~~~~~~~~~+ -->+ <context name="erDiag_Attr_Name2" attribute="Error"+ lineEndContext="erDiag_Attr_Key"+ fallthroughContext="erDiag_Attr_Key">+ <DetectSpaces attribute="Member" context="erDiag_Attr_Key"/>+ <DetectIdentifier attribute="Member"/>+ <AnyChar String="*-[]()0123456789" attribute="Member"/>+ <IncludeRules context="erDiag_Attr_IdentEnd"/>+ </context>+ <!-- Ent { string(ds) productCode PK "Dsds" }+ ~~~~+ -->+ <context name="erDiag_Attr_Key" attribute="Normal"+ fallthroughContext="#pop#pop!erDiag_Attr">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=',' attribute="List Separator"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop#pop!erDiag_Attr!erDiag_QuotedText"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"+ context="#pop#pop"/>+ <WordDetect String="PK" attribute="Keyword Parameter" additionalDeliminator='-"'+ insensitive="1"/>+ <WordDetect String="FK" attribute="Keyword Parameter" additionalDeliminator='-"'+ insensitive="1"/>+ </context>+ <!-- @} Attribute -->++ <!--+ @} Entity Relationship Diagram+ -->+++ <!--+ @{ User Journey Diagram+ -->++ <context name="Journey" attribute="Normal">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String=":" attribute="Symbol Separator" context="Journey_Task_Score"/>+ <StringDetect String=";" attribute="Error"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <StringDetect String="%" attribute="Comment" context="Comment"/>++ <RegExpr String="&journey_task;" attribute="Node" insensitive="1"+ context="Journey_Task"/>++ <WordDetect String="section" attribute="Keyword" insensitive="1"+ context="Journey_KwSection!SpacesOrNewLine"/>+ <WordDetect String="title" attribute="Keyword" insensitive="1"+ context="Journey_KwTitle!SpacesOrNewLine"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <!-- because mermaid... -->+ <StringDetect String="journey" attribute="Error"/>++ <RegExpr String="&mmd_ent;" attribute="Entity" context="Journey_Task"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7105 -->+ <StringDetect String="#" attribute="Error"/>+ </context>++ <!-- task name : score : text+ ~~~~~~~~~~~~~~~~~~~~~~+ task name is partially consumed if there # or ;+ -->+ <context name="Journey_Task" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":" attribute="Symbol Separator"+ context="#pop!Journey_Task_Score"/>+ <IncludeRules context="Journey_KwSection"/>+ </context>+ <context name="Journey_Task_Score" attribute="Error" lineEndContext="#pop">+ <AnyChar String="-+0123456789." attribute="Number"/>+ <StringDetect String=":" attribute="Symbol Separator" context="Journey_Task_Text"/>+ <DetectSpaces attribute="Normal"/>+ </context>+ <context name="Journey_Task_Text" attribute="ID" lineEndContext="#pop#pop">+ <StringDetect String="," attribute="ID Separator"/>+ <IncludeRules context="Journey_KwSection"/>+ </context>++ <!-- section text+ ~~~~+ -->+ <context name="Journey_KwSection" attribute="Section Text" lineEndContext="#pop">+ <DetectIdentifier/>+ <DetectSpaces/>+ <Int/>+ <IncludeRules context="Find_Entity"/>+ <!-- # -> https://github.com/mermaid-js/mermaid/issues/7105 -->+ <AnyChar String=";:#" attribute="Error"/>+ </context>++ <!-- title text+ ~~~~+ -->+ <context name="Journey_KwTitle" attribute="Text" lineEndContext="#pop">+ <StringDetect String=":" attribute="Text"/>+ <IncludeRules context="Journey_KwSection"/>+ <StringDetect String="<" attribute="Special Text Char"/>+ </context>++ <!--+ @} User Journey Diagram+ -->+++ <!--+ @{ Gantt Diagram+ -->++ <context name="Gantt" attribute="Normal" fallthroughContext="Gantt_Task">+ <DetectSpaces attribute="Normal"/>++ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <AnyChar String="%" attribute="Comment" context="Comment"/>++ <RegExpr String="&gantt_task;" attribute="Node" insensitive="1"+ context="Gantt_Task"/>++ <StringDetect String="section" attribute="Keyword" insensitive="1"+ context="Gantt_KwSection!SpacesOrNewLine"/>+ <StringDetect String="excludes" attribute="Keyword" insensitive="1"+ context="Gantt_KwExcludes!SpacesOrNewLine"/>+ <StringDetect String="axisFormat" attribute="Keyword" insensitive="1"+ context="Text_NoSpecial!SpacesOrNewLine"/>+ <StringDetect String="dateFormat" attribute="Keyword" insensitive="1"+ context="Text_NoSpecial!SpacesOrNewLine"/>+ <StringDetect String="tickInterval" attribute="Keyword" insensitive="1"+ context="Gantt_KwTickInterval!SpacesOrNewLine"/>+ <StringDetect String="weekday" attribute="Keyword" insensitive="1"+ context="Gantt_KwWeekday!SpacesOrNewLine"/>+ <StringDetect String="title" attribute="Keyword" insensitive="1"+ context="Text_Simple!SpacesOrNewLine"/>+ <StringDetect String="weekend" attribute="Keyword" insensitive="1"+ context="Gantt_KwWeekend!SpacesOrNewLine"/>+ <StringDetect String="todayMarker" attribute="Keyword" insensitive="1"+ context="Gantt_KwTodayMarker!SpacesOrNewLine"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <!-- because mermaid... -->+ <StringDetect String="gantt" attribute="Error"/>+ </context>++ <!-- my task : metadata, id, date, date+ ~~~~~~~+ task name is partially consumed if there '#'+ -->+ <context name="Gantt_Task" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":" attribute="Symbol Separator" context="Gantt_Task_Metadata"/>+ <DetectSpaces/>+ <DetectIdentifier/>+ <Int/>+ <IncludeRules context="Find_Entity"/>+ </context>+ <!-- my task : metadata, id, date, date+ ~~~~~~~~~~+ -->+ <context name="Gantt_Task_Metadata" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="Gantt_Task_ID">+ <DetectSpaces/>+ <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date1"/>+ <WordDetect String="active" attribute="Keyword Parameter" context="Gantt_MetaSep"/>+ <WordDetect String="done" attribute="Keyword Parameter" context="Gantt_MetaSep"/>+ <WordDetect String="crit" attribute="Keyword Parameter" context="Gantt_MetaSep"/>+ <WordDetect String="milestone" attribute="Keyword Parameter" context="Gantt_MetaSep"/>+ <WordDetect String="vert" attribute="Keyword Parameter" context="Gantt_MetaSep"/>+ </context>+ <context name="Gantt_MetaSep" attribute="Normal" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop!Gantt_Task_ID">+ <DetectSpaces/>+ <StringDetect String="," attribute="List Separator" context="#pop"/>+ </context>+ <!-- my task : metadata, id, date, date+ ~~~~+ -->+ <context name="Gantt_Task_ID" attribute="Normal" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop!Gantt_Task_Date1">+ <DetectSpaces/>+ <StringDetect String="," attribute="List Separator" context="#pop!Gantt_Task_Date1"/>+ <RegExpr String="[^,]+(?=,[^,]*,[^,]*)" attribute="ID"/>+ </context>+ <!-- my task : metadata, id, date, date+ ~~~~~~+ -->+ <context name="Gantt_Task_Date1" attribute="Normal" lineEndContext="#pop#pop#pop"+ fallthroughContext="Gantt_Task_Date1_Text">+ <DetectSpaces/>+ <WordDetect String="after" attribute="Keyword Parameter" context="Gantt_Task_Date1_Id"+ insensitive="1"/>+ <WordDetect String="until" attribute="Keyword Parameter" context="Gantt_Task_Date2_Id"+ insensitive="1"/>+ </context>+ <context name="Gantt_Task_Date1_Text" attribute="Normal"+ lineEndContext="#pop#pop#pop#pop">+ <Int context="Gantt_Task_Date_Suffix"/>+ <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date2"/>+ </context>+ <context name="Gantt_Task_Date1_Id" attribute="ID" lineEndContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date2"/>+ </context>+ <context name="Gantt_Task_Date_Suffix" attribute="Normal"+ lineEndContext="#pop#pop#pop#pop#pop" fallthroughContext="#pop">+ <StringDetect String="ms" attribute="Style Unit" context="#pop"/>+ <AnyChar String="smhdwMy" attribute="Style Unit" context="#pop"/>+ </context>+ <!-- my task : metadata, id, date, date+ ~~~~~~+ -->+ <context name="Gantt_Task_Date2" attribute="Normal" lineEndContext="#pop#pop#pop#pop#pop"+ fallthroughContext="Gantt_Task_Date2_Text">+ <DetectSpaces/>+ <WordDetect String="until" attribute="Keyword Parameter" insensitive="1"+ context="#pop#pop!Gantt_Task_Date2_Id"/>+ </context>+ <context name="Gantt_Task_Date2_Text" attribute="Normal"+ lineEndContext="#pop#pop#pop#pop#pop#pop">+ <Int context="Gantt_Task_Date_Suffix"/>+ <StringDetect String="," attribute="Error"+ context="#pop#pop#pop#pop#pop#pop!LineError"/>+ </context>+ <context name="Gantt_Task_Date2_Id" attribute="ID" lineEndContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="Error" context="#pop#pop#pop#pop!LineError"/>+ </context>++ <!-- section text+ ~~~~+ -->+ <context name="Gantt_KwSection" attribute="Section Text" lineEndContext="#pop">+ <DetectIdentifier/>+ <DetectSpaces/>+ <Int/>+ <IncludeRules context="Find_Entity"/>+ <IncludeRules context="Find_HTML_br"/>+ </context>++ <!-- excludes date sunday+ ~~~~~~~~~~~+ -->+ <context name="Gantt_KwExcludes" attribute="Normal" lineEndContext="#pop">+ <Int/>+ <AnyChar String="-:/"/>+ <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date1"/>+ <DetectSpaces/>+ <WordDetect String="weekends" attribute="Keyword Parameter" insensitive="1"/>+ <IncludeRules context="Gantt_KwWeekday"/>+ <DetectIdentifier/>+ </context>++ <!-- weekend friday+ ~~~~~~+ -->+ <context name="Gantt_KwWeekend" attribute="Normal" fallthroughContext="#pop">+ <DetectSpaces/>+ <WordDetect String="friday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="saturday" attribute="Keyword Parameter" insensitive="1"/>+ <DetectIdentifier attribute="Error" context="#pop"/>+ </context>++ <!-- weekday monday+ ~~~~~~+ -->+ <context name="Gantt_KwWeekday" attribute="Normal" lineEndContext="#pop">+ <WordDetect String="monday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="tuesday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="wednesday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="thursday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="friday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="saturday" attribute="Keyword Parameter" insensitive="1"/>+ <WordDetect String="sunday" attribute="Keyword Parameter" insensitive="1"/>+ </context>++ <!-- title text+ ~~~~+ -->+ <context name="Gantt_KwTodayMarker" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop!Flowchart_CSSProp">+ <WordDetect String="off" attribute="Keyword Parameter"/>+ </context>++ <!-- tickInterval 1day+ ~~~~+ -->+ <context name="Gantt_KwTickInterval" attribute="Error" lineEndContext="#pop"+ fallthroughContext="#pop!LineError">+ <DetectSpaces attribute="Normal"/>+ <Int context="Gantt_KwTickInterval_Unit" attribute="Number"/>+ </context>+ <context name="Gantt_KwTickInterval_Unit" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <WordDetect String="millisecond" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="second" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="minute" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="hour" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="day" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="week" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ <WordDetect String="month" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>+ </context>++ <!--+ @} Gantt Diagram+ -->+++ <!--+ @{ Pie chart diagrams+ -->++ <context name="Pie" attribute="Normal" lineEndContext="Pie_Body"+ fallthroughContext="Pie_Body">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="showData" attribute="Keyword Parameter" context="Pie_Body"/>+ </context>++ <context name="Pie_Body" attribute="Normal">+ <DetectSpaces attribute="Normal"/>++ <AnyChar String=":" attribute="Node Separator" context="Pie_Number"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <IncludeRules context="Find_Comment"/>++ <AnyChar String="%.+-" attribute="Error"/>++ <StringDetect String="title" attribute="Keyword" context="Text_Simple!SpacesOrError"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <Int/>+ <DetectIdentifier/>+ </context>++ <context name="Pie_Number" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <RegExpr String="[0-9]+([.][0-9]+)?" attribute="Number" context="#pop!LineError!Spaces"/>+ </context>++ <!--+ @} Pie chart diagrams+ -->+++ <!--+ @{ Quadrant Chart+ -->++ <context name="Quadrant" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Quadrant_Point_ClassName"/>+ <StringDetect String=":" attribute="Node Separator" context="Quadrant_Point_XY"/>+ <IncludeRules context="Find_Any_Comment"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Quadrant_Point_Name!Quadrant_Text_Q"/>+ <StringDetect String=";" attribute="Symbol Separator"/>+ <StringDetect String="-->" attribute="Link" context="Quadrant_Text"/>++ <RegExpr String="&quadrant_text;" attribute="Node" insensitive="1"+ context="Quadrant_Point_Name"/>++ <StringDetect String="classDef" attribute="Keyword" context="Quadrant_KwClassDef"+ insensitive="1"/>+ <StringDetect String="quadrantChart" attribute="Error" insensitive="1"/>+ <StringDetect String="quadrant-1" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="quadrant-2" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="quadrant-3" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="quadrant-4" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="x-axis" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="y-axis" attribute="Keyword" context="Quadrant_Text"+ insensitive="1"/>+ <StringDetect String="title" attribute="Keyword" context="Text_Simple" insensitive="1"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>+ </context>++ <context name="Quadrant_Text" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop!Quadrant_Text_U">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!Quadrant_Text_U!Quadrant_Text_Q"/>+ </context>+ <!-- in "..." -->+ <context name="Quadrant_Text_Q" attribute="Quoted Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <StringDetect String="<" attribute="Special Text Char"/>+ <IncludeRules context="Find_Entity"/>+ </context>+ <!-- outside or after "..." -->+ <context name="Quadrant_Text_U" attribute="Text" lineEndContext="#pop">+ <StringDetect String="-->" attribute="Link" context="#pop!Quadrant_Text"/>+ <IncludeRules context="Find_Any_Comment"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>+ <AnyChar String="&quadrant_invalid_char;" attribute="Error"/>+ <RegExpr String="&quadrant_text;" insensitive="1"/>+ <StringDetect String="classDef" attribute="Keyword" insensitive="1"/>+ <StringDetect String="quadrantChart" attribute="Error" insensitive="1"/>+ <StringDetect String="quadrant-1" attribute="Keyword" insensitive="1"/>+ <StringDetect String="quadrant-2" attribute="Keyword" insensitive="1"/>+ <StringDetect String="quadrant-3" attribute="Keyword" insensitive="1"/>+ <StringDetect String="quadrant-4" attribute="Keyword" insensitive="1"/>+ <StringDetect String="x-axis" attribute="Keyword" insensitive="1"/>+ <StringDetect String="y-axis" attribute="Keyword" insensitive="1"/>+ <StringDetect String="title" attribute="Keyword" insensitive="1"/>+ </context>++ <!-- Point A:::class: [0.9, 0.0] radius: 12+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Quadrant_Point_Name" attribute="Node" lineEndContext="#pop">+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="#pop!Quadrant_Point_ClassName"/>+ <StringDetect String=":" attribute="Node Separator" context="#pop!Quadrant_Point_XY"/>+ <IncludeRules context="Quadrant_Text_U"/>+ </context>+ <!-- Point A:::class: [0.9, 0.0] radius: 12+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Quadrant_Point_ClassName" attribute="Error" lineEndContext="#pop">+ <AnyChar String=":[" attribute="Error" context="#pop!Quadrant_Point_XY"/>+ <DetectIdentifier attribute="Class Name" context="Quadrant_Point_AfterClassName"/>+ <StringDetect String=";" attribute="Error" context="#pop"/>+ </context>+ <context name="Quadrant_Point_AfterClassName" attribute="Error" lineEndContext="#pop#pop">+ <StringDetect String=":" attribute="Node Separator"+ context="#pop#pop!Quadrant_Point_XY"/>+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=";" attribute="Error" context="#pop#pop"/>+ <RegExpr String="." attribute="Error" context="#pop#pop!Quadrant_Point_XY"/>+ </context>++ <!-- Point A:::class: [0.9, 0.0] radius: 12+ ~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Quadrant_Point_XY" attribute="Normal" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <Float attribute="Number"/>+ <AnyChar String="01" attribute="Number"/>+ <StringDetect String="[" attribute="Shape"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String="]" attribute="Shape" context="Quadrant_CSS"/>+ <StringDetect String=";" attribute="Error" context="#pop"/>+ </context>++ <!-- classDef class1 color: #109060+ ~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Quadrant_KwClassDef" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <DetectIdentifier attribute="Class Name" context="Quadrant_CSS"/>+ </context>++ <!-- Point A:::class: [0.9, 0.0] radius: 12 / classDef class1 color: #109060+ ~~~~~~~~~~~ ~~~~~~~~~~~~~~~+ -->+ <context name="Quadrant_CSS" attribute="Normal" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="color" attribute="Style Property"/>+ <WordDetect String="radius" attribute="Style Property"/>+ <WordDetect String="stroke-width" attribute="Style Property"/>+ <WordDetect String="stroke-color" attribute="Style Property"/>+ <StringDetect String=":" attribute="Style Property Separator"+ context="Quadrant_CSSValue"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>+ </context>+ <context name="Quadrant_CSSValue" attribute="Error"+ lineEndContext="#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="List Separator" context="#pop"/>+ <Float attribute="Number" context="Flowchart_CSSUnit"/>+ <Int attribute="Number" context="Flowchart_CSSUnit"/>+ <RegExpr String="#[a-zA-Z0-9]{3}([a-zA-Z0-9]{3})?(?!;)"+ attribute="Style Hexadeximal Color"/>+ <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>+ </context>++ <!--+ @} Quadrant Chart+ -->+++ <!--+ @{ Requirement Diagram+ -->++ <context name="Requirement" attribute="Error" lineEndContext="Requirement_Body">+ </context>++ <context name="Requirement_Body" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="Requirement_Element_Mem!SpacesAsError"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Requirement_ClassName!Requirement_ClassName_Special!Requirement_Consume_PartialNode"/>+ <IncludeRules context="Flowchart_Find_UnicodeText"/>+ <StringDetect String="->" attribute="Link"/>+ <StringDetect String="<-" attribute="Link"+ context="Requirement_Link_LeftEnd!Requirement_Relationship"/>+ <StringDetect String="-" attribute="Link"+ context="Requirement_Link_RightEnd!Requirement_Relationship"/>++ <IncludeRules context="Requirement_Find_Comment"/>++ <AnyChar String="*$\#&}<>:%=," attribute="Error"/>+ <StringDetect String="_" attribute="Special Text Char"+ context="Requirement_Node!Md_bi"/>+ <RegExpr String="&requirement_node;" attribute="Node" insensitive="1"+ context="Requirement_Node!Requirement_Node_Special"/>++ <StringDetect String="element" attribute="Keyword" insensitive="1"+ context="Requirement_Node!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="requirement" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="functionalRequirement" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="performanceRequirement" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="interfaceRequirement" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="physicalRequirement" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>+ <StringDetect String="designConstraint" attribute="Keyword" insensitive="1"+ context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>++ <StringDetect String="classDef" attribute="Keyword" insensitive="1"+ context="Flowchart_CSSProp!Requirement_ClassList!Requirement_ClassList_Special!Requirement_Consume_PartialRef"/>+ <StringDetect String="style" attribute="Keyword" insensitive="1"+ context="Flowchart_CSSProp!Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>+ <StringDetect String="class" attribute="Keyword" insensitive="1"+ context="Requirement_ClassList!Requirement_ClassList_Special!Requirement_Consume_PartialRef!Requirement_NoCssSep!Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>++ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <DetectIdentifier attribute="Error"/>+ </context>++ <!-- mermaid bug: comment is not %% -->+ <context name="Requirement_Find_Comment" attribute="Node">+ <StringDetect String="%" attribute="Comment" context="Comment" firstNonSpace="1"/>+ </context>++ <!--+ node:::classname+ node - bla -> node+ node <- bla - node+ ~~+ -->+ <context name="Requirement_Node" attribute="Node" lineEndContext="#pop"+ fallthroughContext="Requirement_Node_Special">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop!Requirement_Element_Mem!SpacesAsError"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Requirement_ClassName!Requirement_ClassName_Special!Requirement_Consume_PartialNode"/>+ <AnyChar String=":=," attribute="Error"/>+ <RegExpr String="&requirement_node_in_node;" attribute="Node" insensitive="1"+ context="Requirement_Node_Special"/>+ </context>++ <context name="Requirement_Node_Special" attribute="Node" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <AnyChar String="{:" lookAhead="1" context="#pop"/>+ <StringDetect String="->" attribute="Link" context="#pop#pop"/>+ <StringDetect String="<-" attribute="Link"+ context="#pop#pop!Requirement_Link_LeftEnd!Requirement_Relationship"/>+ <StringDetect String="-" attribute="Link"+ context="#pop#pop!Requirement_Link_RightEnd!Requirement_Relationship"/>+ <AnyChar String="=,-<>:{" attribute="Error" context="#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ </context>++ <context name="Requirement_Consume_PartialNode" attribute="Normal"+ lineEndContext="#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop2"/>+ <StringDetect String="{" context="#pop#pop" lookAhead="1"/>+ <StringDetect String="_" attribute="Special Text Char" context="#pop#pop!Md_bi"/>+ <AnyChar String="*$\#&}%:=," attribute="Error" context="#pop#pop"/>+ <RegExpr String="&requirement_node;" insensitive="1" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <IncludeRules context="CharErrorAndPop2"/>+ </context>++ <!-- node:::classname+ ~~~~~~~~~+ -->+ <context name="Requirement_ClassName" attribute="Class Name"+ lineEndContext="#pop" fallthroughContext="Requirement_ClassName_Special">+ <StringDetect String="{" lookAhead="1" context="#pop"/>+ <StringDetect String=":" attribute="Error"/>+ <RegExpr String="&requirement_node_in_node;" attribute="Node" insensitive="1"+ context="Requirement_ClassName_Special"/>+ </context>+ <context name="Requirement_ClassName_Special" attribute="Class Name"+ lineEndContext="#pop#pop" fallthroughContext="#pop">+ <IncludeRules context="Requirement_Node_Special"/>+ </context>++ <!-- node - type -> node+ ~~~~~+ -->+ <context name="Requirement_Relationship" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="contains" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="copies" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="derives" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="satisfies" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="verifies" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="refines" attribute="Keyword Parameter" context="#pop"/>+ <WordDetect String="traces" attribute="Keyword Parameter" context="#pop"/>+ </context>++ <!-- node - type -> node+ ~~~+ -->+ <context name="Requirement_Link_RightEnd" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="->" attribute="Link" context="#pop"/>+ <AnyChar String="<-" attribute="Error" context="#pop"/>+ <DetectIdentifier/>+ </context>++ <!-- node <- type - node+ ~~+ -->+ <context name="Requirement_Link_LeftEnd" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="->" attribute="Error" context="#pop"/>+ <StringDetect String="-" attribute="Link" context="#pop"/>+ <StringDetect String="<-" attribute="Error" context="#pop"/>+ <DetectIdentifier/>+ </context>++ <!-- element ... { type: blabla+ ~~~~~~~~~~~~~+ -->+ <context name="Requirement_Element_Mem" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="Requirement_Mem_Text"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"+ context="#pop"/>+ <IncludeRules context="Requirement_Find_Comment"/>+ <WordDetect String="docref" attribute="Property" insensitive="1"/>+ <WordDetect String="type" attribute="Property" insensitive="1"/>+ </context>+ <!-- element ... { type: blabla+ ~~~~~~~+ -->+ <context name="Requirement_Mem_Text" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>+ <StringDetect String="_" attribute="Special Text Char"+ context="Requirement_Mem_InText!Md_bi"/>+ <RegExpr String="&requirement_node;" attribute="Text" insensitive="1"+ context="Requirement_Mem_InText!Requirement_Text_Special"/>+ <DetectIdentifier attribute="Error" context="Requirement_Mem_InText"/>+ </context>+ <context name="Requirement_Mem_InText" attribute="Error"+ lineEndContext="#pop#pop" fallthroughContext="Requirement_Text_Special">+ <AnyChar String="-<>:{=," attribute="Error"/>+ <RegExpr String="&requirement_node_in_node;" attribute="Text" insensitive="1"+ context="Requirement_Text_Special"/>+ </context>+ <context name="Requirement_Text_Special" attribute="Node" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <AnyChar String="=,-<>:{" attribute="Error" context="#pop"/>+ <IncludeRules context="Find_MdText_Syms_ThenPop"/>+ </context>++ <!-- requirement ... {+ ~~~+ -->+ <context name="Requirement_KwRequirement" attribute="Node" lineEndContext="#pop"+ fallthroughContext="Requirement_Node_Special">+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"+ context="#pop!Requirement_Requirement_Mem!SpacesAsError"/>+ <IncludeRules context="Requirement_Node"/>+ </context>++ <!-- requirement ... { type: blabla+ ~~~~~~~~~~~~~+ -->+ <context name="Requirement_Requirement_Mem" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="Requirement_Mem_Text"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"+ context="#pop"/>+ <IncludeRules context="Requirement_Find_Comment"/>+ <WordDetect String="id" attribute="Property" insensitive="1"/>+ <WordDetect String="text" attribute="Property" insensitive="1"/>+ <WordDetect String="risk" attribute="Property" insensitive="1"+ context="Requirement_KwRequirement_Risk!Requirement_Consume_Prop"/>+ <WordDetect String="verifymethod" attribute="Property" insensitive="1"+ context="Requirement_KwRequirement_VerifyMethod!Requirement_Consume_Prop"/>+ </context>+ <!-- requirement ... { type: blabla+ ~+ -->+ <context name="Requirement_Consume_Prop" attribute="Error" fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="#pop"/>+ </context>+ <!-- requirement ... { risk: kw+ ~~~+ -->+ <context name="Requirement_KwRequirement_Risk" attribute="Error"+ lineEndContext="#pop" fallthroughContext="#pop!LineError">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="Low" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ <WordDetect String="Medium" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ <WordDetect String="High" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ </context>+ <!-- requirement ... { verifymethod: kw+ ~~~+ -->+ <context name="Requirement_KwRequirement_VerifyMethod" attribute="Error"+ lineEndContext="#pop" fallthroughContext="#pop!LineError">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="Analysis" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ <WordDetect String="Inspection" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ <WordDetect String="Test" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ <WordDetect String="Demonstration" attribute="Keyword Parameter" insensitive="1"+ context="#pop!LineError"/>+ </context>++ <!-- style className,"className" fill:#314+ ~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Requirement_NodeList" attribute="Node" lineEndContext="#pop#pop"+ fallthroughContext="Requirement_NodeList_Special">+ <StringDetect String="," attribute="List Separator"+ context="Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>+ <IncludeRules context="Requirement_Style_Common"/>+ <RegExpr String="&requirement_node_in_ref;" attribute="Node" insensitive="1"+ context="Requirement_NodeList_Special"/>+ </context>+ <context name="Requirement_Style_Common" attribute="Node">+ <DetectSpaces attribute="Normal" context="Requirement_NodeListOrPop"/>+ <StringDetect String=":" lookAhead="1" context="#pop"/>+ <AnyChar String="=-<>{" attribute="Error"/>+ </context>++ <context name="Requirement_NodeList_Special" attribute="Node"+ lineEndContext="#pop#pop#pop" fallthroughContext="#pop">+ <AnyChar String=":," lookAhead="1" context="#pop"/>+ <IncludeRules context="Requirement_Text_Special"/>+ </context>++ <context name="Requirement_NodeListOrPop" attribute="Node" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop">+ <StringDetect String="," context="#pop" lookAhead="1"/>+ </context>+ <context name="Requirement_QNodeListOrPop" attribute="Node"+ lineEndContext="#pop#pop#pop#pop#pop"+ fallthroughContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="List Separator" context="#pop"/>+ </context>++ <context name="Requirement_Consume_PartialRef" attribute="Normal"+ lineEndContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Requirement_QNodeListOrPop!Flowchart_UnicodeText"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=":" context="#pop#pop" lookAhead="1"/>+ <StringDetect String="_" attribute="Special Text Char" context="#pop#pop!Md_bi"/>+ <AnyChar String="*$\#&}%={" attribute="Error" context="#pop#pop"/>+ <RegExpr String="&requirement_ref;" insensitive="1" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <IncludeRules context="CharErrorAndPop2"/>+ </context>++ <!-- classDef className,"className" fill:#f9f+ ~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="Requirement_ClassList" attribute="Class Name" lineEndContext="#pop#pop"+ fallthroughContext="Requirement_ClassList_Special">+ <StringDetect String="," attribute="List Separator"+ context="Requirement_ClassList_Special!Requirement_Consume_PartialRef"/>+ <IncludeRules context="Requirement_Style_Common"/>+ <RegExpr String="&requirement_node_in_ref;" attribute="Class Name" insensitive="1"+ context="Requirement_ClassList_Special"/>+ </context>++ <context name="Requirement_ClassList_Special" attribute="Class Name"+ lineEndContext="#pop#pop#pop" fallthroughContext="#pop">+ <AnyChar String=":," lookAhead="1" context="#pop"/>+ <IncludeRules context="Requirement_Text_Special"/>+ </context>++ <!-- class : ...+ ~+ -->+ <context name="Requirement_NoCssSep" attribute="Error" lineEndContext="#pop#pop#pop#pop"+ fallthroughContext="#pop">+ <StringDetect String=":" attribute="Error"+ context="Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>+ </context>++ <!--+ @} Requirement Diagram+ -->+++ <!--+ @{ GitGraph Diagram+ -->++ <context name="Git" attribute="Error" lineEndContext="Git_Body"+ fallthroughContext="Git_Body">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator" context="Git_Body"/>+ <WordDetect String="LR" attribute="Keyword Parameter"/>+ <WordDetect String="TB" attribute="Keyword Parameter"/>+ <WordDetect String="BT" attribute="Keyword Parameter"/>+ <IncludeRules context="Find_Any_Comment"/>+ </context>++ <context name="Git_Body" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Any_Comment"/>+ <IncludeRules context="Find_Quote_Simple"/>++ <WordDetect String="commit" attribute="Keyword" context="Git_KwCommit"/>+ <WordDetect String="branch" attribute="Keyword" context="Git_KwBranch"+ additionalDeliminator=""'"/>+ <WordDetect String="switch" attribute="Keyword" context="Git_KwSwitch"+ additionalDeliminator=""'"/>+ <WordDetect String="checkout" attribute="Keyword" context="Git_KwSwitch"+ additionalDeliminator=""'"/>+ <WordDetect String="merge" attribute="Keyword" context="Git_KwMerge"+ additionalDeliminator=""'"/>+ <WordDetect String="cherry-pick" attribute="Keyword" context="Git_KwCherryPick"/>++ <IncludeRules context="Find_Accessibility"/>+ <DetectIdentifier attribute="Error"/>+ </context>++ <!-- commit id:"ash" tag:"v1.0.0" type: REVERSE -->+ <context name="Git_KwCommit" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <IncludeRules context="Find_Any_Comment"/>+ <WordDetect String="id" attribute="Property"/>+ <WordDetect String="tag" attribute="Property"/>+ <WordDetect String="type" attribute="Property"/>+ <WordDetect String="NORMAL" attribute="Keyword Parameter"/>+ <WordDetect String="REVERSE" attribute="Keyword Parameter"/>+ <WordDetect String="HIGHLIGHT" attribute="Keyword Parameter"/>+ <DetectIdentifier/>+ </context>++ <!-- branch"develop" / branch develop order: 3 -->+ <context name="Git_KwBranch" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Git_KwBranchOrder!DQuote_Simple"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter"+ context="Git_KwBranchOrder!SQuote_Simple"/>+ <IncludeRules context="Find_Any_Comment"/>+ <IncludeRules context="Git_Kw_Error"/>+ <IncludeRules context="Git_Value_Error"/>+ <DetectIdentifier context="Git_KwBranchOrder!Git_TextIdent" attribute="Text"/>+ </context>+ <context name="Git_KwBranchOrder" attribute="Error" lineEndContext="#pop#pop"+ fallthroughContext="Git_EndLine">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="order" attribute="Property"/>+ <StringDetect String=":" attribute="Property Separator"/>+ <Int attribute="Keyword Parameter"/>+ <DetectIdentifier attribute="Error"/>+ </context>++ <!-- switch"develop" / checkout develop -->+ <context name="Git_KwSwitch" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <IncludeRules context="Find_Any_Comment"/>+ <IncludeRules context="Git_Kw_Error"/>+ <IncludeRules context="Git_Value_Error"/>+ <DetectIdentifier context="Git_EndLine!Git_TextIdent" attribute="Text"/>+ </context>++ <!-- merge develop id: "my_custom_id" tag: "my_custom_tag" type: REVERSE -->+ <context name="Git_KwMerge" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!Git_KwCommit!DQuote_Simple"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter"+ context="#pop!Git_KwCommit!SQuote_Simple"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <IncludeRules context="Find_Any_Comment"/>+ <WordDetect String="id" attribute="Property" context="#pop!Git_KwCommit"/>+ <WordDetect String="tag" attribute="Property" context="#pop!Git_KwCommit"/>+ <WordDetect String="type" attribute="Property" context="#pop!Git_KwCommit"/>+ <IncludeRules context="Git_Kw_Error"/>+ <WordDetect String="NORMAL" attribute="Keyword Parameter" context="#pop!Git_KwCommit"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="REVERSE" attribute="Keyword Parameter" context="#pop!Git_KwCommit"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="HIGHLIGHT" attribute="Keyword Parameter" context="#pop!Git_KwCommit"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <DetectIdentifier context="#pop!Git_KwCommit!Git_TextIdent" attribute="Text"/>+ </context>++ <!-- cherry-pick id:"MERGE" parent:"B" -->+ <context name="Git_KwCherryPick" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=":" attribute="Property Separator"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <IncludeRules context="Find_Any_Comment"/>+ <WordDetect String="id" attribute="Property"/>+ <WordDetect String="parent" attribute="Property"/>+ <DetectIdentifier/>+ </context>++ <context name="Git_TextIdent" attribute="Error" lineEndContext="#pop#pop">+ <AnyChar String="-" attribute="Text"/>+ <Int attribute="Text"/>+ <DetectIdentifier attribute="Text"/>+ <IncludeRules context="Find_Any_Comment"/>+ <DetectSpaces attribute="Normal" context="#pop"/>+ </context>++ <context name="Git_EndLine" attribute="Error" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Any_Comment"/>+ </context>++ <context name="Git_Kw_Error" attribute="Error">+ <WordDetect String="gitGraph" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="commit" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="branch" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="checkout" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="switch" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="merge" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="cherry-pick" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ </context>+ <context name="Git_Value_Error" attribute="Error">+ <WordDetect String="NORMAL" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="REVERSE" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ <WordDetect String="HIGHLIGHT" attribute="Error"+ additionalDeliminator="@#$`"'" weakDeliminator="-"/>+ </context>++ <!--+ @} GitGraph Diagram+ -->+++ <!--+ @{ Mindmap+ -->++ <context name="Mindmap" attribute="Error" fallthroughContext="Mindmap_Node">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ <StringDetect String=":::" attribute="Class Name Delimiter" context="Mindmap_Class"/>+ <StringDetect String="::icon(" attribute="Annotation Delimiter" context="Mindmap_Icon"/>+ <WordDetect String="mindmap" attribute="Error" insensitive="1"+ additionalDeliminator="@#$`"'" context="Mindmap_Node"/>+ </context>++ <context name="Mindmap_Node" attribute="Node" lineEndContext="#pop"+ fallthroughContext="Mindmap_Node_Special">+ <DetectSpaces/>+ <RegExpr String="([^&md_syms;{}\[\]()]++|&md_sym_no_md;)++" attribute="Node"+ context="Mindmap_Node_Special"/>+ </context>+ <context name="Mindmap_Node_Special" attribute="Text" lineEndContext="#pop">+ <StringDetect String="[" attribute="Shape"+ context="Mindmap_Text[]!Mindmap_End[]!Mindmap_QText"/>+ <StringDetect String="((" attribute="Shape"+ context="Mindmap_Text(())!Mindmap_End(())!Mindmap_QText"/>+ <StringDetect String="))" attribute="Shape"+ context="Mindmap_Text))((!Mindmap_End))((!Mindmap_QText"/>+ <StringDetect String="(" attribute="Shape"+ context="Mindmap_Text()!Mindmap_End()!Mindmap_QText"/>+ <StringDetect String=")" attribute="Shape"+ context="Mindmap_Text)(!Mindmap_End)(!Mindmap_QText"/>+ <StringDetect String="{{" attribute="Shape"+ context="Mindmap_Text{{}}!Mindmap_End{{}}!Mindmap_QText"/>+ <AnyChar String="(){}[]" attribute="Error"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <context name="Mindmap_QText" attribute="Text" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <IncludeRules context="Flowchart_QText"/>+ </context>++ <context name="Mindmap_Text_Common" attribute="Text">+ <AnyChar String="()}]" attribute="Error"/>+ <IncludeRules context="Find_Comment_InText"/>+ <RegExpr String="([^&md_syms;}\]()]++|&md_sym_no_md;)++" attribute="Text"+ context="Mindmap_Text_Common_Special"/>+ </context>+ <context name="Mindmap_Text_Common_Special" attribute="Text">+ <AnyChar String="()}]" lookAhead="1" context="#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <context name="Mindmap_TextEnd_Common" attribute="Text">+ <DetectSpaces attribute="Error" context="Mindmap_TextEnd_SymOrReset"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <Int attribute="Error" context="#pop#pop"/>+ <AnyChar String="(){}[]" context="#pop#pop" lookAhead="1"/>+ </context>+ <context name="Mindmap_TextEnd_SymOrReset" attribute="Text"+ lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <AnyChar String="()}]" context="#pop" lookAhead="1"/>+ </context>+++ <!-- id[I am a square]+ ~~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text[]" attribute="Text">+ <StringDetect String="]" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id["I am a square"]+ ~ -->+ <context name="Mindmap_End[]" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String="]" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>++ <!-- id(I am a rounded square)+ ~~~~~~~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text()" attribute="Text">+ <StringDetect String=")" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id(I am a rounded square)+ ~~~~~~~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_End()" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String=")" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>++ <!-- id((I am a circle))+ ~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text(())" attribute="Text">+ <StringDetect String="))" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id((I am a circle))+ ~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_End(())" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String="))" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>++ <!-- id)I am a cloud(+ ~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text)(" attribute="Text">+ <StringDetect String="(" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id)I am a cloud(+ ~~~~~~~~~~~~~ -->+ <context name="Mindmap_End)(" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String="(" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>++ <!-- id))I am a bang((+ ~~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text))((" attribute="Text">+ <StringDetect String="((" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id))I am a bang((+ ~~~~~~~~~~~~~~ -->+ <context name="Mindmap_End))((" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String="((" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>++ <!-- id{{I am a hexagon}}+ ~~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_Text{{}}" attribute="Text">+ <StringDetect String="}}" attribute="Shape" context="Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_Text_Common"/>+ </context>+ <!-- id{{I am a hexagon}}+ ~~~~~~~~~~~~~~~~~ -->+ <context name="Mindmap_End{{}}" attribute="Text" fallthroughContext="#pop#pop#pop#pop">+ <StringDetect String="}}" attribute="Shape" context="#pop!Mindmap_AfterNode"/>+ <IncludeRules context="Mindmap_TextEnd_Common"/>+ </context>+++ <!-- id[I am a square]+ ~~~ -->+ <context name="Mindmap_AfterNode" attribute="Error" lineEndContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <Int attribute="Error" context="#pop#pop"/>+ <AnyChar String="(){}[]" context="#pop#pop" lookAhead="1"/>+ </context>++ <!-- :::class1 class2 -->+ <context name="Mindmap_Class" attribute="Class Name" lineEndContext="#pop">+ </context>++ <!-- :::class1 class2 -->+ <context name="Mindmap_Icon" attribute="Annotation">+ <StringDetect String=")" attribute="Annotation Delimiter" context="#pop"/>+ </context>++ <!--+ @} Mindmap+ -->+++ <!--+ @{ Timeline Diagram+ -->++ <context name="Timeline" attribute="Normal" fallthroughContext="Timeline_Period">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=": " attribute="Node Separator" context="Timeline_Event"/>+ <StringDetect String=":" attribute="Error"/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->+ <StringDetect String="%" attribute="Comment" context="Comment" firstNonSpace="1"/>++ <WordDetect String="title" attribute="Keyword" context="Text_NoSpecial"+ insensitive="1" weakDeliminator="!%&()*+,-./:;<=>?[\]^{|}~"/>+ <StringDetect String="section :" context="Timeline_Period" lookAhead="1"+ insensitive="1" />+ <WordDetect String="section" attribute="Keyword" context="Timeline_KwSection"+ weakDeliminator="!%&()*+,-./:;<=>?[\]^{|}~" insensitive="1"/>+ </context>++ <!-- {time period} : {event} : {event} -->+ <context name="Timeline_Period" attribute="Node" lineEndContext="#pop">+ <StringDetect String=": " attribute="Node Separator" context="#pop!Timeline_Event"/>+ <StringDetect String=":" attribute="Error"/>+ <IncludeRules context="Find_HTML_simple_br"/>+ <IncludeRules context="Find_Entity"/>+ </context>++ <context name="Timeline_Event" attribute="Text" lineEndContext="#pop">+ <IncludeRules context="Timeline_Period"/>+ </context>++ <context name="Timeline_KwSection" attribute="Section Text" lineEndContext="#pop">+ <IncludeRules context="Timeline_Period"/>+ </context>++ <!--+ @} Timeline Diagram+ -->+++ <!--+ @{ ZenUML+ -->++ <!-- help !!! https://github.com/mermaid-js/mermaid/issues/7154 -->+ <context name="ZenUML" attribute="Normal" fallthroughContext="Timeline_Period">+ <DetectSpaces attribute="Normal"/>++ <StringDetect String=":" attribute="Node Separator" context="ZenUML_LinkText"/>+ <StringDetect String="." attribute="Link" context="ZenUML_Method"/>+ <StringDetect String="(" attribute="Link" context="ZenUML_Message"/>+ <StringDetect String="->" attribute="Link"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>+ <StringDetect String="//" attribute="Diagram Comment" context="ZenUML_Comment"/>+ <StringDetect String="@" attribute="Annotation" context="ZenUML_Actor"/>++ <RegExpr String="&zenuml_node;" attribute="Node"/>+ <StringDetect String="return" attribute="Keyword" context="Text_Simple"/>+ <StringDetect String="if" attribute="Keyword"/>+ <StringDetect String="else" attribute="Keyword"/>+ <StringDetect String="while" attribute="Keyword"/>+ <StringDetect String="opt" attribute="Keyword"/>+ <StringDetect String="par" attribute="Keyword"/>+ <StringDetect String="new" attribute="Keyword"/>+ <StringDetect String="try" attribute="Keyword"/>+ <StringDetect String="catch" attribute="Keyword"/>+ <StringDetect String="finally" attribute="Keyword"/>+ <StringDetect String="as" attribute="Keyword Parameter"/>+ <StringDetect String="title" attribute="Keyword" context="Text_Simple"/>+ </context>++ <context name="ZenUML_Actor" attribute="Normal" fallthroughContext="#pop">+ <DetectIdentifier attribute="Annotation" context="#pop"/>+ <Int attribute="Annotation"/>+ </context>++ <context name="ZenUML_LinkText" attribute="Link Text" lineEndContext="#pop">+ </context>++ <context name="ZenUML_Method" attribute="Link Text" lineEndContext="#pop">+ <AnyChar String="{}" context="#pop" lookAhead="1"/>+ </context>++ <context name="ZenUML_Message" attribute="Link Text" lineEndContext="#pop">+ <StringDetect String=")" attribute="Link" context="#pop"/>+ <AnyChar String="(){}" context="#pop" lookAhead="1"/>+ </context>++ <context name="ZenUML_Comment" attribute="Diagram Comment" lineEndContext="#pop"+ fallthroughContext="ZenUML_Comment_Special">+ <RegExpr String="&md_strict_text;" attribute="Diagram Comment"+ context="ZenUML_Comment_Special"/>+ </context>+ <context name="ZenUML_Comment_Special" attribute="Diagram Comment"+ lineEndContext="#pop#pop">+ <IncludeRules context="Find_MdText_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_DQ_SingleLine_ThenPop"/>+ </context>++ <!--+ @} ZenUML+ -->+++ <!--+ @{ Sankey diagram+ -->++ <context name="Sankey" attribute="Error" lineEndContext="Sankey_Body">+ </context>++ <context name="Sankey_Body" attribute="Normal" fallthroughContext="Sankey_Node1">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ </context>++ <!-- Pumped ds heat,"Heating and cooling, ""commercial""",70.672 -->+ <context name="Sankey_Node1" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="Sankey_Node2!Sankey_Node">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Sankey_Node2!Sankey_QNode" column="0"/>+ </context>+ <context name="Sankey_Node2" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="Sankey_Value!Sankey_Node">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Sankey_Value!Sankey_QNode"/>+ </context>+ <context name="Sankey_Value" attribute="Error" lineEndContext="#pop#pop#pop">+ <AnyChar String="0123456789." attribute="Number"/>+ <DetectSpaces attribute="Normal"/>+ </context>++ <context name="Sankey_Node" attribute="Node" lineEndContext="#pop">+ <StringDetect String=',' attribute="List Separator" context="#pop"/>+ <StringDetect String='"' attribute="Error"/>+ </context>++ <context name="Sankey_QNode" attribute="Quoted Text">+ <StringDetect String='""' attribute="Special Text Char"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="Sankey_QNode_End"/>+ </context>++ <context name="Sankey_QNode_End" attribute="Error" lineEndContext="#pop#pop#pop">+ <StringDetect String=',' attribute="List Separator" context="#pop#pop"/>+ </context>++ <!--+ @} Sankey diagram+ -->+++ <!--+ @{ XY Chart+ -->++ <context name="XYChart" attribute="Error" lineEndContext="XYChart_Body"+ fallthroughContext="XYChart_Body">+ <DetectSpaces attribute="Normal"/>+ <WordDetect String="vertical" attribute="Keyword Parameter" context="XYChart_Body"+ insensitive="1"/>+ <WordDetect String="horizontal" attribute="Keyword Parameter" context="XYChart_Body"+ insensitive="1"/>+ </context>++ <context name="XYChart_Body" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ <StringDetect String="[" attribute="Normal"+ context="XYChart_XAxis!XYChart_XAxis_Legend!XYChart_XAxis_Legend_Label!XYChart_Text!Spaces"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>+ <StringDetect String="title" attribute="Keyword" insensitive="1"+ context="XYChart_Text!XYChart_QText!XYChart_IdentError3"/>+ <StringDetect String="x-axis" attribute="Keyword" insensitive="1"+ context="XYChart_XAxis!XYChart_IdentError2"/>+ <StringDetect String="y-axis" attribute="Keyword" insensitive="1"+ context="XYChart_YAxis!XYChart_IdentError2"/>+ <StringDetect String="bar" attribute="Keyword" insensitive="1"+ context="XYChart_Bar!XYChart_IdentError2"/>+ <StringDetect String="line" attribute="Keyword" insensitive="1"+ context="XYChart_Bar!XYChart_IdentError2"/>+ <IncludeRules context="Find_Accessibility_Insensitive"/>++ <DetectIdentifier/>+ <Int/>+ </context>++ <!-- keywordXXX+ ~~~ #pop * 2 -->+ <context name="XYChart_IdentError2" attribute="Text" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Normal" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop#pop"/>+ <Int attribute="Error"/>+ </context>++ <!-- keywordXXX+ ~~~ #pop * 3 -->+ <context name="XYChart_IdentError3" attribute="Text" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Normal" context="#pop"/>+ <DetectIdentifier attribute="Error" context="#pop#pop#pop"/>+ <Int attribute="Error"/>+ </context>++ <!-- y-axis title min - -> max -->+ <context name="XYChart_YAxis" attribute="Text" lineEndContext="#pop"+ fallthroughContext="XYChart_YAxis_MinMax!XYChart_Axis_Title">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="XYChart_YAxis_MinMax!DQuote_NoSpecial"/>+ </context>++ <context name="XYChart_YAxis_MinMax" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <Int attribute="Number"/>+ <StringDetect String="-->" attribute="Link"/>+ <AnyChar String="-." attribute="Number"/>+ </context>++ <!--+ x-axis title min - -> max+ x-axis "title with space" [cat1, "cat2 with space", cat3]+ -->+ <context name="XYChart_XAxis" attribute="Text" lineEndContext="#pop"+ fallthroughContext="XYChart_XAxis_Legend!XYChart_Axis_Title">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="XYChart_XAxis_Legend!DQuote_NoSpecial"/>+ </context>++ <context name="XYChart_XAxis_Legend" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop!XYChart_YAxis_MinMax">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="[" attribute="Normal"+ context="XYChart_XAxis_Legend_Label!XYChart_Text!XYChart_QText!Spaces"/>+ </context>++ <!-- x-axis "title with space" [cat1, "cat2 with space", cat3]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ -->+ <context name="XYChart_XAxis_Legend_Label" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="List Separator"+ context="XYChart_Text!XYChart_QText!Spaces"/>+ <StringDetect String="]" attribute="Normal" context="#pop#pop#pop"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>+ <DetectIdentifier attribute="Error" context="XYChart_Text!XYChart_QText!Spaces"/>+ <RegExpr String="." attribute="Error" context="XYChart_Text!XYChart_QText!Spaces"/>+ </context>++ <!-- bar [2.3, 45, .98, -3.4]+ ~~ -->+ <context name="XYChart_Bar" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String="[" attribute="Normal"+ context="XYChart_Bar_Values"/>+ </context>++ <!-- bar [2.3, 45, .98, -3.4]+ ~~~~~~~~~~~~~~~~~~~ -->+ <context name="XYChart_Bar_Values" attribute="Normal">+ <DetectSpaces attribute="Normal"/>+ <Int attribute="Number"/>+ <AnyChar String="-." attribute="Number"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String="]" attribute="Normal" context="#pop#pop"/>+ </context>++ <!-- y-axis title+ ~~~~~~ -->+ <context name="XYChart_Axis_Title" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <RegExpr String="&xy_title;" attribute="Text" context="#pop" insensitive="1"/>+ </context>++ <!-- title text / x-axis title [cat1, "cat2 with space", cat3]+ ~~~~ ~~~~ ~~~~ -->+ <context name="XYChart_Text" attribute="Text" lineEndContext="#pop">+ <RegExpr String="&xy_text;" attribute="Text" context="#pop" insensitive="1"/>+ </context>++ <!-- title "text" / x-axis title [cat1, "cat2 with space", cat3]+ ~~~~~~ ~~~~~~~~~~~~~~~~~ -->+ <context name="XYChart_QText" attribute="Text" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop#pop!DQuote_NoSpecial"/>+ </context>++ <!--+ @} XY Chart+ -->+++ <!--+ @{ Block Diagram+ -->++ <context name="Block" attribute="Error" fallthroughContext="Block_Node!Block_Node_Spe">+ <DetectSpaces attribute="Normal"/>++ <AnyChar String='([<>{-:' lookAhead="1" context="Block_Node!Block_Node_Spe"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="Block_QString"/>+ <AnyChar String="})" attribute="Error"/>++ <IncludeRules context="Find_Comment"/>++ <RegExpr String="&block_node;++" attribute="Node" context="Block_Node!Block_Node_Spe"/>++ <StringDetect String="space" attribute="Keyword"/>+ <StringDetect String="columns" attribute="Keyword" context="Block_KwColumns"/>+ <StringDetect String="block" attribute="Keyword" beginRegion="block"/>+ <StringDetect String="end" attribute="Keyword" endRegion="block"/>+ <StringDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"/>+ <StringDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>+ <StringDetect String="class" attribute="Keyword" context="Flowchart_KwClass"/>++ <!-- no Find_Accessibility -->+ </context>+++ <context name="Block_Node" attribute="Error" lineEndContext="#pop"+ fallthroughContext="Block_Node_Spe">+ <RegExpr String="&block_in_node;++&block_node;*+" attribute="Node"+ context="Block_Node_Spe"/>+ </context>++ <!-- columns 2 -->+ <context name="Block_QString" attribute="Quoted Text"+ fallthroughContext="Block_QString_Special">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Find_Any_Comment"/>+ <RegExpr String='([^<&#"]++|&prefix_ent_no_ent;|&prefix_html_tag_no_tag;)++'+ attribute="Quoted Text" context='Block_QString_Special'/>+ </context>+ <context name="Block_QString_Special" attribute="Quoted Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop"/>+ <IncludeRules context="Find_Entities"/>+ <IncludeRules context="Find_Md_Html_DQ_SingleLine_ThenPop"/>+ </context>++ <context name="Block_Node_Spe" attribute="Error" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Normal" context="#pop#pop"/>++ <StringDetect String="---" attribute="Link" context="#pop#pop"/>+ <StringDetect String="-->" attribute="Link" context="#pop#pop"/>+ <StringDetect String="--" attribute="Link" context="#pop#pop"/>++ <StringDetect String="([" attribute="Shape" context="Block_Shape([])!Block_InShape"/>+ <StringDetect String="(((" attribute="Shape" context="Block_Shape((()))!Block_InShape"/>+ <StringDetect String="((" attribute="Shape" context="Block_Shape(())!Block_InShape"/>+ <StringDetect String="(" attribute="Shape" context="Block_Shape()!Block_InShape"/>+ <StringDetect String="[[" attribute="Shape" context="Block_Shape[[]]!Block_InShape"/>+ <StringDetect String="[(" attribute="Shape" context="Block_Shape[()]!Block_InShape"/>+ <StringDetect String="[/" attribute="Shape" context="Block_Shape[//]!Block_InShape"/>+ <StringDetect String="[\" attribute="Shape" context="Block_Shape[//]!Block_InShape"/>+ <AnyChar String="[>" attribute="Shape" context="Block_Shape[]!Block_InShape"/>+ <StringDetect String="{{" attribute="Shape" context="Block_Shape{{}}!Block_InShape"/>+ <StringDetect String="{" attribute="Shape" context="Block_Shape{}!Block_InShape"/>+ <StringDetect String="<[" attribute="Shape"+ context="Block_Shape<[]>!Block_InShape"/>++ <StringDetect String=":" attribute="Keyword Property Separator"+ context="#pop#pop!Block_Size"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop#pop!Block_QString"/>+ <AnyChar String="-<)}" attribute="Error" context="#pop#pop"/>+ <IncludeRules context="Find_Entities_ThenPop"/>+ <IncludeRules context="CharErrorAndPop2"/>+ </context>+++ <!-- id(["..."])+ ~ -->+ <context name="Block_InShape" attribute="Error" fallthroughContext="#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!Block_QString"/>+ <DetectSpaces attribute="Error"/>+ </context>++ <context name="Block_Shape_Common" attribute="Error">+ <DetectSpaces attribute="Error"/>+ <AnyChar String="}])" attribute="Error" context="#pop#pop#pop"/>+ </context>++ <!-- id(["..."])+ ~~ -->+ <context name="Block_Shape([])" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="])" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id((("...")))+ ~~~ -->+ <context name="Block_Shape((()))" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String=")))" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id(("..."))+ ~~ -->+ <context name="Block_Shape(())" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="))" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id("...")+ ~ -->+ <context name="Block_Shape()" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String=")" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id[["..."]]+ ~~ -->+ <context name="Block_Shape[[]]" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="]]" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id[("...")]+ ~~ -->+ <context name="Block_Shape[()]" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String=")]" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id([/"..."/]+ ~~ -->+ <context name="Block_Shape[//]" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="/]" attribute="Shape" context="#pop#pop#pop"/>+ <StringDetect String="\]" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id["..."]+ ~ -->+ <context name="Block_Shape[]" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="]" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id{{"..."}}+ ~~ -->+ <context name="Block_Shape{{}}" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="}}" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id{"..."}+ ~~ -->+ <context name="Block_Shape{}" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="}" attribute="Shape" context="#pop#pop#pop"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>++ <!-- id<["..."]>(x,down)+ ~~ -->+ <context name="Block_Shape<[]>" attribute="Error" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop#pop">+ <StringDetect String="]>" attribute="Shape" context="Block_ArrowDir"/>+ <IncludeRules context="Block_Shape_Common"/>+ </context>+ <!-- id<["..."]>(x,down)+ ~ -->+ <context name="Block_ArrowDir" attribute="Error" fallthroughContext="#pop#pop#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="(" attribute="Shape" context="Block_ArrowDir_Kw"/>+ </context>+ <!-- id<["..."]>(x,down)+ ~ -->+ <context name="Block_ArrowDir_Kw" attribute="Error" lineEndContext="#pop#pop#pop#pop#pop"+ fallthroughContext="#pop#pop#pop#pop#pop">+ <StringDetect String=")" attribute="Shape" context="#pop#pop#pop#pop#pop"/>+ <StringDetect String="," attribute="List Separator" context="Spaces"/>+ <AnyChar String="xy" attribute="Text"/>+ <StringDetect String="left" attribute="Text"/>+ <StringDetect String="right" attribute="Text"/>+ <StringDetect String="down" attribute="Text"/>+ <StringDetect String="up" attribute="Text"/>+ <DetectIdentifier attribute="Error"/>+ <DetectSpaces attribute="Error"/>+ </context>+++ <!-- columns 2 -->+ <context name="Block_KwColumns" attribute="Error" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <Int attribute="Number" context="#pop"/>+ </context>++ <!-- block:group1:2 ... end+ ~ -->+ <context name="Block_Size" attribute="Error" lineEndContext="#pop"+ fallthroughContext="#pop">+ <Int attribute="Number" context="#pop"/>+ </context>++ <!--+ @} Block Diagram+ -->+++ <!--+ @{ Packet Diagram+ -->++ <!-- 16-31: "Destination Port" / +31: "Destination Port" -->+ <context name="Packet" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <AnyChar String='+-' attribute="Normal"/>+ <Int attribute="Node"/>+ <StringDetect String=":" attribute="Node Separator"/>+ <IncludeRules context="Find_Quote_Simple"/>++ <IncludeRules context="Find_Any_Comment"/>++ <WordDetect String="title" attribute="Keyword" context="Packet_KwTitle"/>+ <IncludeRules context="Find_Accessibility"/>+ </context>++ <!-- title bla bla -->+ <context name="Packet_KwTitle" attribute="Text" lineEndContext="#pop">+ <DetectSpaces attribute="Text" context="Packet_KwTitle_Text"/>+ <IncludeRules context="Find_Any_Comment"/>+ <RegExpr String="." attribute="Error" context="Packet_KwTitle_Text"/>+ </context>+ <context name="Packet_KwTitle_Text" attribute="Text" lineEndContext="#pop#pop">+ <DetectSpaces/>+ <DetectIdentifier/>+ <Int/>+ <AnyChar String="<>&" attribute="Special Text Char"/>+ <IncludeRules context="Find_Any_Comment"/>+ <IncludeRules context="Find_Entity"/>+ </context>++ <!--+ @} Packet Diagram+ -->+++ <!--+ @{ Kanban Diagram+ -->++ <context name="Kanban" attribute="Error" fallthroughContext="Kanban_Node!Kanban_Node_Spe">+ <DetectSpaces attribute="Normal"/>+ <AnyChar String="[(" attribute="Shape" context="Kanban_Box"/>+ <StringDetect String="@{" attribute="Annotation Delimiter" context="Kanban_Annotation"/>+ <StringDetect String="{" attribute="Error" context="Kanban_Annotation"/>+ <AnyChar String=")]}@" attribute="Error"/>+ <IncludeRules context="Find_Comment"/>+ <IncludeRules context="EmptyQuotedText"/>+ <IncludeRules context="Flowchart_Find_MdText"/>+ <IncludeRules context="Flowchart_Find_UnicodeText"/>+ <RegExpr String="(?!kanban\b)&kanban_node;" attribute="Node"+ context="Kanban_Node!Kanban_Node_Spe"/>+ <!-- no Find_Accessibility -->+ </context>++ <context name="Kanban_Node" attribute="Node" lineEndContext="#pop">+ <AnyChar String="[(" attribute="Shape" context="#pop!Kanban_Box"/>+ <AnyChar String="[({})]@" lookAhead="1" context="#pop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ <RegExpr String="&kanban_node;" attribute="Node" context="Kanban_Node_Spe"/>+ </context>++ <context name="Kanban_Node_Spe" attribute="Text" lineEndContext="#pop#pop">+ <AnyChar String="[(" attribute="Shape" context="#pop#pop!Kanban_Box"/>+ <AnyChar String="[({})]@" lookAhead="1" context="#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <!-- id["..."] / id[...]+ ~~~~~ ~~~ -->+ <context name="Kanban_Box" attribute="Text" fallthroughContext="Kanban_Box_Text">+ <StringDetect String='"' lookAhead="1" context="Kanban_Box_End!Flowchart_QText"/>+ </context>+ <!-- id[...]+ ~~~ -->+ <context name="Kanban_Box_Text" attribute="Text" fallthroughContext="Kanban_Text_Spe">+ <AnyChar String=")]" attribute="Shape" context="#pop#pop"/>+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Comment"/>+ <RegExpr String="&kanban_qtext;" context="Kanban_Text_Spe"/>+ </context>+ <context name="Kanban_Text_Spe" attribute="Text" lineEndContext="#pop">+ <AnyChar String=")]" attribute="Shape" context="#pop#pop#pop"/>+ <AnyChar String="}@" attribute="Error" context="#pop#pop#pop"/>+ <AnyChar String="([" attribute="Error" context="#pop#pop"/>+ <IncludeRules context="Find_Md_Syms_ThenPop"/>+ <IncludeRules context="Find_Md_Html_Text_ThenPop"/>+ </context>++ <context name="Kanban_Box_End" attribute="Text" lineEndContext="#pop">+ <AnyChar String=")]" attribute="Shape" context="#pop#pop"/>+ <DetectSpaces attribute="Error"/>+ <AnyChar String="[({})]@&md_syms;" lookAhead="1" context="#pop#pop"/>+ <IncludeRules context="CharErrorAndPop2"/>+ </context>++ <!-- id[...]@{...}+ ~~~~ -->+ <context name="Kanban_Annotation" attribute="Error" lineEndContext="#pop">+ <StringDetect String="}" attribute="Annotation Delimiter" context="#pop"/>+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="," attribute="List Separator"/>+ <StringDetect String=": " attribute="Property Separator"+ context="Kanban_Annotation_Value"/>+ <IncludeRules context="Find_SQuote_NoSpecial"/>+ <IncludeRules context="Find_DQuote_NoSpecial"/>+ <WordDetect String="assigned" attribute="Keyword"/>+ <WordDetect String="ticket" attribute="Keyword"/>+ <WordDetect String="priority" attribute="Keyword" context="Kanban_Annotation_Priority"/>+ </context>+ <context name="Kanban_Annotation_Value" attribute="Text" lineEndContext="#pop#pop"+ fallthroughContext="Kanban_Annotation_Text">+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter"+ context="#pop!SQuote_NoSpecial"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="#pop!DQuote_NoSpecial"/>+ </context>+ <context name="Kanban_Annotation_Text" attribute="Text" lineEndContext="#pop#pop#pop">+ <AnyChar String=',"[]{}' lookAhead="1" context="#pop#pop"/>+ <StringDetect String=": " attribute="Property Separator" context="#pop"/>+ </context>++ <!-- @{priority: ...}+ ~~~~~ -->+ <context name="Kanban_Annotation_Priority" attribute="Error" lineEndContext="#pop#pop"+ fallthroughContext="#pop">+ <StringDetect String=": " attribute="Property Separator"+ context="Kanban_Annotation_Priority_Value"/>+ <DetectSpaces attribute="Normal"/>+ </context>+ <context name="Kanban_Annotation_Priority_Value" attribute="Error"+ lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">+ <DetectSpaces attribute="Normal"/>+ <AnyChar String=',[]{}' lookAhead="1" context="#pop#pop"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter"+ context="Kanban_Annotation_Priority_SQValue"/>+ <StringDetect String='"' attribute="Quoted Text Delimiter"+ context="Kanban_Annotation_Priority_DQValue"/>+ <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>+ </context>+ <context name="Kanban_Annotation_Priority_SQValue" attribute="Error"+ lineEndContext="#pop#pop#pop#pop">+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop#pop#pop"/>+ <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>+ </context>+ <context name="Kanban_Annotation_Priority_DQValue" attribute="Error"+ lineEndContext="#pop#pop#pop#pop">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop#pop"/>+ <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>+ </context>+ <context name="Kanban_Annotation_Priority_KwValue" attribute="Error">+ <StringDetect String="Very High" attribute="Keyword Parameter"/>+ <StringDetect String="High" attribute="Keyword Parameter"/>+ <StringDetect String="Very Low" attribute="Keyword Parameter"/>+ <StringDetect String="Low" attribute="Keyword Parameter"/>+ <DetectIdentifier attribute="Error"/>+ </context>++ <!--+ @} Kanban Diagram+ -->+++ <!--+ @{ Architecture Diagram+ -->++ <context name="Archi" attribute="Error" fallthroughContext="Kanban_Node!Kanban_Node_Spe">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="Find_Any_Comment"/>++ <StringDetect String=":" attribute="Symbol Separator" context="Archi_EdgeDir"/>++ <StringDetect String="(" attribute="Shape" context="Archi_Icon"/>+ <StringDetect String="[" attribute="Quoted Text Delimiter" context="Archi_Text"/>+ <StringDetect String="{" attribute="Annotation Delimiter" context="Archi_Group"/>++ <StringDetect String="--" attribute="Link" context="Archi_Edge"/>+ <StringDetect String="<--" attribute="Link" context="Archi_Edge"/>++ <WordDetect String="group" attribute="Keyword"/>+ <WordDetect String="in" attribute="Keyword"/>+ <WordDetect String="service" attribute="Keyword"/>+ <WordDetect String="junction" attribute="Keyword"/>++ <IncludeRules context="Find_Accessibility"/>++ <!-- https://github.com/mermaid-js/mermaid/issues/7022 -->+ <AnyChar String="LRTB" attribute="Error" context="Archi_Node"/>+ <AnyChar String="&archi_id_ch;" attribute="Node" context="Archi_Node"/>+ </context>++ <context name="Archi_Node" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <AnyChar String="&archi_id_ch;"/>+ </context>++ <!-- id1:L - - R:id2+ ~ -->+ <context name="Archi_EdgeDir" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <AnyChar String="LRTB" attribute="Keyword Parameter" context="#pop"/>+ </context>++ <!-- id1:L - - R:id2+ ~~~~~~ -->+ <context name="Archi_Edge" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <AnyChar String="LRTB" attribute="Keyword Parameter"/>+ <StringDetect String=":" attribute="Symbol Separator" context="#pop"/>+ <DetectSpaces attribute="Normal"/>+ <StringDetect String=">" attribute="Link"/>+ </context>++ <!-- service db(database)[Database] in api+ ~~~~~~~~~ -->+ <context name="Archi_Icon" attribute="Style Value" lineEndContext="#pop"+ fallthroughContext="#pop">+ <AnyChar String="&archi_id_ch;"/>+ <StringDetect String=")" attribute="Shape" context="#pop"/>+ </context>++ <!-- service db(database)[Database] in api+ ~~~~~~~~~ -->+ <context name="Archi_Text" attribute="Text" lineEndContext="#pop"+ fallthroughContext="#pop">+ <!-- https://github.com/mermaid-js/mermaid/issues/6607 -->+ <AnyChar String="0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"/>+ <StringDetect String="_" lookAhead="1" context="Archi_Text_MaybeMd"/>+ <StringDetect String="]" attribute="Quoted Text Delimiter" context="#pop"/>+ </context>+ <context name="Archi_Text_MaybeMd" attribute="Text">+ <RegExpr String="&md_no_underscore;" context="#pop"/>+ <StringDetect String="_" attribute="Special Text Char" context="Archi_Text_Md"/>+ </context>+ <context name="Archi_Text_Md" attribute="Text" lineEndContext="#pop#pop#pop"+ fallthroughContext="#pop#pop">+ <StringDetect String="_" attribute="Special Text Char"/>+ </context>++ <!-- id1{group}:L - - L:id{group}+ ~~~~~~ ~~~~~~ -->+ <context name="Archi_Group" attribute="Annotation" lineEndContext="#pop"+ fallthroughContext="#pop">+ <StringDetect String="}" attribute="Annotation Delimiter" context="#pop"/>+ <StringDetect String="group" attribute="Annotation"/>+ <DetectIdentifier attribute="Error"/>+ </context>++ <!--+ @} Architecture Diagram+ -->+++ <!--+ @{ Radar Diagram+ -->++ <context name="Radar" attribute="Error">+ <DetectSpaces attribute="Normal"/>++ <AnyChar String="[]" attribute="Shape"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <StringDetect String="{" attribute="Curly Bracket Block Delimiter"+ context="Radar_Values" beginRegion="block"/>+ <StringDetect String="," attribute="List Separator"/>++ <IncludeRules context="Find_Any_Comment"/>++ <WordDetect String="axis" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="curve" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="max" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="min" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="graticule" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="ticks" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="showLegend" attribute="Keyword" weakDeliminator="-"/>+ <WordDetect String="title" attribute="Keyword" weakDeliminator="-"+ context="Text_Simple!SpacesOrError"/>+ <WordDetect String="circle" attribute="Keyword Parameter" weakDeliminator="-"/>+ <WordDetect String="polygon" attribute="Keyword Parameter" weakDeliminator="-"/>+ <StringDetect String="true" attribute="Keyword Parameter"/>+ <StringDetect String="false" attribute="Keyword Parameter"/>++ <IncludeRules context="Find_Accessibility"/>++ <Int attribute="Number"/>++ <AnyChar String="-" attribute="Error"/>+ <AnyChar String="&radar_id_ch;" attribute="Node" context="Radar_Node"/>+ </context>++ <context name="Radar_Node" attribute="Node" lineEndContext="#pop"+ fallthroughContext="#pop">+ <AnyChar String="&radar_id_ch;"/>+ </context>+ <context name="Radar_Prop" attribute="Property" lineEndContext="#pop"+ fallthroughContext="#pop">+ <AnyChar String="&radar_id_ch;"/>+ </context>++ <context name="Radar_Values" attribute="Normal" fallthroughContext="#pop">+ <Int attribute="Number"/>+ <StringDetect String="," attribute="List Separator"/>+ <DetectSpaces attribute="Normal"/>+ <StringDetect String="." attribute="Number"/>+ <StringDetect String=":" attribute="Property Separator"/>+ <StringDetect String="}" attribute="Curly Bracket Block Delimiter"+ context="#pop" endRegion="block"/>+ <IncludeRules context="Find_Any_Comment"/>++ <WordDetect String="axis" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="curve" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="max" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="min" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="graticule" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="ticks" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="showLegend" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="title" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="circle" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="polygon" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="accTitle" attribute="Error" weakDeliminator="-"/>+ <WordDetect String="accDescr" attribute="Error" weakDeliminator="-"/>+ <StringDetect String="true" attribute="Error"/>+ <StringDetect String="false" attribute="Error"/>++ <AnyChar String="-" attribute="Error"/>+ <AnyChar String="&radar_id_ch;" attribute="Property" context="Radar_Prop"/>+ </context>++ <!--+ @} Radar Diagram+ -->+++ <!--+ @{ Treemap Diagram+ -->++ <context name="Treemap" attribute="Error">+ <DetectSpaces attribute="Normal"/>+ <Int attribute="Number"/>+ <IncludeRules context="Find_Quote_Simple"/>+ <StringDetect String="." attribute="Number"/>+ <StringDetect String=":::" attribute="Class Name Delimiter"+ context="Treemap_ClassName"/>+ <StringDetect String=":" attribute="Node Separator"/>++ <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>++ <IncludeRules context="Find_Accessibility"/>+ </context>++ <context name="Treemap_ClassName" attribute="Error" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectIdentifier attribute="Class Name" context="#pop"/>+ </context>++ <!--+ @} Treemap Diagram+ -->+++ <!-- @{ Md -->+ <!-- **xy** __xy__ \* \= $$sin f$$ < #lt;+ ~~ ~~ ~~ ~~ ~~ ~ ~~ ~~ ~~~~ ~~~~ -->+ <context name="Find_Md_Syms_ThenPop" attribute="Normal" lineEndContext="#pop">+ <AnyChar String="*_" attribute="Special Text Char" context="#pop!Md_bi"/>+ <StringDetect String="\" attribute="Special Text Char" context="Md_Escape"/>+ <StringDetect String="$$" attribute="Math Delimiter" context="#pop"/>+ <IncludeRules context="Find_Entities_ThenPop"/>+ </context>+ <!-- \*+ ~ -->+ <context name="Md_Escape" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <AnyChar String="*_\" context="#pop#pop"/>+ </context>++ <!-- *xy* / _xy_ / \* / $$sin f$$ / <+ ~ ~ ~ ~ ~ ~~ ~~ ~~~~ -->+ <context name="Find_MdText_Syms_ThenPop" attribute="Normal" lineEndContext="#pop">+ <AnyChar String="*_" attribute="Special Text Char" context="#pop!Md_bi"/>+ <StringDetect String="\" attribute="Special Text Char" context="MdText_Escape"/>+ <StringDetect String="$$" attribute="Math Delimiter" context="#pop"/>+ <IncludeRules context="Find_Entities_ThenPop"/>+ </context>+ <!-- \*+ ~ -->+ <context name="MdText_Escape" attribute="Normal" lineEndContext="#pop#pop"+ fallthroughContext="#pop#pop">+ <AnyChar String="*_\" attribute="Text" context="#pop#pop"/>+ </context>++ <!-- *xy* / _xy_+ ~ ~ ~ ~ -->+ <context name="Md_bi" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">+ <AnyChar String="*_" attribute="Special Text Char"/>+ </context>+ <!-- @} Md -->+++ <!-- @{ kw (\s | \n) bla bla+ ~~~~~~~~~+ context="BlaBla!SpacesOrNewLine"+ -->+ <context name="SpacesOrNewLine" attribute="Normal"+ lineEndContext="SpacesOrNewLine_NewLine">+ <DetectSpaces attribute="Normal" context="#pop"/>+ </context>+ <context name="SpacesOrNewLine_NewLine" attribute="Normal"+ fallthroughContext="#pop#pop"+ lineEmptyContext="#pop#pop#pop">+ <DetectSpaces attribute="Normal" context="#pop#pop"/>+ </context>+ <!-- @} kw (\s | \n) bla bla -->+++ <!-- @{ kw \s bla bla+ ~~+ -->+ <context name="SpacesOrError" attribute="Normal" lineEndContext="#pop">+ <DetectSpaces attribute="Normal" context="#pop"/>+ <IncludeRules context="CharErrorAndPop"/>+ </context>+ <!--+ @} kw \s bla bla+ -->+++ <!-- @{ spaces -->+ <context name="Spaces" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal" context="#pop"/>+ </context>++ <context name="LineErrorExceptSpaces" attribute="Error" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ </context>++ <context name="SpacesAsError" attribute="Normal" lineEndContext="#pop"+ fallthroughContext="#pop">+ <DetectSpaces attribute="Error" context="#pop"/>+ </context>+ <!-- @} spaces -->+++ <!-- @{ entities -->+ <!-- #lt; -->+ <context name="Find_Entity" attribute="Normal">+ <RegExpr String="(&mmd_ent;)+" attribute="Entity"/>+ </context>++ <!-- #lt; / < -->+ <context name="Find_Entities" attribute="Normal">+ <RegExpr String="(&html_ent;|&mmd_ent;)+" attribute="Entity"/>+ </context>+ <context name="Find_Entities_ThenPop" attribute="Normal">+ <RegExpr String="(&html_ent;|&mmd_ent;)+" attribute="Entity" context="#pop"/>+ </context>+ <!-- @} entities -->+++ <!-- @{ <br> <br/> -->+ <context name="Find_HTML_br" attribute="Normal">+ <RegExpr String="<br\s*/?>" attribute="HTML Tag"/>+ </context>++ <context name="Find_HTML_simple_br" attribute="Normal">+ <StringDetect String="<br>" attribute="HTML Tag"/>+ </context>+ <!-- @} <br> <br/> -->+++ <!--+ @{ "..." / '...'+ -->+ <context name="Find_DQuote_NoSpecial" attribute="Normal">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>+ </context>+ <context name="DQuote_NoSpecial" attribute="Quoted Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ </context>++ <context name="Find_SQuote_NoSpecial" attribute="Normal">+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="SQuote_NoSpecial"/>+ </context>+ <context name="SQuote_NoSpecial" attribute="Quoted Text">+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>+ </context>++ <!-- with mermaid entity (#lt;) and escape for \ -->+ <context name="Find_Quote_Simple" attribute="Normal">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_Simple"/>+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="SQuote_Simple"/>+ </context>+ <context name="DQuote_Simple" attribute="Quoted Text">+ <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Quote_Simple_Common"/>+ </context>+ <context name="SQuote_Simple" attribute="Quoted Text">+ <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>+ <IncludeRules context="Quote_Simple_Common"/>+ </context>+ <context name="Quote_Simple_Common" attribute="Quoted Text">+ <DetectIdentifier/>+ <DetectSpaces/>+ <Int/>+ <IncludeRules context="Find_Comment"/>+ <LineContinue char="\" attribute="Error" context="#pop"/>+ <StringDetect String="\" attribute="Special Text Char" context="Quote_Simple_Espace"/>+ <IncludeRules context="Find_Entity"/>+ </context>+ <context name="Quote_Simple_Espace" attribute="Quoted Text" fallthroughContext="#pop">+ <AnyChar String=""'\" attribute="Quoted Text" context="#pop"/>+ <AnyChar String="0" attribute="Error" context="#pop"/>+ <AnyChar String="btnvfr" attribute="Special Text Char" context="#pop"/>+ </context>+ <!--+ @} "..." / '...'+ -->+++ <!--+ @{ text+ -->+ <context name="Text_NoSpecial" attribute="Text" lineEndContext="#pop">+ </context>++ <!-- with mermaid entity (#lt;) and bad html tag -->+ <context name="Text_Simple" attribute="Text" lineEndContext="#pop">+ <DetectIdentifier/>+ <DetectSpaces/>+ <Int/>+ <StringDetect String="<" attribute="Special Text Char"/>+ <IncludeRules context="Find_Entity"/>+ </context>+ <!--+ @} text+ -->+++ <!--+ @{ Comment+ -->+ <context name="Find_Comment" attribute="Comment">+ <!-- empty comment is not a comment: https://github.com/mermaid-js/mermaid/pull/7008+ this error is ignored+ -->+ <StringDetect String="%%" attribute="Comment" context="Comment" firstNonSpace="1"/>+ <!-- block comment: https://github.com/mermaid-js/mermaid/pull/7028 -->+ </context>++ <context name="Find_Comment_InText" attribute="Normal">+ <DetectSpaces/>+ <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->+ <IncludeRules context="Find_Comment"/>+ </context>++ <context name="Find_Any_Comment" attribute="Normal">+ <StringDetect String="%%" attribute="Comment" context="Comment"/>+ </context>++ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <LineContinue attribute="Comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>++ <context name="FakeComment" attribute="Comment" lineEndContext="#pop">+ </context>+ <!--+ @} Comment+ -->+++ <!--+ @{ Error+ -->+ <context name="LineError" attribute="Error" lineEndContext="#pop">+ </context>++ <context name="CharErrorAndPop" attribute="Error" lineEndContext="#pop">+ <RegExpr String="." attribute="Error" context="#pop"/>+ </context>++ <context name="CharErrorAndPop2" attribute="Error" lineEndContext="#pop">+ <RegExpr String="." attribute="Error" context="#pop#pop"/>+ </context>+ <!--+ @} Error+ -->++ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>+ <itemData name="Shape" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Keyword Parameter" defStyleNum="dsConstant" spellChecking="0"/>+ <itemData name="Keyword Property Separator" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Node" defStyleNum="dsDataType"/>+ <itemData name="Node Separator" defStyleNum="dsDataType" spellChecking="0" bold="1"/>+ <itemData name="Symbol Separator" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="List Separator" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Text" defStyleNum="dsVerbatimString"/>+ <itemData name="Text Separator" defStyleNum="dsNormal"/>+ <itemData name="Quoted Text" defStyleNum="dsString"/>+ <itemData name="Quoted Text Delimiter" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Markdown Text" defStyleNum="dsString"/>+ <itemData name="Markdown Text Delimiter" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Special Text Char" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="Math Delimiter" defStyleNum="dsImport" spellChecking="0"/>+ <itemData name="HTML Tag" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="HTML Attribute" defStyleNum="dsOthers" spellChecking="0"/>+ <itemData name="Link" defStyleNum="dsPreprocessor" spellChecking="0"/>+ <itemData name="Link Text" defStyleNum="dsVerbatimString"/>+ <itemData name="Link Text Separator" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Link Text Delimiter" defStyleNum="dsVerbatimString" spellChecking="0" bold="1"/>+ <itemData name="Union" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Entity" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Class Name" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Class Name Delimiter" defStyleNum="dsFunction" spellChecking="0" bold="1"/>+ <itemData name="ID" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="ID Separator" defStyleNum="dsFunction" spellChecking="0" bold="1"/>++ <itemData name="Number" defStyleNum="dsDecVal" spellChecking="0"/>+ <itemData name="Style Property" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Style Property Separator" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>+ <itemData name="Style Value" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Style Unit" defStyleNum="dsDataType" spellChecking="0"/>+ <itemData name="Style Hexadeximal Color" defStyleNum="dsImport" spellChecking="0"/>++ <itemData name="Curly Bracket Block Delimiter" defStyleNum="dsDataType" spellChecking="0" bold="1"/>+ <itemData name="Property" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Property Separator" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>+ <itemData name="Property Number" defStyleNum="dsVerbatimString" spellChecking="0"/>+ <itemData name="Property Boolean" defStyleNum="dsImport" spellChecking="0"/>++ <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Annotation Delimiter" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>+ <!-- gantt, journey, timeline -->+ <itemData name="Section Text" defStyleNum="dsDocumentation" spellChecking="0"/>+ <!-- classDiagram -->+ <itemData name="Generic Type Symbol" defStyleNum="dsFunction" spellChecking="0"/>+ <!-- classDiagram, erDiagram -->+ <itemData name="Member" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Member Type" defStyleNum="dsNormal" spellChecking="0"/>+ <!-- stateDiagram -->+ <itemData name="Concurrency" defStyleNum="dsFunction" spellChecking="0"/>+ <!-- erDiagram -->+ <itemData name="Cardinality Text" defStyleNum="dsPreprocessor" spellChecking="0"/>+ <itemData name="Relationship Text" defStyleNum="dsPreprocessor" spellChecking="0" bold="1"/>+ <!-- ZenUML -->+ <itemData name="Diagram Comment" defStyleNum="dsDocumentation"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="%%" position="afterwhitespace"/>+ </comments>+ </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+ xml/meson.xml view
@@ -0,0 +1,277 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name="Meson" section="Other"+ version="6" kateversion="5.0"+ extensions="meson.build;meson.options;meson_options.txt"+ mimetype="text/x-meson"+ priority="5"+ license="LGPL">++ <highlighting>+ <list name="flowControl">+ <item>if</item>+ <item>else</item>+ <item>endif</item>+ <item>foreach</item>+ <item>endforeach</item>+ </list>+ <list name="builtinfuncs">+ <item>add_global_arguments</item>+ <item>add_global_link_arguments</item>+ <item>add_languages</item>+ <item>add_project_arguments</item>+ <item>add_project_link_arguments</item>+ <item>add_test_setup</item>+ <item>alias_target</item>+ <item>assert</item>+ <item>benchmark</item>+ <item>both_libraries</item>+ <item>build_target</item>+ <item>configuration_data</item>+ <item>configure_file</item>+ <item>custom_target</item>+ <item>declare_dependency</item>+ <item>dependency</item>+ <item>disabler</item>+ <item>environment</item>+ <item>error</item>+ <item>executable</item>+ <item>files</item>+ <item>find_library</item>+ <item>find_program</item>+ <item>generator</item>+ <item>get_option</item>+ <item>get_variable</item>+ <item>import</item>+ <item>include_directories</item>+ <item>install_data</item>+ <item>install_headers</item>+ <item>install_man</item>+ <item>install_subdir</item>+ <item>is_disabler</item>+ <item>is_variable</item>+ <item>jar</item>+ <item>join_paths</item>+ <item>library</item>+ <item>message</item>+ <item>project</item>+ <item>run_command</item>+ <item>run_target</item>+ <item>set_variable</item>+ <item>shared_library</item>+ <item>shared_module</item>+ <item>static_library</item>+ <item>subdir</item>+ <item>subdir_done</item>+ <item>subproject</item>+ <item>test</item>+ <item>vcs_tag</item>+ <item>warning</item>+ </list>+ <list name="logicalOperations">+ <item>and</item>+ <item>or</item>+ <item>not</item>+ </list>+ <list name="booleans">+ <item>true</item>+ <item>false</item>+ </list>+ <list name="mesonObjet">+ <item>meson</item>+ </list>+ <list name="machineObjet">+ <item>build_machine</item>+ <item>host_machine</item>+ <item>target_machine</item>+ </list>+ <list name="mesonMembers">+ <item>add_dist_script</item>+ <item>add_install_script</item>+ <item>add_postconf_script</item>+ <item>backend</item>+ <item>build_root</item>+ <item>source_root</item>+ <item>current_build_dir</item>+ <item>current_source_dir</item>+ <item>get_cross_property</item>+ <item>get_compiler</item>+ <item>has_exe_wrapper</item>+ <item>install_dependency_manifest</item>+ <item>is_cross_build</item>+ <item>is_subproject</item>+ <item>is_unity</item>+ <item>override_find_program</item>+ <item>project_version</item>+ <item>project_license</item>+ <item>project_name</item>+ <item>version</item>+ </list>+ <list name="machineMembers">+ <item>cpu_family</item>+ <item>cpu</item>+ <item>system</item>+ <item>endian</item>+ </list>+ <list name="builtinmembers">+ <item>alignment</item>+ <item>append</item>+ <item>as_system</item>+ <item>cmd_array</item>+ <item>compiled</item>+ <item>compiles</item>+ <item>compute_int</item>+ <item>contains</item>+ <item>endswith</item>+ <item>extract_all_objects</item>+ <item>extract_objects</item>+ <item>find_library</item>+ <item>first_supported_argument</item>+ <item>first_supported_link_argument</item>+ <item>format</item>+ <item>found</item>+ <item>full_path</item>+ <item>get_argument_syntax</item>+ <item>get_configtool_variable</item>+ <item>get_define</item>+ <item>get_id</item>+ <item>get</item>+ <item>get_pkgconfig_variable</item>+ <item>get_supported_arguments</item>+ <item>get_supported_function_attributes</item>+ <item>get_supported_link_arguments</item>+ <item>get_unquoted</item>+ <item>get_variable</item>+ <item>gettext</item>+ <item>has_argument</item>+ <item>has_function_attribute</item>+ <item>has_function</item>+ <item>has_header_symbol</item>+ <item>has</item>+ <item>has_key</item>+ <item>has_link_argument</item>+ <item>has_member</item>+ <item>has_members</item>+ <item>has_multi_arguments</item>+ <item>has_multi_link_arguments</item>+ <item>has_type</item>+ <item>include_type</item>+ <item>is_even</item>+ <item>is_odd</item>+ <item>join</item>+ <item>length</item>+ <item>links</item>+ <item>merge_from</item>+ <item>name</item>+ <item>partial_dependency</item>+ <item>path</item>+ <item>pkgconfig_gen</item>+ <item>prepend</item>+ <item>private_dir_include</item>+ <item>process</item>+ <item>returncode</item>+ <item>run</item>+ <item>set10</item>+ <item>set</item>+ <item>set_quoted</item>+ <item>sizeof</item>+ <item>split</item>+ <item>startswith</item>+ <item>stderr</item>+ <item>stdout</item>+ <item>strip</item>+ <item>symbols_have_underscore_prefix</item>+ <item>to_lower</item>+ <item>to_string</item>+ <item>to_upper</item>+ <item>type_name</item>+ <item>underscorify</item>+ <item>version_compare</item>+ <item>version</item>+ </list>++ <contexts>+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <keyword attribute="Flow Control Keyword" String="flowControl" context="#stay"/>+ <keyword attribute="Operator" String="logicalOperations" context="#stay"/>+ <keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>+ <keyword attribute="Boolean Values" String="booleans" context="#stay"/>+ <keyword attribute="Builtin Objet" String="mesonObjet" context="mesonObjet"/>+ <keyword attribute="Builtin Objet" String="machineObjet" context="machineObjet"/>+ <Int attribute="Int" context="#stay"/>+ <DetectChar attribute="Comment" char="#" context="comment"/>+ <AnyChar attribute="Operator" String="+-*/=<>" context="#stay"/>+ <DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>+ <IncludeRules context="StringVariants" />+ <DetectChar attribute="Normal Text" char="." context="members"/>+ </context>++ <context name="mesonObjet" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <DetectChar attribute="Normal Text" char="." context="mesonMembers"/>+ </context>++ <context name="mesonMembers" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+ <keyword attribute="Builtin Function" String="mesonMembers" context="#pop#pop"/>+ </context>++ <context name="machineObjet" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <DetectChar attribute="Normal Text" char="." context="machineMembers"/>+ </context>++ <context name="machineMembers" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">+ <keyword attribute="Builtin Function" String="machineMembers" context="#pop#pop"/>+ </context>++ <context name="members" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop#pop">+ <keyword attribute="Builtin Member Function" String="builtinmembers" context="#pop"/>+ </context>++ <context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>+ <IncludeRules context="Normal" />+ </context>++ <context name="comment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="##Comments" />+ </context>++ <!--strings-->+ <context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces/>+ <StringDetect attribute="String" String="'''" context="Triple A-string" beginRegion="Triple A-region"/>+ <DetectChar attribute="String" char="'" context="Single A-string"/>+ </context>+ <context name="Single A-string" attribute="String" lineEndContext="#stay">+ <HlCStringChar attribute="String Char" context="#stay"/>+ <DetectChar attribute="String" char="'" context="#pop"/>+ </context>+ <context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">+ <HlCStringChar attribute="String Char" context="#stay"/>+ <StringDetect attribute="String" String="'''" context="#pop" endRegion="Triple A-region"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Operator" defStyleNum="dsNormal" spellChecking="false" bold="1"/>+ <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Flow Control Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Builtin Function" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Builtin Objet" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Builtin Member Function" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Boolean Values" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ </itemDatas>+ </highlighting>++ <general>+ <comments>+ <comment name="singleLine" start="#"/>+ </comments>+ </general>++</language>+<!-- kate: replace-tabs off; -->
+ xml/nginx.xml view
@@ -0,0 +1,934 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+ <!-- list of units taken from https://nginx.org/en/docs/syntax.html -->+ <!ENTITY units "([dGghKkMmswy]|ms)">+]+>+<language name="nginx Configuration" section="Configuration"+ version="3" kateversion="5.79"+ indenter="cstyle"+ extensions="nginx.conf;*.nginx"+ mimetype=""+ author="Jyrki Gadinger (nilsding@nilsding.org)" license="MIT">+ <highlighting>+ <!-- see https://nginx.org/en/docs/dirindex.html for a full list of directives -->+ <list name="directives">+ <item>absolute_redirect</item>+ <item>accept_mutex</item>+ <item>accept_mutex_delay</item>+ <item>access_log</item>+ <item>add_after_body</item>+ <item>add_before_body</item>+ <item>add_header</item>+ <item>add_trailer</item>+ <item>addition_types</item>+ <item>aio</item>+ <item>aio_write</item>+ <item>alias</item>+ <item>allow</item>+ <item>ancient_browser</item>+ <item>ancient_browser_value</item>+ <item>api</item>+ <item>auth_basic</item>+ <item>auth_basic_user_file</item>+ <item>auth_delay</item>+ <item>auth_http</item>+ <item>auth_http_header</item>+ <item>auth_http_pass_client_cert</item>+ <item>auth_http_timeout</item>+ <item>auth_jwt</item>+ <item>auth_jwt_claim_set</item>+ <item>auth_jwt_header_set</item>+ <item>auth_jwt_key_cache</item>+ <item>auth_jwt_key_file</item>+ <item>auth_jwt_key_request</item>+ <item>auth_jwt_leeway</item>+ <item>auth_jwt_require</item>+ <item>auth_jwt_type</item>+ <item>auth_request</item>+ <item>auth_request_set</item>+ <item>autoindex</item>+ <item>autoindex_exact_size</item>+ <item>autoindex_format</item>+ <item>autoindex_localtime</item>+ <item>break</item>+ <item>charset</item>+ <item>charset_map</item>+ <item>charset_types</item>+ <item>chunked_transfer_encoding</item>+ <item>client_body_buffer_size</item>+ <item>client_body_in_file_only</item>+ <item>client_body_in_single_buffer</item>+ <item>client_body_temp_path</item>+ <item>client_body_timeout</item>+ <item>client_header_buffer_size</item>+ <item>client_header_timeout</item>+ <item>client_max_body_size</item>+ <item>connect_timeout</item>+ <item>connection_pool_size</item>+ <item>create_full_put_path</item>+ <item>daemon</item>+ <item>dav_access</item>+ <item>dav_methods</item>+ <item>debug_connection</item>+ <item>debug_points</item>+ <item>default_type</item>+ <item>deny</item>+ <item>directio</item>+ <item>directio_alignment</item>+ <item>disable_symlinks</item>+ <item>empty_gif</item>+ <item>env</item>+ <item>error_log</item>+ <item>error_page</item>+ <item>etag</item>+ <item>events</item>+ <item>expires</item>+ <item>f4f</item>+ <item>f4f_buffer_size</item>+ <item>fastcgi_bind</item>+ <item>fastcgi_buffer_size</item>+ <item>fastcgi_buffering</item>+ <item>fastcgi_buffers</item>+ <item>fastcgi_busy_buffers_size</item>+ <item>fastcgi_cache</item>+ <item>fastcgi_cache_background_update</item>+ <item>fastcgi_cache_bypass</item>+ <item>fastcgi_cache_key</item>+ <item>fastcgi_cache_lock</item>+ <item>fastcgi_cache_lock_age</item>+ <item>fastcgi_cache_lock_timeout</item>+ <item>fastcgi_cache_max_range_offset</item>+ <item>fastcgi_cache_methods</item>+ <item>fastcgi_cache_min_uses</item>+ <item>fastcgi_cache_path</item>+ <item>fastcgi_cache_purge</item>+ <item>fastcgi_cache_revalidate</item>+ <item>fastcgi_cache_use_stale</item>+ <item>fastcgi_cache_valid</item>+ <item>fastcgi_catch_stderr</item>+ <item>fastcgi_connect_timeout</item>+ <item>fastcgi_force_ranges</item>+ <item>fastcgi_hide_header</item>+ <item>fastcgi_ignore_client_abort</item>+ <item>fastcgi_ignore_headers</item>+ <item>fastcgi_index</item>+ <item>fastcgi_intercept_errors</item>+ <item>fastcgi_keep_conn</item>+ <item>fastcgi_limit_rate</item>+ <item>fastcgi_max_temp_file_size</item>+ <item>fastcgi_next_upstream</item>+ <item>fastcgi_next_upstream_timeout</item>+ <item>fastcgi_next_upstream_tries</item>+ <item>fastcgi_no_cache</item>+ <item>fastcgi_param</item>+ <item>fastcgi_pass</item>+ <item>fastcgi_pass_header</item>+ <item>fastcgi_pass_request_body</item>+ <item>fastcgi_pass_request_headers</item>+ <item>fastcgi_read_timeout</item>+ <item>fastcgi_request_buffering</item>+ <item>fastcgi_send_lowat</item>+ <item>fastcgi_send_timeout</item>+ <item>fastcgi_socket_keepalive</item>+ <item>fastcgi_split_path_info</item>+ <item>fastcgi_store</item>+ <item>fastcgi_store_access</item>+ <item>fastcgi_temp_file_write_size</item>+ <item>fastcgi_temp_path</item>+ <item>flv</item>+ <item>geo</item>+ <item>geoip_city</item>+ <item>geoip_country</item>+ <item>geoip_org</item>+ <item>geoip_proxy</item>+ <item>geoip_proxy_recursive</item>+ <item>google_perftools_profiles</item>+ <item>grpc_bind</item>+ <item>grpc_buffer_size</item>+ <item>grpc_connect_timeout</item>+ <item>grpc_hide_header</item>+ <item>grpc_ignore_headers</item>+ <item>grpc_intercept_errors</item>+ <item>grpc_next_upstream</item>+ <item>grpc_next_upstream_timeout</item>+ <item>grpc_next_upstream_tries</item>+ <item>grpc_pass</item>+ <item>grpc_pass_header</item>+ <item>grpc_read_timeout</item>+ <item>grpc_send_timeout</item>+ <item>grpc_set_header</item>+ <item>grpc_socket_keepalive</item>+ <item>grpc_ssl_certificate</item>+ <item>grpc_ssl_certificate_key</item>+ <item>grpc_ssl_ciphers</item>+ <item>grpc_ssl_conf_command</item>+ <item>grpc_ssl_crl</item>+ <item>grpc_ssl_name</item>+ <item>grpc_ssl_password_file</item>+ <item>grpc_ssl_protocols</item>+ <item>grpc_ssl_server_name</item>+ <item>grpc_ssl_session_reuse</item>+ <item>grpc_ssl_trusted_certificate</item>+ <item>grpc_ssl_verify</item>+ <item>grpc_ssl_verify_depth</item>+ <item>gunzip</item>+ <item>gunzip_buffers</item>+ <item>gzip</item>+ <item>gzip_buffers</item>+ <item>gzip_comp_level</item>+ <item>gzip_disable</item>+ <item>gzip_http_version</item>+ <item>gzip_min_length</item>+ <item>gzip_proxied</item>+ <item>gzip_static</item>+ <item>gzip_types</item>+ <item>gzip_vary</item>+ <item>hash</item>+ <item>health_check</item>+ <item>health_check_timeout</item>+ <item>hls</item>+ <item>hls_buffers</item>+ <item>hls_forward_args</item>+ <item>hls_fragment</item>+ <item>hls_mp4_buffer_size</item>+ <item>hls_mp4_max_buffer_size</item>+ <item>http</item>+ <item>http2</item>+ <item>http2_body_preread_size</item>+ <item>http2_chunk_size</item>+ <item>http2_idle_timeout</item>+ <item>http2_max_concurrent_pushes</item>+ <item>http2_max_concurrent_streams</item>+ <item>http2_max_field_size</item>+ <item>http2_max_header_size</item>+ <item>http2_max_requests</item>+ <item>http2_push</item>+ <item>http2_push_preload</item>+ <item>http2_recv_buffer_size</item>+ <item>http2_recv_timeout</item>+ <item>http3</item>+ <item>http3_hq</item>+ <item>http3_max_concurrent_streams</item>+ <item>http3_stream_buffer_size</item>+ <item>if</item>+ <item>if_modified_since</item>+ <item>ignore_invalid_headers</item>+ <item>image_filter</item>+ <item>image_filter_buffer</item>+ <item>image_filter_interlace</item>+ <item>image_filter_jpeg_quality</item>+ <item>image_filter_sharpen</item>+ <item>image_filter_transparency</item>+ <item>image_filter_webp_quality</item>+ <item>imap_auth</item>+ <item>imap_capabilities</item>+ <item>imap_client_buffer</item>+ <item>include</item>+ <item>index</item>+ <item>internal</item>+ <item>internal_redirect</item>+ <item>ip_hash</item>+ <item>js_access</item>+ <item>js_body_filter</item>+ <item>js_content</item>+ <item>js_fetch_buffer_size</item>+ <item>js_fetch_ciphers</item>+ <item>js_fetch_max_response_buffer_size</item>+ <item>js_fetch_protocols</item>+ <item>js_fetch_timeout</item>+ <item>js_fetch_trusted_certificate</item>+ <item>js_fetch_verify</item>+ <item>js_fetch_verify_depth</item>+ <item>js_filter</item>+ <item>js_header_filter</item>+ <item>js_import</item>+ <item>js_include</item>+ <item>js_path</item>+ <item>js_periodic</item>+ <item>js_preload_object</item>+ <item>js_preread</item>+ <item>js_set</item>+ <item>js_shared_dict_zone</item>+ <item>js_var</item>+ <item>keepalive</item>+ <item>keepalive_disable</item>+ <item>keepalive_requests</item>+ <item>keepalive_time</item>+ <item>keepalive_timeout</item>+ <item>keyval</item>+ <item>keyval_zone</item>+ <item>large_client_header_buffers</item>+ <item>least_conn</item>+ <item>least_time</item>+ <item>limit_conn</item>+ <item>limit_conn_dry_run</item>+ <item>limit_conn_log_level</item>+ <item>limit_conn_status</item>+ <item>limit_conn_zone</item>+ <item>limit_except</item>+ <item>limit_rate</item>+ <item>limit_rate_after</item>+ <item>limit_req</item>+ <item>limit_req_dry_run</item>+ <item>limit_req_log_level</item>+ <item>limit_req_status</item>+ <item>limit_req_zone</item>+ <item>limit_zone</item>+ <item>lingering_close</item>+ <item>lingering_time</item>+ <item>lingering_timeout</item>+ <item>listen</item>+ <item>load_module</item>+ <item>location</item>+ <item>lock_file</item>+ <item>log_format</item>+ <item>log_not_found</item>+ <item>log_subrequest</item>+ <item>mail</item>+ <item>map</item>+ <item>map_hash_bucket_size</item>+ <item>map_hash_max_size</item>+ <item>master_process</item>+ <item>match</item>+ <item>max_errors</item>+ <item>max_ranges</item>+ <item>memcached_bind</item>+ <item>memcached_buffer_size</item>+ <item>memcached_connect_timeout</item>+ <item>memcached_gzip_flag</item>+ <item>memcached_next_upstream</item>+ <item>memcached_next_upstream_timeout</item>+ <item>memcached_next_upstream_tries</item>+ <item>memcached_pass</item>+ <item>memcached_read_timeout</item>+ <item>memcached_send_timeout</item>+ <item>memcached_socket_keepalive</item>+ <item>merge_slashes</item>+ <item>mgmt</item>+ <item>min_delete_depth</item>+ <item>mirror</item>+ <item>mirror_request_body</item>+ <item>modern_browser</item>+ <item>modern_browser_value</item>+ <item>mp4</item>+ <item>mp4_buffer_size</item>+ <item>mp4_limit_rate</item>+ <item>mp4_limit_rate_after</item>+ <item>mp4_max_buffer_size</item>+ <item>mp4_start_key_frame</item>+ <item>mqtt</item>+ <item>mqtt_buffers</item>+ <item>mqtt_preread</item>+ <item>mqtt_rewrite_buffer_size</item>+ <item>mqtt_set_connect</item>+ <item>msie_padding</item>+ <item>msie_refresh</item>+ <item>multi_accept</item>+ <item>ntlm</item>+ <item>open_file_cache</item>+ <item>open_file_cache_errors</item>+ <item>open_file_cache_min_uses</item>+ <item>open_file_cache_valid</item>+ <item>open_log_file_cache</item>+ <item>otel_exporter</item>+ <item>otel_service_name</item>+ <item>otel_span_attr</item>+ <item>otel_span_name</item>+ <item>otel_trace</item>+ <item>otel_trace_context</item>+ <item>output_buffers</item>+ <item>override_charset</item>+ <item>pass</item>+ <item>pcre_jit</item>+ <item>perl</item>+ <item>perl_modules</item>+ <item>perl_require</item>+ <item>perl_set</item>+ <item>pid</item>+ <item>pop3_auth</item>+ <item>pop3_capabilities</item>+ <item>port_in_redirect</item>+ <item>postpone_output</item>+ <item>preread_buffer_size</item>+ <item>preread_timeout</item>+ <item>protocol</item>+ <item>proxy_bind</item>+ <item>proxy_buffer</item>+ <item>proxy_buffer_size</item>+ <item>proxy_buffering</item>+ <item>proxy_buffers</item>+ <item>proxy_busy_buffers_size</item>+ <item>proxy_cache</item>+ <item>proxy_cache_background_update</item>+ <item>proxy_cache_bypass</item>+ <item>proxy_cache_convert_head</item>+ <item>proxy_cache_key</item>+ <item>proxy_cache_lock</item>+ <item>proxy_cache_lock_age</item>+ <item>proxy_cache_lock_timeout</item>+ <item>proxy_cache_max_range_offset</item>+ <item>proxy_cache_methods</item>+ <item>proxy_cache_min_uses</item>+ <item>proxy_cache_path</item>+ <item>proxy_cache_purge</item>+ <item>proxy_cache_revalidate</item>+ <item>proxy_cache_use_stale</item>+ <item>proxy_cache_valid</item>+ <item>proxy_connect_timeout</item>+ <item>proxy_cookie_domain</item>+ <item>proxy_cookie_flags</item>+ <item>proxy_cookie_path</item>+ <item>proxy_download_rate</item>+ <item>proxy_force_ranges</item>+ <item>proxy_half_close</item>+ <item>proxy_headers_hash_bucket_size</item>+ <item>proxy_headers_hash_max_size</item>+ <item>proxy_hide_header</item>+ <item>proxy_http_version</item>+ <item>proxy_ignore_client_abort</item>+ <item>proxy_ignore_headers</item>+ <item>proxy_intercept_errors</item>+ <item>proxy_limit_rate</item>+ <item>proxy_max_temp_file_size</item>+ <item>proxy_method</item>+ <item>proxy_next_upstream</item>+ <item>proxy_next_upstream_timeout</item>+ <item>proxy_next_upstream_tries</item>+ <item>proxy_no_cache</item>+ <item>proxy_pass</item>+ <item>proxy_pass_error_message</item>+ <item>proxy_pass_header</item>+ <item>proxy_pass_request_body</item>+ <item>proxy_pass_request_headers</item>+ <item>proxy_protocol</item>+ <item>proxy_protocol_timeout</item>+ <item>proxy_read_timeout</item>+ <item>proxy_redirect</item>+ <item>proxy_request_buffering</item>+ <item>proxy_requests</item>+ <item>proxy_responses</item>+ <item>proxy_send_lowat</item>+ <item>proxy_send_timeout</item>+ <item>proxy_session_drop</item>+ <item>proxy_set_body</item>+ <item>proxy_set_header</item>+ <item>proxy_smtp_auth</item>+ <item>proxy_socket_keepalive</item>+ <item>proxy_ssl</item>+ <item>proxy_ssl_certificate</item>+ <item>proxy_ssl_certificate_key</item>+ <item>proxy_ssl_ciphers</item>+ <item>proxy_ssl_conf_command</item>+ <item>proxy_ssl_crl</item>+ <item>proxy_ssl_name</item>+ <item>proxy_ssl_password_file</item>+ <item>proxy_ssl_protocols</item>+ <item>proxy_ssl_server_name</item>+ <item>proxy_ssl_session_reuse</item>+ <item>proxy_ssl_trusted_certificate</item>+ <item>proxy_ssl_verify</item>+ <item>proxy_ssl_verify_depth</item>+ <item>proxy_store</item>+ <item>proxy_store_access</item>+ <item>proxy_temp_file_write_size</item>+ <item>proxy_temp_path</item>+ <item>proxy_timeout</item>+ <item>proxy_upload_rate</item>+ <item>queue</item>+ <item>quic_active_connection_id_limit</item>+ <item>quic_bpf</item>+ <item>quic_gso</item>+ <item>quic_host_key</item>+ <item>quic_retry</item>+ <item>random</item>+ <item>random_index</item>+ <item>read_ahead</item>+ <item>read_timeout</item>+ <item>real_ip_header</item>+ <item>real_ip_recursive</item>+ <item>recursive_error_pages</item>+ <item>referer_hash_bucket_size</item>+ <item>referer_hash_max_size</item>+ <item>request_pool_size</item>+ <item>reset_timedout_connection</item>+ <item>resolver</item>+ <item>resolver_timeout</item>+ <item>return</item>+ <item>rewrite</item>+ <item>rewrite_log</item>+ <item>root</item>+ <item>satisfy</item>+ <item>scgi_bind</item>+ <item>scgi_buffer_size</item>+ <item>scgi_buffering</item>+ <item>scgi_buffers</item>+ <item>scgi_busy_buffers_size</item>+ <item>scgi_cache</item>+ <item>scgi_cache_background_update</item>+ <item>scgi_cache_bypass</item>+ <item>scgi_cache_key</item>+ <item>scgi_cache_lock</item>+ <item>scgi_cache_lock_age</item>+ <item>scgi_cache_lock_timeout</item>+ <item>scgi_cache_max_range_offset</item>+ <item>scgi_cache_methods</item>+ <item>scgi_cache_min_uses</item>+ <item>scgi_cache_path</item>+ <item>scgi_cache_purge</item>+ <item>scgi_cache_revalidate</item>+ <item>scgi_cache_use_stale</item>+ <item>scgi_cache_valid</item>+ <item>scgi_connect_timeout</item>+ <item>scgi_force_ranges</item>+ <item>scgi_hide_header</item>+ <item>scgi_ignore_client_abort</item>+ <item>scgi_ignore_headers</item>+ <item>scgi_intercept_errors</item>+ <item>scgi_limit_rate</item>+ <item>scgi_max_temp_file_size</item>+ <item>scgi_next_upstream</item>+ <item>scgi_next_upstream_timeout</item>+ <item>scgi_next_upstream_tries</item>+ <item>scgi_no_cache</item>+ <item>scgi_param</item>+ <item>scgi_pass</item>+ <item>scgi_pass_header</item>+ <item>scgi_pass_request_body</item>+ <item>scgi_pass_request_headers</item>+ <item>scgi_read_timeout</item>+ <item>scgi_request_buffering</item>+ <item>scgi_send_timeout</item>+ <item>scgi_socket_keepalive</item>+ <item>scgi_store</item>+ <item>scgi_store_access</item>+ <item>scgi_temp_file_write_size</item>+ <item>scgi_temp_path</item>+ <item>secure_link</item>+ <item>secure_link_md5</item>+ <item>secure_link_secret</item>+ <item>send_lowat</item>+ <item>send_timeout</item>+ <item>sendfile</item>+ <item>sendfile_max_chunk</item>+ <item>server</item>+ <item>server_name</item>+ <item>server_name_in_redirect</item>+ <item>server_names_hash_bucket_size</item>+ <item>server_names_hash_max_size</item>+ <item>server_tokens</item>+ <item>session_log</item>+ <item>session_log_format</item>+ <item>session_log_zone</item>+ <item>set</item>+ <item>set_real_ip_from</item>+ <item>slice</item>+ <item>smtp_auth</item>+ <item>smtp_capabilities</item>+ <item>smtp_client_buffer</item>+ <item>smtp_greeting_delay</item>+ <item>source_charset</item>+ <item>split_clients</item>+ <item>ssi</item>+ <item>ssi_last_modified</item>+ <item>ssi_min_file_chunk</item>+ <item>ssi_silent_errors</item>+ <item>ssi_types</item>+ <item>ssi_value_length</item>+ <item>ssl</item>+ <item>ssl_alpn</item>+ <item>ssl_buffer_size</item>+ <item>ssl_certificate</item>+ <item>ssl_certificate_key</item>+ <item>ssl_ciphers</item>+ <item>ssl_client_certificate</item>+ <item>ssl_conf_command</item>+ <item>ssl_crl</item>+ <item>ssl_dhparam</item>+ <item>ssl_early_data</item>+ <item>ssl_ecdh_curve</item>+ <item>ssl_engine</item>+ <item>ssl_handshake_timeout</item>+ <item>ssl_name</item>+ <item>ssl_ocsp</item>+ <item>ssl_ocsp_cache</item>+ <item>ssl_ocsp_responder</item>+ <item>ssl_password_file</item>+ <item>ssl_prefer_server_ciphers</item>+ <item>ssl_preread</item>+ <item>ssl_protocols</item>+ <item>ssl_reject_handshake</item>+ <item>ssl_server_name</item>+ <item>ssl_session_cache</item>+ <item>ssl_session_ticket_key</item>+ <item>ssl_session_tickets</item>+ <item>ssl_session_timeout</item>+ <item>ssl_stapling</item>+ <item>ssl_stapling_file</item>+ <item>ssl_stapling_responder</item>+ <item>ssl_stapling_verify</item>+ <item>ssl_trusted_certificate</item>+ <item>ssl_verify</item>+ <item>ssl_verify_client</item>+ <item>ssl_verify_depth</item>+ <item>starttls</item>+ <item>state</item>+ <item>status</item>+ <item>status_format</item>+ <item>status_zone</item>+ <item>sticky</item>+ <item>sticky_cookie_insert</item>+ <item>stream</item>+ <item>stub_status</item>+ <item>sub_filter</item>+ <item>sub_filter_last_modified</item>+ <item>sub_filter_once</item>+ <item>sub_filter_types</item>+ <item>subrequest_output_buffer_size</item>+ <item>tcp_nodelay</item>+ <item>tcp_nopush</item>+ <item>thread_pool</item>+ <item>timeout</item>+ <item>timer_resolution</item>+ <item>try_files</item>+ <item>types</item>+ <item>types_hash_bucket_size</item>+ <item>types_hash_max_size</item>+ <item>underscores_in_headers</item>+ <item>uninitialized_variable_warn</item>+ <item>upstream</item>+ <item>upstream_conf</item>+ <item>usage_report</item>+ <item>use</item>+ <item>user</item>+ <item>userid</item>+ <item>userid_domain</item>+ <item>userid_expires</item>+ <item>userid_flags</item>+ <item>userid_mark</item>+ <item>userid_name</item>+ <item>userid_p3p</item>+ <item>userid_path</item>+ <item>userid_service</item>+ <item>uuid_file</item>+ <item>uwsgi_bind</item>+ <item>uwsgi_buffer_size</item>+ <item>uwsgi_buffering</item>+ <item>uwsgi_buffers</item>+ <item>uwsgi_busy_buffers_size</item>+ <item>uwsgi_cache</item>+ <item>uwsgi_cache_background_update</item>+ <item>uwsgi_cache_bypass</item>+ <item>uwsgi_cache_key</item>+ <item>uwsgi_cache_lock</item>+ <item>uwsgi_cache_lock_age</item>+ <item>uwsgi_cache_lock_timeout</item>+ <item>uwsgi_cache_max_range_offset</item>+ <item>uwsgi_cache_methods</item>+ <item>uwsgi_cache_min_uses</item>+ <item>uwsgi_cache_path</item>+ <item>uwsgi_cache_purge</item>+ <item>uwsgi_cache_revalidate</item>+ <item>uwsgi_cache_use_stale</item>+ <item>uwsgi_cache_valid</item>+ <item>uwsgi_connect_timeout</item>+ <item>uwsgi_force_ranges</item>+ <item>uwsgi_hide_header</item>+ <item>uwsgi_ignore_client_abort</item>+ <item>uwsgi_ignore_headers</item>+ <item>uwsgi_intercept_errors</item>+ <item>uwsgi_limit_rate</item>+ <item>uwsgi_max_temp_file_size</item>+ <item>uwsgi_modifier1</item>+ <item>uwsgi_modifier2</item>+ <item>uwsgi_next_upstream</item>+ <item>uwsgi_next_upstream_timeout</item>+ <item>uwsgi_next_upstream_tries</item>+ <item>uwsgi_no_cache</item>+ <item>uwsgi_param</item>+ <item>uwsgi_pass</item>+ <item>uwsgi_pass_header</item>+ <item>uwsgi_pass_request_body</item>+ <item>uwsgi_pass_request_headers</item>+ <item>uwsgi_read_timeout</item>+ <item>uwsgi_request_buffering</item>+ <item>uwsgi_send_timeout</item>+ <item>uwsgi_socket_keepalive</item>+ <item>uwsgi_ssl_certificate</item>+ <item>uwsgi_ssl_certificate_key</item>+ <item>uwsgi_ssl_ciphers</item>+ <item>uwsgi_ssl_conf_command</item>+ <item>uwsgi_ssl_crl</item>+ <item>uwsgi_ssl_name</item>+ <item>uwsgi_ssl_password_file</item>+ <item>uwsgi_ssl_protocols</item>+ <item>uwsgi_ssl_server_name</item>+ <item>uwsgi_ssl_session_reuse</item>+ <item>uwsgi_ssl_trusted_certificate</item>+ <item>uwsgi_ssl_verify</item>+ <item>uwsgi_ssl_verify_depth</item>+ <item>uwsgi_store</item>+ <item>uwsgi_store_access</item>+ <item>uwsgi_temp_file_write_size</item>+ <item>uwsgi_temp_path</item>+ <item>valid_referers</item>+ <item>variables_hash_bucket_size</item>+ <item>variables_hash_max_size</item>+ <item>worker_aio_requests</item>+ <item>worker_connections</item>+ <item>worker_cpu_affinity</item>+ <item>worker_priority</item>+ <item>worker_processes</item>+ <item>worker_rlimit_core</item>+ <item>worker_rlimit_nofile</item>+ <item>worker_shutdown_timeout</item>+ <item>working_directory</item>+ <item>xclient</item>+ <item>xml_entities</item>+ <item>xslt_last_modified</item>+ <item>xslt_param</item>+ <item>xslt_string_param</item>+ <item>xslt_stylesheet</item>+ <item>xslt_types</item>+ <item>zone</item>+ <item>zone_sync</item>+ <item>zone_sync_buffers</item>+ <item>zone_sync_connect_retry_interval</item>+ <item>zone_sync_connect_timeout</item>+ <item>zone_sync_interval</item>+ <item>zone_sync_recv_buffer_size</item>+ <item>zone_sync_server</item>+ <item>zone_sync_ssl</item>+ <item>zone_sync_ssl_certificate</item>+ <item>zone_sync_ssl_certificate_key</item>+ <item>zone_sync_ssl_ciphers</item>+ <item>zone_sync_ssl_conf_command</item>+ <item>zone_sync_ssl_crl</item>+ <item>zone_sync_ssl_name</item>+ <item>zone_sync_ssl_password_file</item>+ <item>zone_sync_ssl_protocols</item>+ <item>zone_sync_ssl_server_name</item>+ <item>zone_sync_ssl_trusted_certificate</item>+ <item>zone_sync_ssl_verify</item>+ <item>zone_sync_ssl_verify_depth</item>+ <item>zone_sync_timeout</item>+ </list>++ <!-- see https://nginx.org/en/docs/varindex.html for a full list of variables -->+ <list name="variables">+ <item>$ancient_browser</item>+ <item>$args</item>+ <item>$binary_remote_addr</item>+ <item>$body_bytes_sent</item>+ <item>$bytes_received</item>+ <item>$bytes_sent</item>+ <item>$connection</item>+ <item>$connection_requests</item>+ <item>$connection_time</item>+ <item>$connections_active</item>+ <item>$connections_reading</item>+ <item>$connections_waiting</item>+ <item>$connections_writing</item>+ <item>$content_length</item>+ <item>$content_type</item>+ <item>$date_gmt</item>+ <item>$date_local</item>+ <item>$document_root</item>+ <item>$document_uri</item>+ <item>$fastcgi_path_info</item>+ <item>$fastcgi_script_name</item>+ <item>$geoip_area_code</item>+ <item>$geoip_city</item>+ <item>$geoip_city_continent_code</item>+ <item>$geoip_city_country_code</item>+ <item>$geoip_city_country_code3</item>+ <item>$geoip_city_country_name</item>+ <item>$geoip_country_code</item>+ <item>$geoip_country_code3</item>+ <item>$geoip_country_name</item>+ <item>$geoip_dma_code</item>+ <item>$geoip_latitude</item>+ <item>$geoip_longitude</item>+ <item>$geoip_org</item>+ <item>$geoip_postal_code</item>+ <item>$geoip_region</item>+ <item>$geoip_region_name</item>+ <item>$gzip_ratio</item>+ <item>$host</item>+ <item>$hostname</item>+ <item>$http2</item>+ <item>$http3</item>+ <item>$https</item>+ <item>$invalid_referer</item>+ <item>$is_args</item>+ <item>$jwt_payload</item>+ <item>$limit_conn_status</item>+ <item>$limit_rate</item>+ <item>$limit_req_status</item>+ <item>$memcached_key</item>+ <item>$modern_browser</item>+ <item>$mqtt_preread_clientid</item>+ <item>$mqtt_preread_username</item>+ <item>$msec</item>+ <item>$msie</item>+ <item>$nginx_version</item>+ <item>$otel_parent_id</item>+ <item>$otel_parent_sampled</item>+ <item>$otel_span_id</item>+ <item>$otel_trace_id</item>+ <item>$pid</item>+ <item>$pipe</item>+ <item>$protocol</item>+ <item>$proxy_add_x_forwarded_for</item>+ <item>$proxy_host</item>+ <item>$proxy_port</item>+ <item>$proxy_protocol_addr</item>+ <item>$proxy_protocol_port</item>+ <item>$proxy_protocol_server_addr</item>+ <item>$proxy_protocol_server_port</item>+ <item>$proxy_protocol_tlv_aws_vpce_id</item>+ <item>$proxy_protocol_tlv_azure_pel_id</item>+ <item>$proxy_protocol_tlv_gcp_conn_id</item>+ <item>$query_string</item>+ <item>$realip_remote_addr</item>+ <item>$realip_remote_port</item>+ <item>$realpath_root</item>+ <item>$remote_addr</item>+ <item>$remote_port</item>+ <item>$remote_user</item>+ <item>$request</item>+ <item>$request_body</item>+ <item>$request_body_file</item>+ <item>$request_completion</item>+ <item>$request_filename</item>+ <item>$request_id</item>+ <item>$request_length</item>+ <item>$request_method</item>+ <item>$request_time</item>+ <item>$request_uri</item>+ <item>$scheme</item>+ <item>$secure_link</item>+ <item>$secure_link_expires</item>+ <item>$server_addr</item>+ <item>$server_name</item>+ <item>$server_port</item>+ <item>$server_protocol</item>+ <item>$session_log_binary_id</item>+ <item>$session_log_id</item>+ <item>$session_time</item>+ <item>$slice_range</item>+ <item>$ssl_alpn_protocol</item>+ <item>$ssl_cipher</item>+ <item>$ssl_ciphers</item>+ <item>$ssl_client_cert</item>+ <item>$ssl_client_escaped_cert</item>+ <item>$ssl_client_fingerprint</item>+ <item>$ssl_client_i_dn</item>+ <item>$ssl_client_i_dn_legacy</item>+ <item>$ssl_client_raw_cert</item>+ <item>$ssl_client_s_dn</item>+ <item>$ssl_client_s_dn_legacy</item>+ <item>$ssl_client_serial</item>+ <item>$ssl_client_v_end</item>+ <item>$ssl_client_v_remain</item>+ <item>$ssl_client_v_start</item>+ <item>$ssl_client_verify</item>+ <item>$ssl_curve</item>+ <item>$ssl_curves</item>+ <item>$ssl_early_data</item>+ <item>$ssl_preread_alpn_protocols</item>+ <item>$ssl_preread_protocol</item>+ <item>$ssl_preread_server_name</item>+ <item>$ssl_protocol</item>+ <item>$ssl_server_name</item>+ <item>$ssl_session_id</item>+ <item>$ssl_session_reused</item>+ <item>$status</item>+ <item>$tcpinfo_rcv_space</item>+ <item>$tcpinfo_rtt</item>+ <item>$tcpinfo_rttvar</item>+ <item>$tcpinfo_snd_cwnd</item>+ <item>$time_iso8601</item>+ <item>$time_local</item>+ <item>$uid_got</item>+ <item>$uid_reset</item>+ <item>$uid_set</item>+ <item>$upstream_addr</item>+ <item>$upstream_bytes_received</item>+ <item>$upstream_bytes_sent</item>+ <item>$upstream_cache_status</item>+ <item>$upstream_connect_time</item>+ <item>$upstream_first_byte_time</item>+ <item>$upstream_header_time</item>+ <item>$upstream_last_server_name</item>+ <item>$upstream_queue_time</item>+ <item>$upstream_response_length</item>+ <item>$upstream_response_time</item>+ <item>$upstream_session_time</item>+ <item>$upstream_status</item>+ <item>$uri</item>+ </list>++ <list name="keywords">+ <item>on</item>+ <item>off</item>+ <item>ssl</item> <!-- listen ... ssl -->+ <item>all</item> <!-- deny all -->+ </list>++ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal">+ <DetectSpaces/>+ <keyword attribute="Directive" context="Params" String="directives"/>+ <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Block"/>+ <IncludeRules context="Variables"/>+ <DetectChar attribute="String" context="Strings" char="'" beginRegion="String"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="Params">+ <DetectSpaces/>+ <DetectChar attribute="Symbol" context="#pop" char=";"/>+ <DetectChar attribute="Symbol" context="#pop" char="{" beginRegion="Block"/>+ <IncludeRules context="Variables"/>+ <DetectChar attribute="String" context="Strings" char="'" beginRegion="String"/>+ <RegExpr attribute="Number" context="#stay" String="\b[0-9]+&units;?\b"/>+ <keyword attribute="Keyword" context="#stay" String="keywords"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Variable" lineEndContext="#pop" name="Variables">+ <keyword attribute="Variable" context="#stay" String="variables"/>+ <RegExpr attribute="Variable" String="\$[a-zA-Z_0-9]+\b" context="#stay"/>+ </context>++ <context attribute="String" lineEndContext="#stay" name="Strings">+ <IncludeRules context="Variables"/>+ <DetectChar attribute="String" context="#pop" char="'" endRegion="String"/>+ </context>++ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Directive" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Variable" defStyleNum="dsVariable"/>+ <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Number" defStyleNum="dsDecVal"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#" position="afterwhitespace" />+ </comments>+ <keywords casesensitive="1" />+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
+ xml/ninja.xml view
@@ -0,0 +1,284 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language[+ <!ENTITY ident "[-_a-zA-Z0-9]+">+ <!ENTITY deplist "[^$|:]+">+]>+<language+ name="Ninja" section="Other"+ version="3" kateversion="5.0"+ extensions="*.ninja"+ author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"+>+ <highlighting>+ <list name="keywords">+ <item>rule</item>+ <item>build</item>+ <item>pool</item>+ <item>default</item>+ <item>include</item>+ <item>subninja</item>+ </list>++ <list name="other keywords">+ <item>console</item>+ <item>phony</item>+ <item>depth</item>+ </list>++ <list name="topVariables">+ <item>builddir</item>+ <item>ninja_required_version</item>+ </list>++ <list name="ruleVariables">+ <item>command</item>+ <item>console</item>+ <item>depfile</item>+ <item>deps</item>+ <item>msvc_deps_prefix</item>+ <item>description</item>+ <item>dyndep</item>+ <item>generator</item>+ <item>in</item>+ <item>in_newline</item>+ <item>out</item>+ <item>pool</item>+ <item>restat</item>+ <item>rspfile</item>+ <item>rspfile_content</item>+ </list>++ <contexts>+ <context attribute="Normal" name="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="ErrorOrComment">+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ <WordDetect attribute="Keyword" context="BuildStatement" String="build"/>+ <WordDetect attribute="Keyword" context="RuleStatement" String="rule"/>+ <WordDetect attribute="Keyword" context="PoolStatement" String="pool"/>+ <keyword attribute="Keyword" context="SimpleStatement" String="keywords"/>+ <keyword attribute="Special Key" context="VariableAssignment" String="topVariables"/>+ <RegExpr attribute="Key" context="VariableAssignment" String="&ident;"/>+ </context>++ <context attribute="Normal" name="ErrorOrComment" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectSpaces/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Error" name="Error" lineEndContext="#pop"/>++ <!-- rule -->++ <context attribute="Normal" name="RuleStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectSpaces/>+ <RegExpr attribute="Normal" context="#pop!RuleKeys" String="&ident;"/>+ </context>++ <context attribute="Normal" name="RuleKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces context="RuleKey"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal" name="RuleKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>+ <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="pool"/>+ <keyword attribute="Special Key" context="#pop!RuleVariableAssignment" String="ruleVariables"/>+ </context>++ <context attribute="Normal" name="RuleVariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectSpaces/>+ <DetectChar attribute="Operator" context="#pop!RuleValue" char="="/>+ </context>++ <context attribute="Normal" name="RuleValue" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="RuleDollar" char="$" lookAhead="true"/>+ <AnyChar attribute="Symbol" context="#stay" String="<>&|=(){}[]"';!%?*"/>+ <RegExpr attribute="Normal" context="#stay" String="[^<>&|=(){}[\]"';!%?*$]"/>+ </context>++ <context attribute="Error" name="RuleDollar" lineEndContext="#pop">+ <LineContinue attribute="Line Continuation" context="#pop!LineContinuation" char="$"/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=" "/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1="$"/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=":"/>+ <Detect2Chars attribute="Variable Delimiter" context="#pop!RuleOpenVariableName" char="$" char1="{"/>+ <DetectChar attribute="Variable Delimiter" context="#pop!RuleVariableName" char="$"/>+ </context>++ <context attribute="Variable" name="RuleOpenVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectChar attribute="Variable Delimiter" context="#pop" char="}"/>+ <keyword attribute="Special Variable" context="#stay" String="ruleVariables"/>+ <RegExpr attribute="Variable" context="#stay" String="&ident;"/>+ </context>++ <context attribute="Variable" name="RuleVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <keyword attribute="Special Variable" context="#pop" String="ruleVariables"/>+ <RegExpr attribute="Variable" context="#pop" String="&ident;"/>+ </context>++ <!-- build -->++ <context attribute="Normal" name="BuildStatement" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <DetectChar attribute="Operator" context="#pop!BuildRuleName" char=":"/>+ <DetectChar attribute="Operator" context="#pop!ImplicitOutput" char="|"/>+ <RegExpr attribute="Normal" context="#stay" String="&deplist;"/>+ </context>++ <context attribute="Implicit Output" name="ImplicitOutput" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <DetectChar attribute="Operator" context="#pop!BuildRuleName" char=":"/>+ <RegExpr attribute="Implicit Output" context="#stay" String="&deplist;"/>+ </context>++ <context attribute="Normal" name="BuildRuleName" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectSpaces/>+ <WordDetect attribute="Special Rule Name" context="#pop!BuildDependancies" String="phony"/>+ <RegExpr attribute="Rule Name" context="#pop!BuildDependancies" String="&ident;"/>+ </context>++ <context attribute="Dependancy" name="BuildDependancies" lineEndContext="#pop!BuildKeys">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <Detect2Chars attribute="Operator" context="#pop!ImplicitBuildDependancies" char="|" char1="@"/>+ <DetectChar attribute="Operator" context="#pop!ImplicitBuildDependancies" char="|"/>+ <DetectChar attribute="Error" context="#stay" char=":"/>+ <RegExpr attribute="Dependancy" context="#stay" String="&deplist;"/>+ </context>++ <context attribute="Implicit Dependancy" name="ImplicitBuildDependancies" lineEndContext="#pop!BuildKeys">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <Detect2Chars attribute="Operator" context="#stay" char="|" char1="@"/>+ <DetectChar attribute="Operator" context="#stay" char="|"/>+ <DetectChar attribute="Error" context="#stay" char=":"/>+ <RegExpr attribute="Implicit Dependancy" context="#stay" String="&deplist;"/>+ </context>++ <context attribute="Normal" name="BuildKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces context="BuildKey"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal" name="BuildKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>+ <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="pool"/>+ <keyword attribute="Special Key" context="#pop!VariableAssignment" String="ruleVariables"/>+ <RegExpr attribute="Key" context="#pop!VariableAssignment" String="&ident;"/>+ </context>++ <!-- pool -->++ <context attribute="Normal" name="PoolStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectSpaces/>+ <RegExpr attribute="Normal" context="#pop!PoolKeys" String="&ident;"/>+ </context>++ <context attribute="Normal" name="PoolKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces context="PoolKey"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal" name="PoolKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>+ <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="depth"/>+ </context>++ <context attribute="Normal" name="PoolVariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectSpaces/>+ <DetectChar attribute="Operator" context="#pop!PoolValue" char="="/>+ </context>++ <context attribute="Normal" name="PoolValue" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <WordDetect attribute="Special Value" context="BuildStatement" String="console"/>+ <RegExpr attribute="Normal" context="#stay" String="&ident;"/>+ </context>++ <!-- default, include, subninja -->++ <context attribute="Normal" name="SimpleStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <RegExpr attribute="Normal" context="#stay" String="&deplist;"/>+ </context>++ <!-- Value -->++ <context attribute="Normal" name="VariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectSpaces/>+ <DetectChar attribute="Operator" context="#pop!Value" char="="/>+ </context>++ <context attribute="Normal" name="Value" lineEndContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>+ <AnyChar attribute="Symbol" context="#stay" String="<>&|=(){}[]"';!%?*"/>+ <RegExpr attribute="Normal" context="#stay" String="[^<>&|=(){}[\]"';!%?*$]"/>+ </context>++ <!-- $ -->++ <context attribute="Error" name="Dollar" lineEndContext="#pop">+ <LineContinue attribute="Line Continuation" context="#pop!LineContinuation" char="$"/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=" "/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1="$"/>+ <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=":"/>+ <Detect2Chars attribute="Variable Delimiter" context="#pop!OpenVariableName" char="$" char1="{"/>+ <DetectChar attribute="Variable Delimiter" context="#pop!VariableName" char="$"/>+ </context>++ <context attribute="Variable" name="OpenVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <DetectChar attribute="Variable Delimiter" context="#pop" char="}"/>+ <RegExpr attribute="Variable" context="#stay" String="&ident;"/>+ </context>++ <context attribute="Variable" name="VariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">+ <RegExpr attribute="Variable" context="#pop" String="&ident;"/>+ </context>++ <context attribute="Line Continuation" name="LineContinuation" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <DetectSpaces/>+ </context>++ <!-- comment -->++ <context attribute="Comment" lineEndContext="#pop" name="Comment">+ <DetectSpaces/>+ <IncludeRules context="##Comments" />+ <DetectIdentifier attribute="Comment" />+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Rule Name" defStyleNum="dsFunction" spellChecking="0"/>+ <itemData name="Special Rule Name" defStyleNum="dsBuiltIn" spellChecking="0"/>+ <itemData name="Dependancy" defStyleNum="dsNormal" spellChecking="0"/>+ <itemData name="Implicit Dependancy" defStyleNum="dsNormal" italic="1" spellChecking="0"/>+ <itemData name="Implicit Output" defStyleNum="dsNormal" italic="1" spellChecking="0"/>+ <itemData name="Special Key" defStyleNum="dsBuiltIn" spellChecking="0"/>+ <itemData name="Key" defStyleNum="dsVariable" spellChecking="0"/>+ <itemData name="Variable Delimiter" defStyleNum="dsOperator" spellChecking="0"/>+ <itemData name="Special Variable" defStyleNum="dsBuiltIn" spellChecking="0"/>+ <itemData name="Variable" defStyleNum="dsVariable" spellChecking="0"/>+ <itemData name="Special Value" defStyleNum="dsBuiltIn" spellChecking="0"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>+ <itemData name="Line Continuation" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="Special Char" defStyleNum="dsSpecialChar" spellChecking="0"/>+ <itemData name="Symbol" defStyleNum="dsNormal" bold="1" spellChecking="0"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#"/>+ </comments>+ </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
xml/nix.xml view
@@ -4,7 +4,7 @@ ]> <!--- SPDX-FileCopyrightText: 2024 Marco Rebhan <me@dblsaiko.net>+ SPDX-FileCopyrightText: 2024-2025 Katalin Rebhan <me@dblsaiko.net> SPDX-FileContributor: Tuan Le <webmaster@michivi.com> SPDX-License-Identifier: MIT@@ -12,18 +12,17 @@ <language name="Nix"- version="4"+ version="5" kateversion="5.79" section="Scripts" extensions="*.nix" casesensitive="1"- author="Marco Rebhan <me@dblsaiko.net>"+ author="Katalin Rebhan <me@dblsaiko.net>" license="MIT" priority="1" > <highlighting> <list name="keywords">- <item>assert</item> <item>rec</item> <item>and</item> <item>or</item>@@ -50,6 +49,7 @@ <WordDetect String="let" attribute="Keyword" context="Let" /> <WordDetect String="if" attribute="Keyword" context="If" /> <WordDetect String="with" attribute="Keyword" context="With" />+ <WordDetect String="assert" attribute="Keyword" context="Assert" /> <Detect2Chars char="/" char1="/" attribute="Operator" /> <Detect2Chars char="?" char1="?" attribute="Operator" /> <Detect2Chars char="+" char1="+" attribute="Operator" />@@ -259,6 +259,10 @@ </context> <context name="With" attribute="Normal Text" lineEndContext="#stay">+ <DetectChar char=";" attribute="Symbol" context="#pop" />+ <IncludeRules context="Expression" />+ </context>+ <context name="Assert" attribute="Normal Text" lineEndContext="#stay"> <DetectChar char=";" attribute="Symbol" context="#pop" /> <IncludeRules context="Expression" /> </context>
xml/ocaml.xml view
@@ -18,9 +18,9 @@ extensions="*.ml;*.mli" mimetype="text/x-ocaml" section="Sources"- version="11"+ version="12" priority="10"- kateversion="5.79"+ kateversion="6.22" author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)" license="LGPL" >
+ xml/ocamllex.xml view
@@ -0,0 +1,82 @@+<?xml version="1.0" encoding="UTF-8"?>+<!-- Kate syntax highlighting for the Objective Caml 'Ocamlllex' -->+<!DOCTYPE language+[+<!-- Regular expresion constants: -->+<!ENTITY LETTER "A-Za-z\300-\326\330-\366\370-\377"> <!-- Latin-1 letters. -->+<!ENTITY IDENT "`?[&LETTER;_][&LETTER;0-9_']*"> <!-- OCaml identifiers. -->+<!ENTITY ESC "(\\[ntbr'"\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->+]>+<language name="Objective Caml Ocamllex"+ section="Sources"+ extensions="*.mll"+ mimetype=""+ version="8"+ kateversion="6.22"+ priority="10"+ author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"+ license="LGPL" >++ <highlighting>++ <list name="keywords">+ <item>and</item>+ <item>as</item>+ <item>eof</item>+ <item>let</item>+ <item>parse</item>+ <item>rule</item>+ <item>shortest</item>+ </list>++ <contexts>+ <context name="Rules" lineEndContext="#stay" attribute="Normal">+ <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />+ <DetectChar char="{" context="Ocaml" attribute="Normal" beginRegion="code" />+ <DetectChar char=""" context="String" attribute="String" />+ <RegExpr String="'(&ESC;|[^'])'" context="#stay" attribute="Character" />+ <keyword String="keywords" context="#stay" attribute="Keyword" />+ <RegExpr String="&IDENT;" context="#stay" attribute="Identifier" />+ <DetectChar char="}" context="#stay" attribute="Mismatched Brackets" />+ <Detect2Chars char="*" char1=")" context="#stay" attribute="Mismatched Brackets" />+ </context>++ <context name="Comment" lineEndContext="#stay" attribute="Comment">+ <Detect2Chars char="*" char1=")" context="#pop" attribute="Comment" endRegion="comment" />+ <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />+ <DetectChar char=""" context="String" attribute="String" />+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>++ <context name="Ocaml" lineEndContext="#stay" attribute="Normal">+ <DetectChar char="}" context="#pop" attribute="Normal" endRegion="code" />+ <IncludeRules context="##Objective Caml" includeAttrib="true" />+ </context>++ <context name="String" lineEndContext="#stay" attribute="String">+ <DetectChar char=""" context="#pop" attribute="String" />+ <RegExpr String="&ESC;|\\$" context="#stay" attribute="Escaped Characters" />+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsOthers" />+ <itemData name="Identifier" defStyleNum="dsNormal" />+ <itemData name="Keyword" defStyleNum="dsOthers" bold="true" />+ <itemData name="Character" defStyleNum="dsChar" />+ <itemData name="String" defStyleNum="dsString" />+ <itemData name="Escaped Characters" defStyleNum="dsChar" />+ <itemData name="Comment" defStyleNum="dsComment" />+ <itemData name="Mismatched Brackets" defStyleNum="dsError" />+ </itemDatas>+ </highlighting>++ <general>+ <keywords casesensitive="true" />+ <comments>+ <comment name="multiLine" start="(*" end="*)" region="comment" />+ </comments>+ </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
+ xml/ocamlyacc.xml view
@@ -0,0 +1,162 @@+<?xml version="1.0" encoding="UTF-8"?>+<!-- Kate syntax highlighting for the Objective Caml 'Ocamlllex' -->+<!DOCTYPE language+[+<!-- Regular expresion constants: -->+<!ENTITY LOWER "a-z\300-\326\330-\337"> <!-- Lowercase Latin-1 letters. -->+<!ENTITY UPPER "A-Z\340-\366\370-\377"> <!-- Uppercase Latin-1 letters. -->+<!ENTITY LETTER "&LOWER;&UPPER;"> <!-- All Latin-1 letters. -->+<!ENTITY LIDENT "[&LOWER;_][&LETTER;0-9_']*"> <!-- Lowercase OCaml identifiers. -->+<!ENTITY UIDENT "`?[&UPPER;][&LETTER;0-9_']*"> <!-- Uppercase OCaml identifiers. -->+<!ENTITY IDENT "`?[&LETTER;][&LETTER;0-9_']*"> <!-- All OCaml identifiers. -->+]>+<language name="Objective Caml Ocamlyacc"+ section="Sources"+ extensions="*.mly"+ mimetype=""+ version="7"+ kateversion="6.22"+ priority="10"+ author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"+ license="LGPL" >++ <highlighting>+ <list name="typed symbol list keywords">+ <item>%token</item>+ <item>%type</item>+ </list>++ <list name="symbol list keywords">+ <item>%left</item>+ <item>%right</item>+ <item>%nonassoc</item>+ <item>%start</item>+ </list>++ <list name="rule keywords">+ <item>%prec</item>+ <item>error</item>+ </list>++ <contexts>+ <!-- Note: Because the Yacc grammar is so simple I've written this so that any symbol+ that has not been specifically dealt with by a highlighting rule is an error. -->++ <!-- Declaration section: Header sections and Yacc symbol declararations. -->+ <!-- A %% marks the end of the Declaration section and the start of the rules section. -->+ <context name="Declarations" lineEndContext="#stay" attribute="Error">+ <Detect2Chars char="%" char1="{" context="Header" attribute="Normal" beginRegion="header" />+ <keyword String="typed symbol list keywords" context="Typed Symbol List" attribute="Keyword" />+ <keyword String="symbol list keywords" context="Symbol List" attribute="Keyword" />+ <Detect2Chars char="%" char1="%" context="Rules" attribute="Normal" />+ <IncludeRules context="General" />+ </context>++ <!-- Header section: Ocaml code in the declarations between %{ %} brackets -->+ <context name="Header" lineEndContext="#stay" attribute="Normal">+ <Detect2Chars char="%" char1="}" context="#pop" attribute="Normal" endRegion="header" />+ <IncludeRules context="##Objective Caml" includeAttrib="true" />+ </context>++ <!-- A typed symbol list: an optional Ocaml type declaration between < > brackets, followed by a symbol list. -->+ <context name="Typed Symbol List" lineEndContext="#pop" attribute="Error">+ <DetectChar char="<" context="Type" attribute="Normal" />+ <RegExpr String="&UIDENT;" context="Symbol List" attribute="Uppercase Name (Token)" />+ <RegExpr String="&LIDENT;" context="Symbol List" attribute="Lowercase Name (Rule)" />+ <IncludeRules context="General" />+ </context>+ <context name="Type" lineEndContext="#stay" attribute="Normal">+ <DetectChar char=">" context="#pop" attribute="Normal" />+ <IncludeRules context="##Objective Caml" includeAttrib="true" />+ </context>++ <!-- A symbol list: one line of sybmol names and option comments. -->+ <context name="Symbol List" lineEndContext="#pop" attribute="Error">+ <RegExpr String="&UIDENT;" context="#stay" attribute="Uppercase Name (Token)" />+ <RegExpr String="&LIDENT;" context="#stay" attribute="Lowercase Name (Rule)" />+ <IncludeRules context="General" />+ </context>++ <!-- Rules section:. -->+ <!-- A %% marks the end of the rules section and the start of the trailer section: -->+ <context name="Rules" lineEndContext="#stay" attribute="Error">+ <Detect2Chars char="%" char1="%" context="Trailer" attribute="Normal" />+ <RegExpr String="&IDENT;" context="Rule, Expecting Colon" attribute="Rule Definition Name" beginRegion="rule" />+ <IncludeRules context="General" />+ </context>+ <context name="Rule, Expecting Colon" lineEndContext="#stay" attribute="Error">+ <DetectChar char=":" context="Rule" attribute="Normal" />+ <!-- Incomplete rule before the start of the trailer: -->+ <Detect2Chars char="%" char1="%" context="Trailer" attribute="Error" />+ <IncludeRules context="General" />+ </context>+ <context name="Rule" lineEndContext="#stay" attribute="Error">+ <DetectChar char=";" context="#pop#pop" attribute="Normal" endRegion="rule" />+ <DetectChar char="|" context="#stay" attribute="Normal" />+ <keyword String="rule keywords" context="#stay" attribute="Keyword" />+ <RegExpr String="&UIDENT;" context="#stay" attribute="Uppercase Name (Token)" />+ <RegExpr String="&LIDENT;" context="#stay" attribute="Lowercase Name (Rule)" />+ <DetectChar char="{" context="Action" attribute="Normal" beginRegion="action" />+ <IncludeRules context="General" />+ </context>++ <!-- A rule action: Ocaml code between { } brackets containing $1,$2,$3.. symbols. -->+ <!-- (The "Nested Action" contexts override the rules for [ ] and { } brackets in the Objective+ Caml highlighting file. They make make the $1,$2,$3.. symbols show up inside those brackets.) -->+ <context name="Action" lineEndContext="#stay" attribute="Normal">+ <DetectChar char="}" context="#pop" attribute="Normal" endRegion="action" />+ <RegExpr String="[$][0-9]+" context="#stay" attribute="Semantic Attribute" />+ <DetectChar char="{" context="Nested Action 1" />+ <DetectChar char="[" context="Nested Action 2" />+ <IncludeRules context="##Objective Caml" includeAttrib="true" />+ </context>+ <context name="Nested Action 1" lineEndContext="#stay" attribute="Normal">+ <DetectChar char="}" context="#pop" />+ <IncludeRules context="Action" includeAttrib="true" />+ </context>+ <context name="Nested Action 2" lineEndContext="#stay" attribute="Normal">+ <DetectChar char="]" context="#pop" />+ <IncludeRules context="Action" includeAttrib="true" />+ </context>++ <!-- Trailer section: Ocaml code until the end of the file. -->+ <context name="Trailer" lineEndContext="#stay" attribute="Normal">+ <IncludeRules context="##Objective Caml" includeAttrib="true" />+ </context>++ <!-- General rules for all contexts: -->+ <!-- 1) Whitespace is expected. -->+ <!-- 2) Ocamlyacc's comments are in /* */ brackets and are nestable. -->+ <context name="General" lineEndContext="#stay" attribute="Normal">+ <DetectSpaces context="#stay" attribute="Normal" />+ <Detect2Chars char="/" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />+ </context>+ <context name="Comment" lineEndContext="#stay" attribute="Comment">+ <Detect2Chars char="*" char1="/" context="#pop" attribute="Comment" endRegion="comment" />+ <Detect2Chars char="/" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />+ <DetectSpaces />+ <IncludeRules context="##Comments" />+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Keyword" defStyleNum="dsOthers" bold="true" />+ <itemData name="Normal" defStyleNum="dsOthers" />+ <itemData name="Uppercase Name (Token)" defStyleNum="dsOthers" />+ <itemData name="Lowercase Name (Rule)" defStyleNum="dsOthers" italic="true" />+ <itemData name="Rule Definition Name" defStyleNum="dsOthers" italic="true" bold="true" />+ <itemData name="Semantic Attribute" defStyleNum="dsOthers" />+ <itemData name="Comment" defStyleNum="dsComment" />+ <itemData name="Error" defStyleNum="dsError" />+ </itemDatas>+ </highlighting>++ <general>+ <keywords casesensitive="true" weakDeliminator="%" />+ <comments>+ <comment name="multiLine" start="/*" end="*/" region="comment" />+ </comments>+ </general>+</language>+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
xml/orgmode.xml view
@@ -33,7 +33,7 @@ <!-- org syntax spec: https://orgmode.org/worg/dev/org-syntax.html --> <!-- syntax highlight: https://docs.kde.org/stable5/en/kate/katepart/highlight.html -->-<language name="Org Mode" version="8" kateversion="5.79" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT">+<language name="Org Mode" version="9" kateversion="6.22" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT"> <highlighting> <list name="org-todo-keywords-todo"> <item>TODO</item>@@ -243,7 +243,7 @@ <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/> <IncludeRules context="##JSON" includeAttrib="true"/> </context>- <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code">+ <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code" fallthroughContext="Lvl0Text##YAML"> <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/> <IncludeRules context="##YAML" includeAttrib="true"/> </context>
xml/perl.xml view
@@ -42,7 +42,7 @@ Enhance tr/// and y/// support. -->-<language name="Perl" alternativeNames="PL" version="22" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">+<language name="Perl" alternativeNames="PL" version="23" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2"> <highlighting> <list name="control_flow"> <item>if</item>@@ -860,7 +860,7 @@ </highlighting> <general> <comments>- <comment name="singleLine" start="#" />+ <comment name="singleLine" start="#" position="afterwhitespace"/> </comments> <keywords casesensitive="1" /> </general>
xml/php.xml view
@@ -77,7 +77,7 @@ <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?"> ]> -<language name="PHP/PHP" indenter="cstyle" version="28" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">+<language name="PHP/PHP" indenter="cstyle" version="29" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true"> <highlighting> <!-- https://php.watch/versions --> <!-- Based on 8.3 (https://php.watch/versions/8.3 and https://stitcher.io/blog/new-in-php-83) -->@@ -11329,7 +11329,7 @@ </context> <context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true"> <IncludeRules context="doublestringvariablecommon" />- <RegExpr attribute="Heredoc" context="#pop" String="^\s*%1(?=;?$)" dynamic="true" endRegion="Heredoc" column="0" />+ <RegExpr attribute="Heredoc" context="#pop" String="^\s*%1(?=[,;]?$)" dynamic="true" endRegion="Heredoc" column="0" /> </context> <context name="htmlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">@@ -11349,7 +11349,7 @@ <IncludeRules context="Normal##JavaScript" /> </context> <context name="nowdoc" attribute="String" lineEndContext="#stay" dynamic="true">- <RegExpr attribute="Nowdoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Nowdoc" column="0" />+ <RegExpr attribute="Nowdoc" context="#pop" String="^\s*%1(?=[,;]?$)" dynamic="true" endRegion="Nowdoc" column="0" /> </context> <context name="number" attribute="PHP Text" lineEndContext="#stay">
xml/powershell.xml view
@@ -4,7 +4,7 @@ ]> <language name="PowerShell"- version="15"+ version="16" kateversion="5.79" extensions="*.ps1;*.psm1;*.psd1" section="Scripts"@@ -905,12 +905,17 @@ <RegExpr attribute="Number" context="NumericSuffix" String="\b(0b[01]+|0x[0-9a-fA-F]+|([0-9]+(\.[0-9]*)?|\.[0-9]+)(e([-+][0-9]+|[0-9]*))?)(?=(u?[ysl]|[und])?([kmgtp]b)?\b)" insensitive="1"/> <RegExpr String="[-\w]+"/> </context>- <context attribute="Numeric Suffix" name="NumericSuffix" fallthroughContext="#pop">+ <context attribute="Numeric Suffix" name="NumericSuffix" fallthroughContext="#pop" lineEndContext="#pop"> <DetectIdentifier attribute="Numeric Suffix" context="#pop"/> </context> <!-- $( --> <context attribute="Normal Text" name="VarCmd">+ <DetectChar attribute="Symbol" context="#pop" char=")"/>+ <DetectChar attribute="Symbol" context="VarCmdFuncCall" char="("/>+ <IncludeRules context="Normal"/>+ </context>+ <context attribute="Normal Text" name="VarCmdFuncCall"> <DetectChar attribute="Symbol" context="#pop" char=")"/> <IncludeRules context="Normal"/> </context>
xml/python.xml view
@@ -78,12 +78,19 @@ <!-- 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" alternativeNames="Py" version="32" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro;*.sage" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">+<language name="Python" alternativeNames="Py" version="33" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro;*.sage" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license=""> <highlighting> <list name="import"> <item>import</item> <item>from</item> <item>as</item>+ <!--+ "lazy from" and "lazy import" are added here for autocompletion.+ The actual handling is in context="kw_lazy"+ so that we won't need to add space as a weakDeliminator.+ -->+ <item>lazy from</item> <!-- 3.15 -->+ <item>lazy import</item> <!-- 3.15 --> </list> <list name="defs"> <item>class</item>@@ -123,7 +130,7 @@ <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.+ is in context="kw_yield" so that we won't need to add space as a weakDeliminator. --> <item>yield from</item> </list>@@ -167,6 +174,7 @@ <item>filter</item> <item>float</item> <item>format</item>+ <item>frozendict</item> <item>frozenset</item> <item>getattr</item> <item>globals</item>@@ -235,6 +243,7 @@ <item>__qualname__</item> <item>__slots__</item> </list>+ <!-- Qt extension (PySide) --> <list name="bindings"> <item>SIGNAL</item> <item>SLOT</item>@@ -452,13 +461,15 @@ <keyword attribute="Operator Keyword" String="operators" context="#stay"/> <keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/> <keyword attribute="Definition Keyword" String="defs" context="#stay"/>- <keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>+ <keyword attribute="Flow Control Keyword" String="flow_yield" context="kw_yield"/> <keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/> <keyword attribute="Import" String="import" context="#stay"/> <keyword attribute="Exceptions" String="exceptions" context="#stay"/> <keyword attribute="Overloaders" String="overloaders" context="#stay"/> <keyword attribute="Extensions" String="bindings" context="#stay"/> + <WordDetect String="lazy" context="kw_lazy" lookAhead="1"/>+ <IncludeRules context="Number" /> <IncludeRules context="CommentVariants" /> <IncludeRules context="StringVariants" />@@ -502,9 +513,24 @@ <RegExpr attribute="Error" String="\w+" context="#pop#pop"/> </context> - <context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">+ <!-- yield from expr+ ~~~~ Flow Control Keyword no Import+ -->+ <context name="kw_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>++ <!-- lazy from ... import ...+ ~~~~~~~~~ Import+ lazy import ...+ ~~~~~~~~~~~ Import+ lazy = 2+ ~~~~ Normal Text+ -->+ <context name="kw_lazy" attribute="Import" lineEndContext="#pop">+ <RegExpr String="lazy\s+(import|from)\b" attribute="Import" context="#pop"/>+ <DetectIdentifier attribute="Normal Text" context="#pop"/> </context> <context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">
+ xml/q.xml view
@@ -0,0 +1,210 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name="q" version="4" kateversion="5.0" section="Scripts" extensions="*.q" license="LGPLv2+" author="James Schmitz (james.schmitz@gmail.com)">+<highlighting>+ <list name="DotQ">+ <item>.Q.addmonths</item>+ <item>.Q.addr</item>+ <item>.Q.host</item>+ <item>.Q.chk</item>+ <item>.Q.cn</item>+ <item>.Q.dd</item>+ <item>.Q.dpft</item>+ <item>.Q.dsftg</item>+ <item>.Q.def</item>+ <item>.Q.en</item>+ <item>.Q.fc</item>+ <item>.Q.fk</item>+ <item>.Q.fmt</item>+ <item>.Q.fs</item>+ <item>.Q.ft</item>+ <item>.Q.fu</item>+ <item>.Q.gc</item>+ <item>.Q.hdpf</item>+ <item>.Q.ind</item>+ <item>.Q.j10</item>+ <item>.Q.x10</item>+ <item>.Q.j12</item>+ <item>.Q.x12</item>+ <item>.Q.k</item>+ <item>.Q.l</item>+ <item>.Q.opt</item>+ <item>.Q.par</item>+ <item>.Q.qp</item>+ <item>.Q.qt</item>+ <item>.Q.s</item>+ <item>.Q.ty</item>+ <item>.Q.v</item>+ <item>.Q.V</item>+ <item>.Q.view</item>+ <item>.Q.w</item>+ <item>.Q.M</item>+ <item>.Q.pf</item>+ <item>.Q.pt</item>+ <item>.Q.PD</item>+ <item>.Q.PV</item>+ <item>.Q.pd</item>+ <item>.Q.pv</item>+ <item>.Q.pn</item>+ <item>.Q.bv</item>+ <item>.Q.vp</item>+ <item>.Q.P</item>+ <item>.Q.D</item>+ <item>.Q.u</item>+ </list>+ <list name="qkeywords">+ <item>aj</item>+ <item>aj0</item>+ <item>all</item>+ <item>and</item>+ <item>any</item>+ <item>asc</item>+ <item>asof</item>+ <item>attr</item>+ <item>avgs</item>+ <item>ceiling</item>+ <item>cols</item>+ <item>cor</item>+ <item>count</item>+ <item>cov</item>+ <item>cross</item>+ <item>csv</item>+ <item>cut</item>+ <item>deltas</item>+ <item>desc</item>+ <item>dev</item>+ <item>differ</item>+ <item>distinct</item>+ <item>each</item>+ <item>ej</item>+ <item>enlist</item>+ <item>eval</item>+ <item>except</item>+ <item>fby</item>+ <item>fills</item>+ <item>first</item>+ <item>fkeys</item>+ <item>flip</item>+ <item>floor</item>+ <item>from</item>+ <item>get</item>+ <item>group</item>+ <item>gtime</item>+ <item>hclose</item>+ <item>hcount</item>+ <item>hdel</item>+ <item>hopen</item>+ <item>hsym</item>+ <item>iasc</item>+ <item>idesc</item>+ <item>ij</item>+ <item>inter</item>+ <item>inv</item>+ <item>key</item>+ <item>keys</item>+ <item>lj</item>+ <item>load</item>+ <item>lower</item>+ <item>lsq</item>+ <item>ltime</item>+ <item>ltrim</item>+ <item>mavg</item>+ <item>maxs</item>+ <item>mcount</item>+ <item>md5</item>+ <item>mdev</item>+ <item>med</item>+ <item>meta</item>+ <item>mins</item>+ <item>mmax</item>+ <item>mmin</item>+ <item>mmu</item>+ <item>mod</item>+ <item>msum</item>+ <item>neg</item>+ <item>next</item>+ <item>not</item>+ <item>null</item>+ <item>or</item>+ <item>over</item>+ <item>parse</item>+ <item>peach</item>+ <item>pj</item>+ <item>plist</item>+ <item>prds</item>+ <item>prev</item>+ <item>prior</item>+ <item>rand</item>+ <item>rank</item>+ <item>ratios</item>+ <item>raze</item>+ <item>read0</item>+ <item>read1</item>+ <item>reciprocal</item>+ <item>reverse</item>+ <item>rload</item>+ <item>rotate</item>+ <item>rsave</item>+ <item>rtrim</item>+ <item>save</item>+ <item>scan</item>+ <item>set</item>+ <item>show</item>+ <item>signum</item>+ <item>ssr</item>+ <item>string</item>+ <item>sublist</item>+ <item>sums</item>+ <item>sv</item>+ <item>system</item>+ <item>tables</item>+ <item>til</item>+ <item>trim</item>+ <item>txf</item>+ <item>type</item>+ <item>uj</item>+ <item>ungroup</item>+ <item>union</item>+ <item>update</item>+ <item>upper</item>+ <item>upsert</item>+ <item>value</item>+ <item>var</item>+ <item>view</item>+ <item>views</item>+ <item>vs</item>+ <item>where</item>+ <item>wj</item>+ <item>wj1</item>+ <item>xasc</item>+ <item>xbar</item>+ <item>xcol</item>+ <item>xcols</item>+ <item>xdesc</item>+ <item>xgroup</item>+ <item>xkey</item>+ <item>xlog</item>+ <item>xprev</item>+ <item>xrank</item>+ </list>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >+ <keyword attribute="qKeyword" context="#stay" String="qkeywords" />+ <keyword attribute="DotQfunctions" context="#stay" String="DotQ" />+ <IncludeRules context="##k" />+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" />+ <itemData name="qKeyword" defStyleNum="dsKeyword" />+ <itemData name="DotQfunctions" defStyleNum="dsKeyword" />+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="/" />+ </comments>+ <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="`#'@$"" />+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/qml.xml view
@@ -4,7 +4,7 @@ <!ENTITY identifier "[a-zA-Z_$][\w$]*"> ]> <!-- Author: Milian Wolff <mail@milianw.de> -->-<language name="QML" version="13" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes"+<language name="QML" version="14" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes" mimetype="text/x-qml;application/x-qml" indenter="cstyle" author="Milian Wolff (mail@milianw.de)" license="MIT"> <highlighting>@@ -91,6 +91,9 @@ <item>pragma</item> <item>readonly</item> <item>required</item>+ <item>virtual</item>+ <item>final</item>+ <item>override</item> </list> <list name="types"> <!-- see: http://doc.trolltech.com/4.7-snapshot/qml-extending-types.html -->
+ xml/quarto.xml view
@@ -0,0 +1,233 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+<!-- Replicated from "markdown.xml": -->+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">+<!ENTITY listbullet "[\*\+\-]">+<!ENTITY emptyline "^\s*$">+<!ENTITY checkbox "\[[ x]\](?=\s)">+]>+<!--+ Kate highlighting module for Quarto+ (c) 2025 Thomas Friedrichsmeier (thomas.friedrichsmeier@kdemail.net)+ Heavily based on the R markdown highlighting definition, originally by:+ (c) 2014 Dirk Sarpe (dsarpe@posteo.de)++ NOTE: In fact this definition is identical to R markdown in very many parts,+ and the two should be kept in sync, except for the regions marked with+ "Quarto_specific"!++ depends on:+ Kate highlighting module for Markdown+ Kate highlighting module for R script+ Kate highlighting module for LaTeX+ Kate highlighting module for YAML+-->++<language name="Quarto"+section="Markup"+extensions="*.qmd;*.Qmd;*.QMD"+mimetype="text/x-quarto"+version="11"+kateversion="6.22"+casesensitive="true"+author="Thomas Friedrichsmeier (thomas.friedrichsmeier@kdemail.net)"+license="GPL">++ <highlighting>+ <contexts>++ <context name="Start Document" attribute="Markdown" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthroughContext="Normal Text">+ <RegExpr String="^---$" column="0" attribute="Markdown" context="YAMLhead" beginRegion="YAMLhead block"/>+ </context>++ <context name="Normal Text" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="find-code-block">+ <IncludeRules context="Common"/>+ <IncludeRules context="Overwrite Markdown Normal Text"/>+ <IncludeRules context="Normal Text##Markdown" includeAttrib="true"/>+ </context>+ <context name="find-code-block" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">+ <IncludeRules context="find-code-block##Markdown" includeAttrib="true"/>+ </context>++ <context name="Common" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```\{r.*\}" firstNonSpace="true" attribute="Structure"+ context="R block" beginRegion="R block"/>+ <!-- BEGIN Quarto_specific: Alway require braced language sepcifier "{r}" rather than "r" at head of code blocks -->+ <RegExpr String="`\{r.*\}" attribute="Structure"+ context="R inline"/>+ <!-- END Quarto_specific -->+ <!-- BEGIN Quarto_specific: Allow python, julia, and ojs blocks in the same was as R bloks -->+ <!-- NOTE: contrary to R, no (legacy) options seem to be allowed within the braces, for the other languages -->+ <StringDetect String="```{python}" firstNonSpace="true" attribute="Structure"+ context="Python block" beginRegion="Python block"/>+ <StringDetect String="`{python}" attribute="Structure"+ context="Python inline"/>+ <StringDetect String="```{julia}" firstNonSpace="true" attribute="Structure"+ context="Julia block" beginRegion="Julia block"/>+ <StringDetect String="`{julia}" attribute="Structure"+ context="Julia inline"/>+ <StringDetect String="```{ojs}" firstNonSpace="true" attribute="Structure"+ context="OJS block" beginRegion="OJS block"/>+ <StringDetect String="`{ojs}" attribute="Structure"+ context="OJS inline"/>+ <!-- END Quarto_specific -->+ <Detect2Chars char="$" char1="$" attribute="MathMode"+ context="LaTeX equation block" beginRegion="LaTeX equation block"/>+ <DetectChar char="$" attribute="MathMode"+ context="LaTeX inline equation"/>+ <Detect2Chars char="\" char1="$" attribute="Backslash Escape" context="#stay"/>+ </context>++ <context name="R block" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"+ endRegion="R block"/>+ <IncludeRules context="##R Script" includeAttrib="true"/>+ </context>++ <context name="R inline" attribute="Markdown" lineEndContext="#stay">+ <DetectChar char="`" attribute="Structure" context="#pop"/>+ <IncludeRules context="##R Script" includeAttrib="true"/>+ </context>++ <!-- BEGIN Quarto_specific: Allow python, julia, and ojs blocks in the same was as R bloks -->+ <context name="Python block" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"+ endRegion="Python block"/>+ <IncludeRules context="##Python" includeAttrib="true"/>+ </context>++ <context name="Python inline" attribute="Markdown" lineEndContext="#stay">+ <DetectChar char="`" attribute="Structure" context="#pop"/>+ <IncludeRules context="##Python" includeAttrib="true"/>+ </context>++ <context name="Julia block" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"+ endRegion="Julia block"/>+ <IncludeRules context="##Julia" includeAttrib="true"/>+ </context>++ <context name="Julia inline" attribute="Markdown" lineEndContext="#stay">+ <DetectChar char="`" attribute="Structure" context="#pop"/>+ <IncludeRules context="##Julia" includeAttrib="true"/>+ </context>++ <context name="OJS block" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"+ endRegion="OJS block"/>+ <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>+ </context>++ <context name="OJS inline" attribute="Markdown" lineEndContext="#stay">+ <DetectChar char="`" attribute="Structure" context="#pop"/>+ <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>+ </context>+ <!-- END Quarto_specific -->++ <context name="LaTeX equation block" attribute="MathMode"+ lineEndContext="#stay">+ <Detect2Chars char="$" char1="$" attribute="MathMode"+ context="#pop" endRegion="LaTeX equation block"/>+ <IncludeRules context="MathModeDisplay##LaTeX" includeAttrib="true"/>+ </context>++ <context name="LaTeX inline equation" attribute="MathMode"+ lineEndContext="#stay">+ <DetectChar char="$" attribute="MathMode" context="#pop"/>+ <IncludeRules context="MathMode##LaTeX" includeAttrib="true"/>+ </context>++ <context name="YAMLhead" attribute="Document Headers"+ lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">+ <RegExpr String="^---$" column="0" attribute="Markdown" context="#pop"+ endRegion="YAMLhead block"/>+ <IncludeRules context="##YAML" includeAttrib="true"/>+ </context>++ <!-- Markdown -->+ <!-- These contexts are replicated from "markdown.xml" to add the features of R Markdown. -->++ <context name="Overwrite Markdown Normal Text" attribute="Markdown" lineEndContext="#stay">+ <!-- Blockquotes -->+ <DetectChar attribute="Blockquote" context="blockquote" char=">" firstNonSpace="true"/>+ <!-- Lists: avoid highlighting code blocks incorrectly, capturing indentation -->+ <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>+ <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d\.(\s+)" column="0"/>+ <RegExpr attribute="Number List" context="numlist2" String="^(\s*)\d\d+\.(\s+)" column="0"/>+ </context>++ <context name="list" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <!-- Find indented code blocks, blockquotes and horizontal rules -->+ <RegExpr attribute="List: Code" String="^%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s+>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s+&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <!-- Text with the same indentation captured corresponds to the item list -->+ <RegExpr context="content-list" String="^%1%2\s" column="0" lookAhead="true" dynamic="true"/>+ <!-- Finish when the text has a lower indentation than the list -->+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ <!-- Highlight checkbox at the start of the item (task list) -->+ <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>+ </context>+ <!-- 1. numlist (one digit) -->+ <context name="numlist" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <RegExpr attribute="List: Code" String="^%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{2,}>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <RegExpr context="content-list" String="^%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ </context>+ <!-- 10. numlist (two or more digits) -->+ <context name="numlist2" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <RegExpr attribute="List: Code" String="^%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{3,}>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <RegExpr context="content-list" String="^%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ </context>++ <context name="content-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="content-list##Markdown" includeAttrib="true"/>+ </context>++ <context name="blockquote" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="blockquote##Markdown" includeAttrib="true"/>+ </context>+ <context name="blockquote-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="blockquote-list##Markdown" includeAttrib="true"/>+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Markdown" defStyleNum="dsNormal"/>+ <itemData name="Structure" defStyleNum="dsRegionMarker"/>+ <itemData name="MathMode" defStyleNum="dsRegionMarker" color="#00A000"/>+ <itemData name="Document Headers" defStyleNum="dsOthers"/>++ <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>+ <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>+ <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>+ <itemData name="List: Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>+ <itemData name="List: Code" defStyleNum="dsInformation"/>+ <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>+ </itemDatas>++ </highlighting>++ <general>+ <keywords additionalDeliminator="`"/>+ <comments>+ <comment name="multiLine" start="<!--" end="-->"/>+ </comments>+ </general>++</language>
xml/raku.xml view
@@ -73,7 +73,7 @@ <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> --> <!ENTITY regadverb "(?!\()\s*(?=[^\p{L}\p{N}\s])"> ]>-<language name="Raku" version="9" kateversion="5.62" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">+<language name="Raku" version="10" kateversion="5.62" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"> <highlighting> <!-- https://docs.raku.org/routines -->@@ -647,6 +647,7 @@ <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop"> <DetectSpaces/> <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Symbol" beginRegion="regex"/>+ <DetectChar char="(" context="SubExpression(" attribute="Normal Text"/> <DetectChar char="#" context="StartComment" attribute="Comment"/> <RegExpr String="&ident;"/> </context>@@ -847,7 +848,7 @@ <!-- Pattern \... --> <context name="PatternMetaChar" attribute="Pattern" lineEndContext="#pop">- <RegExpr String="\\[nthvsdwNTHVSDW]|\\[xX](&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|\\[cC](&unicode_dec_point;(?![0-9])|\[[0-9a-zA-Z\s]+\])|[oO](&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="Pattern Character Class"/>+ <RegExpr String="\\[bdefhnrstvwBDEFHNRSTVW]|\\[xX](&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|\\[cC](&unicode_dec_point;(?![0-9])|\[[0-9a-zA-Z\s]+\])|[oO](&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="Pattern Character Class"/> <RegExpr String="\\[^\p{L}\p{N}]" context="#pop" attribute="Pattern Character"/> <StringDetect String="\x[" context="PatternMetaCharX" attribute="Pattern Character Class" insensitive="1"/>@@ -872,7 +873,7 @@ </context> <context name="C[]" attribute="Pattern">- <RegExpr String="\s*(\b[0-9a-zA-Z]+\s*)+"/>+ <RegExpr String="\s*(\b[0-9a-zA-Z-]+\s*)+"/> </context> <context name="PatternMetaCharMultipleCommon" attribute="Pattern">@@ -895,7 +896,7 @@ <context name="PatternMetaCharC" attribute="Pattern Character Class"> <IncludeRules context="PatternMetaCharMultipleCommon"/> <IncludeRules context="C[]"/>- <RegExpr String="[^0-9a-zA-Z\],\s]+|[0-9a-zA-Z]+|." attribute="Error"/>+ <RegExpr String="[^0-9a-zA-Z\],\s-]+|[0-9a-zA-Z]+|." attribute="Error"/> </context> @@ -1749,6 +1750,7 @@ <IncludeRules context="q_RawString_common"/> </context> <context name="q_RawString_common" attribute="String" lineEndContext="#stay">+ <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/> <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/> <RegExpr String="(?:[^\\']*|\\(?![\\']|"ingconstruct;|$))*" context="#stay" attribute="String"/> <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+ xml/rdoc.xml view
@@ -0,0 +1,390 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name="R documentation" version="4" section="Markup" kateversion="5.0"+ extensions="*.Rd" author="Aaron Puchert" license="MIT" >+<highlighting>+ <list name="PreprocessorOptions">+ <item>unix</item>+ <item>windows</item>+ </list>+ <list name="Formats">+ <item>example</item>+ <item>html</item>+ <item>latex</item>+ <item>text</item>+ <item>TRUE</item>+ <item>FALSE</item>+ </list>++ <list name="TopLevel-ExpectName">+ <item>\docType</item>+ <item>\encoding</item>+ <item>\keyword</item>+ <item>\name</item>+ </list>+ <list name="TopLevel-ExpectLatex">+ <item>\author</item>+ <item>\concept</item>+ <item>\description</item>+ <item>\details</item>+ <item>\format</item>+ <item>\note</item>+ <item>\references</item>+ <item>\seealso</item>+ <item>\source</item>+ <item>\title</item>+ </list>+ <list name="TopLevel-ExpectNameLatex">+ <item>\section</item>+ </list>+ <list name="TopLevel-ExpectMacroLatex">+ <item>\newcommand</item>+ <item>\renewcommand</item>+ </list>+ <list name="TopLevel-ExpectR">+ <item>\examples</item>+ <item>\usage</item>+ </list>+ <list name="TopLevel-ExpectVerbatim">+ <item>\alias</item>+ <item>\Rdversion</item>+ <item>\synopsis</item>+ <item>\RdOpts</item>+ </list>+ <list name="TopLevel-ExpectItem2List">+ <item>\arguments</item>+ <item>\value</item>+ </list>++ <!-- For now we highlight these as macros.+ <list name="Latex-Markup">+ <item>\cr</item>+ <item>\dots</item>+ <item>\ldots</item>+ <item>\R</item>+ <item>\tab</item>+ </list>+ -->+ <list name="Latex-ExpectLatex">+ <item>\acronym</item>+ <item>\bold</item>+ <item>\cite</item>+ <item>\command</item>+ <item>\dfn</item>+ <item>\dQuote</item>+ <item>\emph</item>+ <item>\file</item>+ <item>\linkS4class</item>+ <item>\pkg</item>+ <item>\sQuote</item>+ <item>\strong</item>+ <item>\var</item>+ </list>+ <list name="Latex-ExpectNameLatex">+ <item>\enc</item>+ <item>\method</item>+ <item>\S3method</item>+ <item>\S4method</item>+ </list>+ <list name="Latex-ExpectNameLatex-Section">+ <item>\subsection</item>+ </list>+ <list name="Latex-ExpectMacroLatex">+ <item>\newcommand</item>+ <item>\renewcommand</item>+ </list>+ <list name="Latex-ExpectItemList">+ <item>\enumerate</item>+ <item>\itemize</item>+ </list>+ <list name="ItemList-Item">+ <item>\item</item>+ </list>+ <list name="Latex-ExpectItem2List">+ <item>\describe</item>+ </list>+ <list name="Latex-ExpectIf">+ <item>\if</item>+ <item>\ifelse</item>+ </list>+ <list name="Latex-ExpectRLike">+ <item>\code</item>+ </list>+ <list name="Latex-ExpectVerbatim">+ <item>\email</item>+ <item>\env</item>+ <item>\kbd</item>+ <item>\option</item>+ <item>\out</item>+ <item>\preformatted</item>+ <item>\samp</item>+ <item>\url</item>+ <item>\verb</item>+ <item>\deqn</item>+ <item>\eqn</item>+ </list>+ <list name="Latex-ExpectVerbatimLatex">+ <item>\tabular</item>+ <item>\href</item>+ <item>\figure</item>+ </list>+ <list name="Latex-ExpectOptionName">+ <item>\link</item>+ </list>+ <list name="Latex-ExpectOptionR">+ <item>\Sexpr</item>+ </list>++ <list name="R-ExpectRLike">+ <item>\dontrun</item>+ <item>\special</item>+ <item>\v</item>+ <item>\var</item>+ </list>+ <list name="R-ExpectNameLatex">+ <item>\method</item>+ <item>\S3method</item>+ <item>\S4method</item>+ </list>+ <list name="R-ExpectOptionName">+ <item>\l</item>+ <item>\link</item>+ </list>+ <list name="R-ExpectR">+ <item>\dontshow</item>+ <item>\donttest</item>+ <item>\testonly</item>+ </list>++ <contexts>+ <context name="TopLevel" attribute="NormalText" lineEndContext="#stay">+ <IncludeRules context="Common"/>++ <keyword String="TopLevel-ExpectName" attribute="Section" context="ExpectName"/>+ <keyword String="TopLevel-ExpectLatex" attribute="Section" context="ExpectLatex"/>+ <keyword String="TopLevel-ExpectNameLatex" attribute="Section" context="ExpectNameLatex"/>+ <keyword String="TopLevel-ExpectMacroLatex" attribute="Markup" context="ExpectMacroLatex"/>+ <keyword String="TopLevel-ExpectR" attribute="Section" context="ExpectR"/>+ <keyword String="TopLevel-ExpectVerbatim" attribute="Section" context="ExpectVerbatim"/>+ <keyword String="TopLevel-ExpectItem2List" attribute="Section" context="ExpectItem2List"/>+ </context>++ <!-- Common rules: only included in other contexts -->+ <context name="Common" attribute="NormalText" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectChar char="%" attribute="Comment" context="Comment"/>++ <Detect2Chars char="\" char1="\" attribute="Escape"/>+ <Detect2Chars char="\" char1="%" attribute="Escape"/>+ <Detect2Chars char="\" char1="{" attribute="Escape"/>+ <Detect2Chars char="\" char1="}" attribute="Escape"/>++ <StringDetect String="#ifdef" firstNonSpace="true" attribute="Preprocessor"+ context="PreprocessorCondition" beginRegion="Preprocessor"/>+ <StringDetect String="#ifndef" firstNonSpace="true" attribute="Preprocessor"+ context="PreprocessorCondition" beginRegion="Preprocessor"/>+ <StringDetect String="#endif" firstNonSpace="true" attribute="Preprocessor"+ context="Comment" endRegion="Preprocessor"/>+ </context>++ <!-- Contexts where we expect certain arguments -->+ <context name="ExpectName" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!Name" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectLatex" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!Latex" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectItemList" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!ItemList" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectItem2List" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!Item2List" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectNameLatex" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!NameLatex" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectMacroLatex" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!MacroLatex" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectLatexLatex" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!LatexLatex" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectR" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!R" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectRLike" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!RLike" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectVerbatim" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!Verbatim" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectVerbatimLatex" attribute="NormalText" lineEndContext="#stay">+ <DetectChar char="{" attribute="Brace" context="#pop!VerbatimLatex" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectOptionName" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="#pop!Name" beginRegion="Brace"/>+ <DetectChar char="[" attribute="Brace" context="#pop!OptionName" beginRegion="Bracket"/>+ <RegExpr String="[^{[]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectOptionR" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="#pop!R" beginRegion="Brace"/>+ <DetectChar char="[" attribute="Brace" context="#pop!OptionR" beginRegion="Bracket"/>+ <RegExpr String="[^{[]*" attribute="Error" context="#pop"/>+ </context>+ <context name="ExpectIf" attribute="NormalText" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="#pop!If" beginRegion="Brace"/>+ <RegExpr String="[^{]*" attribute="Error" context="#pop"/>+ </context>++ <!-- The actual arguments -->+ <context name="Latex" attribute="NormalText" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Latex" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>++ <keyword String="Latex-ExpectLatex" attribute="Markup" context="ExpectLatex"/>+ <keyword String="Latex-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>+ <keyword String="Latex-ExpectNameLatex-Section" attribute="Section" context="ExpectNameLatex"/>+ <keyword String="Latex-ExpectMacroLatex" attribute="Markup" context="ExpectMacroLatex"/>+ <keyword String="Latex-ExpectItemList" attribute="Markup" context="ExpectItemList"/>+ <keyword String="Latex-ExpectItem2List" attribute="Markup" context="ExpectItem2List"/>+ <keyword String="Latex-ExpectIf" attribute="Markup" context="ExpectIf"/>+ <keyword String="Latex-ExpectRLike" attribute="Markup" context="ExpectRLike"/>+ <keyword String="Latex-ExpectVerbatim" attribute="Markup" context="ExpectVerbatim"/>+ <keyword String="Latex-ExpectVerbatimLatex" attribute="Markup" context="ExpectVerbatimLatex"/>+ <keyword String="Latex-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>+ <keyword String="Latex-ExpectOptionR" attribute="Markup" context="ExpectOptionR"/>++ <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>+ <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>+ </context>+ <context name="ItemList" attribute="NormalText" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Item2List" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ <keyword String="ItemList-Item" attribute="Markup"/>+ <IncludeRules context="Latex"/>+ </context>+ <context name="Item2List" attribute="NormalText" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <keyword String="ItemList-Item" attribute="Markup" context="ExpectLatexLatex"/>+ <IncludeRules context="Latex"/>+ </context>+ <context name="Name" attribute="ItemName" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>+ <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>+ <DetectChar char="{" attribute="Brace" context="Name" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ </context>+ <context name="NameLatex" attribute="ItemName" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>+ <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>+ <DetectChar char="{" attribute="Brace" context="Latex" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>+ </context>+ <context name="MacroLatex" attribute="UserDefinedMacro" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>+ </context>+ <context name="LatexLatex" attribute="ItemName" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>+ <IncludeRules context="Latex"/>+ </context>+ <context name="R" attribute="RSource" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="R" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ <keyword String="R-ExpectR" attribute="Markup" context="ExpectR"/>+ <keyword String="R-ExpectRLike" attribute="Markup" context="ExpectRLike"/>+ <keyword String="R-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>+ <keyword String="R-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>+ <IncludeRules context="level0##R Script"/>+ </context>+ <context name="RLike" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="RLike" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ <keyword String="R-ExpectRLike" attribute="Markup" context="ExpectRLike"/>+ <keyword String="R-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>+ <keyword String="R-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>+ </context>+ <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ </context>+ <context name="VerbatimLatex" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>+ <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>+ </context>+ <context name="OptionName" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>+ <DetectChar char="]" attribute="Brace" context="#pop!ExpectName" endRegion="Bracket"/>+ <DetectChar char="}" attribute="Error" context="#pop!ExpectName" endRegion="Bracket"/>+ </context>+ <context name="OptionR" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>+ <DetectChar char="]" attribute="Brace" context="#pop!ExpectR" endRegion="Bracket"/>+ <DetectChar char="}" attribute="Error" context="#pop!ExpectR" endRegion="Bracket"/>+ </context>+ <context name="If" attribute="Verbatim" lineEndContext="#stay">+ <IncludeRules context="Common"/>+ <keyword String="Formats" attribute="Builtin"/>+ <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>+ </context>++ <context name="Comment" attribute="Comment" lineEndContext="#pop">+ <DetectSpaces />+ <IncludeRules context="##Comments"/>+ </context>++ <context name="PreprocessorCondition" attribute="Preprocessor" lineEndContext="#pop">+ <keyword String="PreprocessorOptions" attribute="Builtin"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="NormalText" defStyleNum="dsNormal"/>+ <itemData name="RSource" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Brace" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Section" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Markup" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="UserDefinedMacro" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="UserDefinedMacroArgument" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="ItemName" defStyleNum="dsSpecialString" spellChecking="false"/>+ <itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>+ <itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>+ <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>+ <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+ </itemDatas>+</highlighting>+<general>+ <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>+ <comments>+ <comment name="singleLine" start="%"/>+ </comments>+</general>+</language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
+ xml/rmarkdown.xml view
@@ -0,0 +1,175 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language+[+<!-- Replicated from "markdown.xml": -->+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">+<!ENTITY listbullet "[\*\+\-]">+<!ENTITY emptyline "^\s*$">+<!ENTITY checkbox "\[[ x]\](?=\s)">+]>+<!--+ Kate highlighting module for R Markdown+ (c) 2014 Dirk Sarpe (dsarpe@posteo.de)++ depends on:+ Kate highlighting module for Markdown+ Kate highlighting module for R script+ Kate highlighting module for LaTeX+ Kate highlighting module for YAML+-->++<language name="R Markdown"+section="Markup"+extensions="*.rmd;*.Rmd;*.RMD"+mimetype="text/x-r-markdown"+version="11"+kateversion="6.22"+casesensitive="true"+author="Dirk Sarpe (dsarpe@posteo.de)"+license="GPL">++ <highlighting>+ <contexts>++ <context name="Start Document" attribute="Markdown" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthroughContext="Normal Text">+ <RegExpr String="^---$" column="0" attribute="Markdown" context="YAMLhead" beginRegion="YAMLhead block"/>+ </context>++ <context name="Normal Text" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="find-code-block">+ <IncludeRules context="Common"/>+ <IncludeRules context="Overwrite Markdown Normal Text"/>+ <IncludeRules context="Normal Text##Markdown" includeAttrib="true"/>+ </context>+ <context name="find-code-block" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">+ <IncludeRules context="find-code-block##Markdown" includeAttrib="true"/>+ </context>++ <context name="Common" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+\{r.*\}" firstNonSpace="true" attribute="Structure"+ context="R block" beginRegion="R block"/>+ <RegExpr String="`r\b" attribute="Structure"+ context="R inline"/>+ <Detect2Chars char="$" char1="$" attribute="MathMode"+ context="LaTeX equation block" beginRegion="LaTeX equation block"/>+ <DetectChar char="$" attribute="MathMode"+ context="LaTeX inline equation"/>+ <Detect2Chars char="\" char1="$" attribute="Backslash Escape" context="#stay"/>+ </context>++ <context name="R block" attribute="Markdown" lineEndContext="#stay">+ <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"+ endRegion="R block"/>+ <IncludeRules context="##R Script" includeAttrib="true"/>+ </context>++ <context name="R inline" attribute="Markdown" lineEndContext="#stay">+ <DetectChar char="`" attribute="Structure" context="#pop"/>+ <IncludeRules context="##R Script" includeAttrib="true"/>+ </context>++ <context name="LaTeX equation block" attribute="MathMode"+ lineEndContext="#stay">+ <Detect2Chars char="$" char1="$" attribute="MathMode"+ context="#pop" endRegion="LaTeX equation block"/>+ <IncludeRules context="MathModeDisplay##LaTeX" includeAttrib="true"/>+ </context>++ <context name="LaTeX inline equation" attribute="MathMode"+ lineEndContext="#stay">+ <DetectChar char="$" attribute="MathMode" context="#pop"/>+ <IncludeRules context="MathMode##LaTeX" includeAttrib="true"/>+ </context>++ <context name="YAMLhead" attribute="Document Headers"+ lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">+ <RegExpr String="^---$" column="0" attribute="Markdown" context="#pop"+ endRegion="YAMLhead block"/>+ <IncludeRules context="##YAML" includeAttrib="true"/>+ </context>++ <!-- Markdown -->+ <!-- These contexts are replicated from "markdown.xml" to add the features of R Markdown. -->++ <context name="Overwrite Markdown Normal Text" attribute="Markdown" lineEndContext="#stay">+ <!-- Blockquotes -->+ <DetectChar attribute="Blockquote" context="blockquote" char=">" firstNonSpace="true"/>+ <!-- Lists: avoid highlighting code blocks incorrectly, capturing indentation -->+ <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>+ <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d\.(\s+)" column="0"/>+ <RegExpr attribute="Number List" context="numlist2" String="^(\s*)\d\d+\.(\s+)" column="0"/>+ </context>++ <context name="list" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <!-- Find indented code blocks, blockquotes and horizontal rules -->+ <RegExpr attribute="List: Code" String="^%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s+>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s+&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <!-- Text with the same indentation captured corresponds to the item list -->+ <RegExpr context="content-list" String="^%1%2\s" column="0" lookAhead="true" dynamic="true"/>+ <!-- Finish when the text has a lower indentation than the list -->+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ <!-- Highlight checkbox at the start of the item (task list) -->+ <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>+ </context>+ <!-- 1. numlist (one digit) -->+ <context name="numlist" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <RegExpr attribute="List: Code" String="^%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{2,}>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <RegExpr context="content-list" String="^%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ </context>+ <!-- 10. numlist (two or more digits) -->+ <context name="numlist2" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">+ <RegExpr attribute="List: Code" String="^%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>+ <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{3,}>" column="0" dynamic="true"/>+ <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>+ <RegExpr String="&emptyline;" column="0"/>+ <RegExpr context="content-list" String="^%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>+ <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>+ </context>++ <context name="content-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="content-list##Markdown" includeAttrib="true"/>+ </context>++ <context name="blockquote" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="blockquote##Markdown" includeAttrib="true"/>+ </context>+ <context name="blockquote-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">+ <IncludeRules context="Common"/>+ <IncludeRules context="blockquote-list##Markdown" includeAttrib="true"/>+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Markdown" defStyleNum="dsNormal"/>+ <itemData name="Structure" defStyleNum="dsRegionMarker"/>+ <itemData name="MathMode" defStyleNum="dsRegionMarker" color="#00A000"/>+ <itemData name="Document Headers" defStyleNum="dsOthers"/>++ <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>+ <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>+ <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>+ <itemData name="List: Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>+ <itemData name="List: Code" defStyleNum="dsInformation"/>+ <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>+ </itemDatas>++ </highlighting>++ <general>+ <keywords additionalDeliminator="`"/>+ <comments>+ <comment name="multiLine" start="<!--" end="-->"/>+ </comments>+ </general>++</language>
+ xml/rtf.xml view
@@ -0,0 +1,48 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [ <!ENTITY number "([-]?\d+)"> ] >+<language name="Rich Text Format" version="4" kateversion="2.4" section="Markup" extensions="*.rtf" mimetype="text/rtf;application/rtf" author="Lukas Sommer" license="LGPL version 2.1, or version 3 or later versions approved by the membership of KDE e.V.; or any other license appoved by the emembership of KDE e.V.">++ <highlighting>+ + <contexts>++ <context attribute="Text" lineEndContext="#stay" name="context_normal">+ <DetectChar char="{" attribute="Braces" beginRegion="true" />+ <DetectChar char="}" attribute="Braces" endRegion="true" />+ <DetectChar char="\" lookAhead="true" context="context_process_backslash" />+ </context>++ <context lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" attribute="Numeric parameter" name="context_process_backslash">+ <Detect2Chars char="\" char1="|" attribute="Control words" />+ <Detect2Chars char="\" char1="~" attribute="Character" />+ <Detect2Chars char="\" char1="-" attribute="Character" />+ <Detect2Chars char="\" char1="_" attribute="Character" />+ <Detect2Chars char="\" char1=":" attribute="Control words" />+ <Detect2Chars char="\" char1="*" attribute="Control words" />+ <Detect2Chars char="\" char1="\" attribute="Character" />+ <Detect2Chars char="\" char1="{" attribute="Character" />+ <Detect2Chars char="\" char1="}" attribute="Character" />+ <RegExpr String="\\u&number;|\\'[01-9a-f]{2}" attribute="Character"/>+ <RegExpr String="\\[a-zA-Z]+" attribute="Control words" context="context_functionparameter" />+ <DetectChar char="\" attribute="Error" />+ </context>++ <context attribute="Control words" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop" name="context_functionparameter">+ <RegExpr String="[-]?\d+" attribute="Numeric parameter" context="#pop#pop" />+ <DetectChar char="-" attribute="Error" />+ </context>++ </contexts>+ + <itemDatas>+ <itemData name="Text" defStyleNum="dsString"/>+ <itemData name="Character" defStyleNum="dsChar"/>+ <itemData name="Braces" defStyleNum="dsKeyword"/>+ <itemData name="Control words" defStyleNum="dsFunction"/>+ <itemData name="Numeric parameter" defStyleNum="dsDecVal"/>+ <itemData name="Error" defStyleNum="dsError"/>+ </itemDatas>+ + </highlighting>+ +</language>
xml/rust.xml view
@@ -40,7 +40,7 @@ <!ENTITY scope2 "::(?=[^\s\:])"> <!-- Points after keyword or group { } --> ]>-<language name="Rust" alternativeNames="RS" version="15" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" indenter="cstyle" priority="15" license="MIT" author="The Rust Project Developers">+<language name="Rust" alternativeNames="RS" version="16" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" indenter="cstyle" priority="16" license="MIT" author="The Rust Project Developers"> <highlighting> <list name="fn"> <item>fn</item>@@ -373,6 +373,7 @@ <keyword String="fn" attribute="Keyword" context="Function"/> <keyword String="type" attribute="Keyword" context="Type"/> <keyword String="self" attribute="Self" context="#stay"/>+ <RegExpr String="&scope1;|&scope2;" attribute="Scope"/> <keyword String="keywords" attribute="Keyword" context="#stay"/> <keyword String="controlflow" attribute="Control Flow" context="#stay"/> <keyword String="types" attribute="Type" context="#stay"/>@@ -386,7 +387,6 @@ <RegExpr String="\b0(?:b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/> <Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/> <StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>- <RegExpr String="&scope1;|&scope2;" attribute="Scope"/> <RegExpr String="&rustIdent;!" attribute="Macro"/> <RegExpr String="'&rustIdent;(?!')" attribute="Lifetime"/> <DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" />
+ xml/sas.xml view
@@ -0,0 +1,1370 @@+<?xml version='1.0' encoding='UTF-8'?>+<!DOCTYPE language [+ <!ENTITY identifier "[A-Za-z_]\w*">+ <!ENTITY datastep "\bdata\b(?!\s*=)">+ <!ENTITY proc_data "\bproc\b|&datastep;">+ <!ENTITY proc_py "\bproc\s+python\b">+ <!ENTITY proc_lua "\bproc\s+lua\b">+ <!ENTITY run_quit "\b(?:run|quit)\s*;">+ <!ENTITY option_name "\b&identifier;(?=\s*=)">+ <!ENTITY submit "\b(?:submit|interactive|i)\b[^;]*;">+ <!ENTITY endsubmit "\b(?:endsubmit|endinteractive)\s*;">+]>+<!--+ SPDX-FileCopyrightText: 2026 Michael Walshe <michael.j.t.walshe@gmail.com>+ SPDX-License-Identifier: MIT+-->+<!--+ SAS syntax highlighting for Kate+ Author: Michael Walshe+ License: MIT++ SAS syntax highlighting using VSCode or SAS products (Enterprise Guide, SAS Studio, DM, etc) relies on knowledge+ of exact options & values required by every procedure/function/statement to correctly highlight only the valid+ syntax. This is out of scope for this highlighter, which uses general heuristics (such as highlighting <option> = value+ in options statements) combined with some common SAS keywords to cover most cases.+ + SAS Language elements implemented:+ Comments+ - Block comments /* ... */+ - Statement comments * ... ;+ - Macro comments %* ... ;+ Step boundaries+ - DATA / RUN step regions (fold)+ - Generic PROC step regions (fold)+ - PROC SQL — delegates to the SQL language definition+ - PROC PYTHON / PROC LUA — delegates to the Python / Lua definitions+ (SUBMIT / INTERACTIVE block triggers the embedded-language context)+ Keywords+ - Control flow DO END ELSE IF SELECT THEN UNTIL WHEN WHILE ...+ - General Statements ARRAY ATTRIB BY FORMAT INFORMAT INPUT KEEP MERGE OUTPUT PUT RENAME RETAIN SET WHERE ...+ - Functions All SAS built in functions highlighted+ - Proc options Procedure options and settings highlighting+ - Proc statements Statements inside of procedures get first keyword highlighted+ - System options OBS NODATE MPRINT SYMBOLGEN ... active only inside the OPTIONS statement+ - Dataset options KEEP DROP RENAME WHERE OBS FIRSTOBS ... active only inside ( ) after a dataset name+ - Mnemonic operators AND OR NOT EQ NE GT LT GE LE IN BETWEEN LIKE CONTAINS ...+ - Special/auto vars _N_ _ERROR_ _ALL_ _NULL_ ...+ Macro language+ - %MACRO / %MEND, fold region + MacroDef colour+ - %DO / %END, fold region+ - %IF %THEN, other %keywords+ - Macro variable refs &name &&name. etc+ - User-defined macro calls %name(...) + Literals+ - Double and single-quoted strings+ - Date/datetime/time string suffixes "..."d "..."dt "..."t+ coloured as Number to distinguish them from plain strings+ - Bitmask / namelit / hex suffixes "..."b "..."n "..."x+ coloured as String, matching SAS EG style highlighting+ - Integer, floating-point, Hex numbers, scientific notation+ - SAS format/informat tokens DATE9. COMMA12.2 $CHAR20., ...+ Operators+ - + - * / ** = ^= ~= >= <= <> >< || =: >: <: ^=: ~=: >=: <=: ||+ Inline data blocks+ - CARDS / DATALINES / LINES — terminated by lone ;+ - CARDS4 / DATALINES4 / LINES4 — terminated by ;;;;1+ - PARMCARDS / PARMCARDS4+-->+<language+ name="SAS" + section="Scientific"+ extensions="*.sas;*.SAS;*.Sas"+ casesensitive="false"+ author="Michael Walshe (michael.j.t.walshe@gmail.com)"+ license="MIT"+ version="1"+ kateversion="5.79"+>+ <highlighting>+ <!-- ====+ Keyword Lists+ ==== -->+ <!-- Data Step control-flow words -->+ <list name="controls">+ <item>BY</item>+ <item>DO</item>+ <item>ELSE</item>+ <item>END</item>+ <item>GOTO</item>+ <item>IF</item>+ <item>LINK</item>+ <item>OTHERWISE</item>+ <item>SELECT</item>+ <item>THEN</item>+ <item>TO</item>+ <item>UNTIL</item>+ <item>WHEN</item>+ <item>WHILE</item>+ </list>+ <!-- Mnemonic / word operators -->+ <list name="operators-word">+ <item>AND</item>+ <item>BETWEEN</item>+ <item>CONTAINS</item>+ <item>EQ</item>+ <item>EQT</item>+ <item>GE</item>+ <item>GET</item>+ <item>GT</item>+ <item>IN</item>+ <item>IS</item>+ <item>LE</item>+ <item>LET</item>+ <item>LIKE</item>+ <item>LT</item>+ <item>NE</item>+ <item>NET</item>+ <item>NOT</item>+ <item>OR</item>+ <item>SAME</item>+ <item>ALSO</item>+ </list>+ <!-- SAS automatic / special variables -->+ <list name="constants">+ <item>_ALL_</item>+ <item>_BLANKPAGE_</item>+ <item>_CHARACTER_</item>+ <item>_ERROR_</item>+ <item>_FILE_</item>+ <item>_INFILE_</item>+ <item>_IORC_</item>+ <item>_MRG_</item>+ <item>_NULL_</item>+ <item>_NUMERIC_</item>+ <item>_N_</item>+ <item>_PAGE_</item>+ <item>_TEMPORARY_</item>+ </list>+ <!-- Global SAS statements -->+ <list name="keywords">+ <item>AXIS</item>+ <item>CAS</item>+ <item>CASLIB</item>+ <item>CATNAME</item>+ <item>DECLARE</item>+ <item>ENDRSUBMIT</item>+ <item>ENDSAS</item>+ <item>FILENAME</item>+ <item>FOOTNOTE</item>+ <item>GOPTIONS</item>+ <item>KILLTASK</item>+ <item>LEGEND</item>+ <item>LIBNAME</item>+ <item>LISTTASK</item>+ <item>LOCK</item>+ <item>MISSING</item>+ <item>ODS</item>+ <item>PAGE</item>+ <item>PATTERN</item>+ <item>PROCEDURE</item>+ <item>RESETLINE</item>+ <item>RGET</item>+ <item>RSPT</item>+ <item>RSUBMIT</item>+ <item>SASFILE</item>+ <item>SIGNOFF</item>+ <item>SIGNON</item>+ <item>SKIP</item>+ <item>SYMBOL</item>+ <item>SYSECHO</item>+ <item>SYSTASK</item>+ <item>TITLE</item>+ <item>TRANTAB</item>+ <item>WAITFOR</item>+ </list>+ <!-- DATA step statement keywords (active only inside a DATA step) -->+ <list name="datastep-keywords">+ <item>ABORT</item>+ <item>ARRAY</item>+ <item>ATTRIB</item>+ <item>BY</item>+ <item>CALL</item>+ <item>CONTINUE</item>+ <item>DELETE</item>+ <item>DESCRIBE</item>+ <item>DROP</item>+ <item>ERROR</item>+ <item>EXECUTE</item>+ <item>FILE</item>+ <item>FORMAT</item>+ <item>INFILE</item>+ <item>INFORMAT</item>+ <item>INPUT</item>+ <item>KEEP</item>+ <item>LABEL</item>+ <item>LEAVE</item>+ <item>LENGTH</item>+ <item>LIST</item>+ <item>LOSTCARD</item>+ <item>MERGE</item>+ <item>MODIFY</item>+ <item>OUTPUT</item>+ <item>PUT</item>+ <item>PUTLOG</item>+ <item>REDIRECT</item>+ <item>REMOVE</item>+ <item>RENAME</item>+ <item>REPLACE</item>+ <item>RETAIN</item>+ <item>RETURN</item>+ <item>SET</item>+ <item>STOP</item>+ <item>UPDATE</item>+ <item>WHERE</item>+ </list>+ <!-- Macro statements, excluding %macro/%mend/%do/%end for folding -->+ <list name="macros">+ <item>%ABORT</item>+ <item>%COMPSTOR</item>+ <item>%COPY</item>+ <item>%DISPLAY</item>+ <item>%DQLOAD</item>+ <item>%DQPUTLOC</item>+ <item>%DQUNLOAD</item>+ <item>%ELSE</item>+ <item>%GLOBAL</item>+ <item>%GOTO</item>+ <item>%IF</item>+ <item>%INC</item>+ <item>%INCLUDE</item>+ <item>%INPUT</item>+ <item>%LABEL</item>+ <item>%LET</item>+ <item>%LIST</item>+ <item>%LOCAL</item>+ <item>%PUT</item>+ <item>%RETURN</item>+ <item>%RUN</item>+ <item>%SYMDEL</item>+ <item>%SYSMACDELETE</item>+ <item>%SYSMACEXEC</item>+ <item>%SYSEXEC</item>+ <item>%THEN</item>+ <item>%TO</item>+ <item>%TPLOT</item>+ <item>%UNTIL</item>+ <item>%WHILE</item>+ <item>%WINDOW</item>+ </list>+ <!-- Dataset options used inside (...) after dataset names -->+ <list name="dataset-options">+ <item>ALTER</item>+ <item>APPEND</item>+ <item>BUFNO</item>+ <item>BUFSIZE</item>+ <item>CASLIB</item>+ <item>CNTLLEV</item>+ <item>COMPRESS</item>+ <item>COPIES</item>+ <item>DATALIMIT</item>+ <item>DLDMGACTION</item>+ <item>DROP</item>+ <item>DUPLICATE</item>+ <item>ENCODING</item>+ <item>ENCRYPT</item>+ <item>ENCRYPTKEY</item>+ <item>EOC</item>+ <item>EXTENDOBSCOUNTER</item>+ <item>FILECLOSE</item>+ <item>FIRSTOBS</item>+ <item>GENMAX</item>+ <item>GENNUM</item>+ <item>IDXNAME</item>+ <item>IDXWHERE</item>+ <item>IN</item>+ <item>INDEX</item>+ <item>KEEP</item>+ <item>LABEL</item>+ <item>MEMTYPE</item>+ <item>OBS</item>+ <item>OBSBUF</item>+ <item>ONDEMAND</item>+ <item>ORDERBY</item>+ <item>OUTREP</item>+ <item>PARTITION</item>+ <item>POINTOBS</item>+ <item>PROMOTE</item>+ <item>PW</item>+ <item>PWREQ</item>+ <item>READ</item>+ <item>READTRANSFERSIZE</item>+ <item>RENAME</item>+ <item>REPEMPTY</item>+ <item>REPLACE</item>+ <item>REUSE</item>+ <item>ROLE</item>+ <item>RTS</item>+ <item>SCRIPT</item>+ <item>SGIO</item>+ <item>SORTEDBY</item>+ <item>SPILL</item>+ <item>TAG</item>+ <item>TEMPEXPRESS</item>+ <item>TEMPNAMES</item>+ <item>TOBSNO</item>+ <item>TRANSCODE_FAIL</item>+ <item>TRANTAB</item>+ <item>TYPE</item>+ <item>WHERE</item>+ <item>WHEREUP</item>+ <item>WRITE</item>+ <item>WRITETRANSFERSIZE</item>+ </list>+ <!-- Built-in SAS functions -->+ <list name="functions">+ <item>ABS</item>+ <item>ADDMATRIX</item>+ <item>ADDR</item>+ <item>ADDRLONG</item>+ <item>ADDROW</item>+ <item>ADD_TABLE_ATTR</item>+ <item>AIRY</item>+ <item>ALLCOMB</item>+ <item>ALLCOMBI</item>+ <item>ALLPERM</item>+ <item>ANYALNUM</item>+ <item>ANYALPHA</item>+ <item>ANYCNTRL</item>+ <item>ANYDIGIT</item>+ <item>ANYFIRST</item>+ <item>ANYGRAPH</item>+ <item>ANYLOWER</item>+ <item>ANYNAME</item>+ <item>ANYPRINT</item>+ <item>ANYPUNCT</item>+ <item>ANYSPACE</item>+ <item>ANYUPPER</item>+ <item>ANYXDIGIT</item>+ <item>ARCOS</item>+ <item>ARCOSH</item>+ <item>ARMCONV</item>+ <item>ARMEND</item>+ <item>ARMGTID</item>+ <item>ARMINIT</item>+ <item>ARMJOIN</item>+ <item>ARMPROC</item>+ <item>ARMSTOP</item>+ <item>ARMSTRT</item>+ <item>ARMUPDT</item>+ <item>ARSIN</item>+ <item>ARSINH</item>+ <item>ARTANH</item>+ <item>ASCEBC</item>+ <item>ATAN</item>+ <item>ATAN2</item>+ <item>ATTRC</item>+ <item>ATTRN</item>+ <item>BAND</item>+ <item>BETA</item>+ <item>BETAINV</item>+ <item>BLACKCLPRC</item>+ <item>BLACKPTPRC</item>+ <item>BLKSHCLPRC</item>+ <item>BLKSHPTPRC</item>+ <item>BLSHIFT</item>+ <item>BNOT</item>+ <item>BOR</item>+ <item>BQUOTE</item>+ <item>BRSHIFT</item>+ <item>BXOR</item>+ <item>BYTE</item>+ <item>CAT</item>+ <item>CATQ</item>+ <item>CATS</item>+ <item>CATT</item>+ <item>CATX</item>+ <item>CDF</item>+ <item>CEIL</item>+ <item>CEILZ</item>+ <item>CEXIST</item>+ <item>CHAR</item>+ <item>CHOL</item>+ <item>CHOOSEC</item>+ <item>CHOOSEN</item>+ <item>CINV</item>+ <item>CLIBEXIST</item>+ <item>CLOSE</item>+ <item>CMISS</item>+ <item>CMPRES</item>+ <item>CNONCT</item>+ <item>COALESCE</item>+ <item>COALESCEC</item>+ <item>COLLATE</item>+ <item>COMB</item>+ <item>COMPANION_NEXT</item>+ <item>COMPARE</item>+ <item>COMPBL</item>+ <item>COMPCOST</item>+ <item>COMPFUZZ</item>+ <item>COMPGED</item>+ <item>COMPLEV</item>+ <item>COMPOUND</item>+ <item>COMPRESS</item>+ <item>COMPSTOR</item>+ <item>CONSTANT</item>+ <item>CONVX</item>+ <item>CONVXP</item>+ <item>COS</item>+ <item>COSH</item>+ <item>COT</item>+ <item>COUNT</item>+ <item>COUNTC</item>+ <item>COUNTW</item>+ <item>CSC</item>+ <item>CSS</item>+ <item>CUMIPMT</item>+ <item>CUMPRINC</item>+ <item>CUROBS</item>+ <item>CV</item>+ <item>DACCDB</item>+ <item>DACCDBSL</item>+ <item>DACCSL</item>+ <item>DACCSYD</item>+ <item>DACCTAB</item>+ <item>DAIRY</item>+ <item>DATATYP</item>+ <item>DATDIF</item>+ <item>DATE</item>+ <item>DATEJUL</item>+ <item>DATEPART</item>+ <item>DATETIME</item>+ <item>DAY</item>+ <item>DCLOSE</item>+ <item>DCREATE</item>+ <item>DEFINE</item>+ <item>DEPDB</item>+ <item>DEPDBSL</item>+ <item>DEPSL</item>+ <item>DEPSYD</item>+ <item>DEPTAB</item>+ <item>DEQUOTE</item>+ <item>DET</item>+ <item>DEVIANCE</item>+ <item>DHMS</item>+ <item>DICTIONARY</item>+ <item>DIF</item>+ <item>DIGAMMA</item>+ <item>DIM</item>+ <item>DINFO</item>+ <item>DISCARD</item>+ <item>DIVIDE</item>+ <item>DNUM</item>+ <item>DOPEN</item>+ <item>DOPTNAME</item>+ <item>DOPTNUM</item>+ <item>DOSUBL</item>+ <item>DQCASE</item>+ <item>DQGENDER</item>+ <item>DQGENDERINFOGET</item>+ <item>DQGENDERPARSED</item>+ <item>DQIDENTIFY</item>+ <item>DQLOCALEGUESS</item>+ <item>DQLOCALEINFOGET</item>+ <item>DQLOCALEINFOLIST</item>+ <item>DQMATCH</item>+ <item>DQMATCHINFOGET</item>+ <item>DQMATCHPARSED</item>+ <item>DQPARSE</item>+ <item>DQPARSEINFOGET</item>+ <item>DQPARSETOKENGET</item>+ <item>DQPARSETOKENPUT</item>+ <item>DQPATTERN</item>+ <item>DQSCHEMEAPPLY</item>+ <item>DQSRVARCHJOB</item>+ <item>DQSRVCOPYLOG</item>+ <item>DQSRVDELETELOG</item>+ <item>DQSRVJOBSTATUS</item>+ <item>DQSRVKILLJOB</item>+ <item>DQSRVPROFJOBFILE</item>+ <item>DQSRVPROFJOBREP</item>+ <item>DQSRVUSER</item>+ <item>DQSTANDARDIZE</item>+ <item>DQTOKEN</item>+ <item>DREAD</item>+ <item>DROPNOTE</item>+ <item>DSNAME</item>+ <item>DSNCATLGD</item>+ <item>DUR</item>+ <item>DURP</item>+ <item>DYNAMIC_ARRAY</item>+ <item>EBCASC</item>+ <item>EFFRATE</item>+ <item>ELEMMULT</item>+ <item>ENTRY_FIRST</item>+ <item>ENTRY_NEXT</item>+ <item>ENVLEN</item>+ <item>ERF</item>+ <item>ERFC</item>+ <item>EUCLID</item>+ <item>EVAL</item>+ <item>EXECUTE</item>+ <item>EXIST</item>+ <item>EXISTS</item>+ <item>EXP</item>+ <item>EXPMATRIX</item>+ <item>FACT</item>+ <item>FAPPEND</item>+ <item>FCLOSE</item>+ <item>FCOL</item>+ <item>FCOPY</item>+ <item>FDELETE</item>+ <item>FETCH</item>+ <item>FETCHOBS</item>+ <item>FEXIST</item>+ <item>FGET</item>+ <item>FILEATTR</item>+ <item>FILEEXIST</item>+ <item>FILENAME</item>+ <item>FILEREF</item>+ <item>FILLMATRIX</item>+ <item>FINANCE</item>+ <item>FIND</item>+ <item>FINDC</item>+ <item>FINDFILE</item>+ <item>FINDTABLE</item>+ <item>FINDW</item>+ <item>FINFO</item>+ <item>FINV</item>+ <item>FIPNAME</item>+ <item>FIPNAMEL</item>+ <item>FIPSTATE</item>+ <item>FIRST</item>+ <item>FLOOR</item>+ <item>FLOORZ</item>+ <item>FMTINFO</item>+ <item>FNONCT</item>+ <item>FNOTE</item>+ <item>FOPEN</item>+ <item>FOPTNAME</item>+ <item>FOPTNUM</item>+ <item>FPOINT</item>+ <item>FPOS</item>+ <item>FPUT</item>+ <item>FREAD</item>+ <item>FREWIND</item>+ <item>FRLEN</item>+ <item>FSEP</item>+ <item>FUZZ</item>+ <item>FWRITE</item>+ <item>GAMINV</item>+ <item>GAMMA</item>+ <item>GARKHCLPRC</item>+ <item>GARKHPTPRC</item>+ <item>GCD</item>+ <item>GEODIST</item>+ <item>GEOMEAN</item>+ <item>GEOMEANZ</item>+ <item>GETCASURL</item>+ <item>GETDVI</item>+ <item>GETJPI</item>+ <item>GETLCASLIB</item>+ <item>GETLOG</item>+ <item>GETLSESSREF</item>+ <item>GETLTAG</item>+ <item>GETMSG</item>+ <item>GETOPTION</item>+ <item>GETQUOTA</item>+ <item>GETSESSOPT</item>+ <item>GETSYM</item>+ <item>GETTERM</item>+ <item>GETVARC</item>+ <item>GETVARN</item>+ <item>GITFN_CLONE</item>+ <item>GITFN_COMMIT</item>+ <item>GITFN_COMMITFREE</item>+ <item>GITFN_COMMIT_GET</item>+ <item>GITFN_COMMIT_LOG</item>+ <item>GITFN_CO_BRANCH</item>+ <item>GITFN_DEL_REPO</item>+ <item>GITFN_DIFF</item>+ <item>GITFN_DIFF_FREE</item>+ <item>GITFN_DIFF_GET</item>+ <item>GITFN_DIFF_IDX_F</item>+ <item>GITFN_IDX_ADD</item>+ <item>GITFN_IDX_REMOVE</item>+ <item>GITFN_MRG_BRANCH</item>+ <item>GITFN_NEW_BRANCH</item>+ <item>GITFN_PULL</item>+ <item>GITFN_PUSH</item>+ <item>GITFN_RESET</item>+ <item>GITFN_RESET_FILE</item>+ <item>GITFN_STATUS</item>+ <item>GITFN_STATUSFREE</item>+ <item>GITFN_STATUS_GET</item>+ <item>GITFN_VERSION</item>+ <item>GRAYCODE</item>+ <item>GRDSVC_ENABLE</item>+ <item>GRDSVC_GETADDR</item>+ <item>GRDSVC_GETINFO</item>+ <item>GRDSVC_GETNAME</item>+ <item>GRDSVC_NNODES</item>+ <item>HARMEAN</item>+ <item>HARMEANZ</item>+ <item>HASHING</item>+ <item>HASHING_FILE</item>+ <item>HASHING_HMAC</item>+ <item>HASHING_HMAC_FILE</item>+ <item>HASHING_HMAC_INIT</item>+ <item>HASHING_INIT</item>+ <item>HASHING_PART</item>+ <item>HASHING_TERM</item>+ <item>HBOUND</item>+ <item>HMS</item>+ <item>HOLIDAY</item>+ <item>HOLIDAYCK</item>+ <item>HOLIDAYCOUNT</item>+ <item>HOLIDAYNAME</item>+ <item>HOLIDAYNX</item>+ <item>HOLIDAYNY</item>+ <item>HOLIDAYTEST</item>+ <item>HOUR</item>+ <item>HTMLDECODE</item>+ <item>HTMLENCODE</item>+ <item>IBESSEL</item>+ <item>IDENTITY</item>+ <item>IFC</item>+ <item>IFN</item>+ <item>INDEX</item>+ <item>INDEXC</item>+ <item>INDEXW</item>+ <item>INPUT</item>+ <item>INPUTC</item>+ <item>INPUTN</item>+ <item>INSERT_CATALOG</item>+ <item>INSERT_DATASET</item>+ <item>INSERT_FDB</item>+ <item>INSERT_FILE</item>+ <item>INSERT_HTML</item>+ <item>INSERT_MDDB</item>+ <item>INSERT_PACKAGE</item>+ <item>INSERT_REF</item>+ <item>INSERT_SQLVIEW</item>+ <item>INSERT_VIEWER</item>+ <item>INT</item>+ <item>INTCINDEX</item>+ <item>INTCK</item>+ <item>INTCYCLE</item>+ <item>INTFIT</item>+ <item>INTFMT</item>+ <item>INTGET</item>+ <item>INTINDEX</item>+ <item>INTNEST</item>+ <item>INTNX</item>+ <item>INTRR</item>+ <item>INTSEAS</item>+ <item>INTSHIFT</item>+ <item>INTTEST</item>+ <item>INTZ</item>+ <item>INV</item>+ <item>INVCDF</item>+ <item>INVERSE</item>+ <item>IORCMSG</item>+ <item>IPMT</item>+ <item>IQR</item>+ <item>IRR</item>+ <item>IS8601_CONVERT</item>+ <item>ISARRAY</item>+ <item>ISBLOB</item>+ <item>ISDICTIONARY</item>+ <item>ISDOUBLE</item>+ <item>ISINTEGER</item>+ <item>ISLIST</item>+ <item>ISNULL</item>+ <item>ISSTRING</item>+ <item>ISTABLE</item>+ <item>ISTYPE</item>+ <item>JBESSEL</item>+ <item>JSONPP</item>+ <item>JULDATE</item>+ <item>JULDATE7</item>+ <item>KCOMPARE</item>+ <item>KCOMPRESS</item>+ <item>KCOUNT</item>+ <item>KINDEX</item>+ <item>KINDEXC</item>+ <item>KLEFT</item>+ <item>KLENGTH</item>+ <item>KLOWCASE</item>+ <item>KREVERSE</item>+ <item>KRIGHT</item>+ <item>KSCAN</item>+ <item>KSUBSTR</item>+ <item>KSUBSTRB</item>+ <item>KTRANSLATE</item>+ <item>KTRIM</item>+ <item>KTRUNCATE</item>+ <item>KUPCASE</item>+ <item>KUPDATE</item>+ <item>KUPDATEB</item>+ <item>KURTOSIS</item>+ <item>KVERIFY</item>+ <item>LABEL</item>+ <item>LAG</item>+ <item>LARGEST</item>+ <item>LBOUND</item>+ <item>LCM</item>+ <item>LCOMB</item>+ <item>LEFT</item>+ <item>LENGTH</item>+ <item>LENGTHC</item>+ <item>LENGTHM</item>+ <item>LENGTHN</item>+ <item>LEXCOMB</item>+ <item>LEXCOMBI</item>+ <item>LEXPERK</item>+ <item>LEXPERM</item>+ <item>LFACT</item>+ <item>LGAMMA</item>+ <item>LIBNAME</item>+ <item>LIBREF</item>+ <item>LIMMOMENT</item>+ <item>LOG</item>+ <item>LOG10</item>+ <item>LOG1PX</item>+ <item>LOG2</item>+ <item>LOGBETA</item>+ <item>LOGCDF</item>+ <item>LOGISTIC</item>+ <item>LOGPDF</item>+ <item>LOGSDF</item>+ <item>LOWCASE</item>+ <item>LPERM</item>+ <item>LPNORM</item>+ <item>MAD</item>+ <item>MARGRCLPRC</item>+ <item>MARGRPTPRC</item>+ <item>MAX</item>+ <item>MD5</item>+ <item>MDY</item>+ <item>MEAN</item>+ <item>MEDIAN</item>+ <item>MIN</item>+ <item>MINUTE</item>+ <item>MISSING</item>+ <item>MOD</item>+ <item>MODEXIST</item>+ <item>MODULE</item>+ <item>MODULEC</item>+ <item>MODULEN</item>+ <item>MODZ</item>+ <item>MONTH</item>+ <item>MOPEN</item>+ <item>MORT</item>+ <item>MSPLINT</item>+ <item>MULT</item>+ <item>MVALID</item>+ <item>N</item>+ <item>NETPV</item>+ <item>NEWTABLE</item>+ <item>NLITERAL</item>+ <item>NMISS</item>+ <item>NODENAME</item>+ <item>NOMRATE</item>+ <item>NORMAL</item>+ <item>NOTALNUM</item>+ <item>NOTALPHA</item>+ <item>NOTCNTRL</item>+ <item>NOTDIGIT</item>+ <item>NOTE</item>+ <item>NOTFIRST</item>+ <item>NOTGRAPH</item>+ <item>NOTLOWER</item>+ <item>NOTNAME</item>+ <item>NOTPRINT</item>+ <item>NOTPUNCT</item>+ <item>NOTSPACE</item>+ <item>NOTUPPER</item>+ <item>NOTXDIGIT</item>+ <item>NPV</item>+ <item>NRBQUOTE</item>+ <item>NRQUOTE</item>+ <item>NRSTR</item>+ <item>NVALID</item>+ <item>NWKDOM</item>+ <item>OPEN</item>+ <item>ORDINAL</item>+ <item>PACKAGE_BEGIN</item>+ <item>PACKAGE_DESTROY</item>+ <item>PACKAGE_END</item>+ <item>PACKAGE_FIRST</item>+ <item>PACKAGE_NEXT</item>+ <item>PACKAGE_PUBLISH</item>+ <item>PACKAGE_TERM</item>+ <item>PATHNAME</item>+ <item>PCTL</item>+ <item>PDF</item>+ <item>PEEK</item>+ <item>PEEKC</item>+ <item>PEEKCLONG</item>+ <item>PEEKLONG</item>+ <item>PERM</item>+ <item>PMF</item>+ <item>PMT</item>+ <item>POINT</item>+ <item>POISSON</item>+ <item>POKE</item>+ <item>POKELONG</item>+ <item>POWER</item>+ <item>PPMT</item>+ <item>PRINTTABLE</item>+ <item>PROBBETA</item>+ <item>PROBBNML</item>+ <item>PROBBNRM</item>+ <item>PROBCHI</item>+ <item>PROBF</item>+ <item>PROBGAM</item>+ <item>PROBHYPR</item>+ <item>PROBIT</item>+ <item>PROBMC</item>+ <item>PROBMED</item>+ <item>PROBNEGB</item>+ <item>PROBNORM</item>+ <item>PROBT</item>+ <item>PROPCASE</item>+ <item>PRXCHANGE</item>+ <item>PRXDEBUG</item>+ <item>PRXFREE</item>+ <item>PRXMATCH</item>+ <item>PRXNEXT</item>+ <item>PRXPAREN</item>+ <item>PRXPARSE</item>+ <item>PRXPOSN</item>+ <item>PRXSUBSTR</item>+ <item>PTRLONGADD</item>+ <item>PUT</item>+ <item>PUTC</item>+ <item>PUTLOG</item>+ <item>PUTN</item>+ <item>PUTSYM</item>+ <item>PVP</item>+ <item>QCMPRES</item>+ <item>QLEFT</item>+ <item>QLOWCASE</item>+ <item>QSCAN</item>+ <item>QSUBSTR</item>+ <item>QSYSFUNC</item>+ <item>QTR</item>+ <item>QTRIM</item>+ <item>QUANTILE</item>+ <item>QUOTE</item>+ <item>QUPCASE</item>+ <item>RANBIN</item>+ <item>RANCAU</item>+ <item>RANCOMB</item>+ <item>RAND</item>+ <item>RANEXP</item>+ <item>RANGAM</item>+ <item>RANGE</item>+ <item>RANK</item>+ <item>RANNOR</item>+ <item>RANPERK</item>+ <item>RANPERM</item>+ <item>RANPOI</item>+ <item>RANTBL</item>+ <item>RANTRI</item>+ <item>RANUNI</item>+ <item>READPATH</item>+ <item>READ_ARRAY</item>+ <item>RENAME</item>+ <item>REPEAT</item>+ <item>RESOLVE</item>+ <item>RETRIEVE_CATALOG</item>+ <item>RETRIEVE_DATASET</item>+ <item>RETRIEVE_FDB</item>+ <item>RETRIEVE_FILE</item>+ <item>RETRIEVE_HTML</item>+ <item>RETRIEVE_MDDB</item>+ <item>RETRIEVE_NESTED</item>+ <item>RETRIEVE_PACKAGE</item>+ <item>RETRIEVE_REF</item>+ <item>RETRIEVE_SQLVIEW</item>+ <item>RETRIEVE_VIEWER</item>+ <item>REVERSE</item>+ <item>REWIND</item>+ <item>RIGHT</item>+ <item>RMS</item>+ <item>ROUND</item>+ <item>ROUNDE</item>+ <item>ROUNDZ</item>+ <item>RUN_MACRO</item>+ <item>RUN_SASFILE</item>+ <item>RXCHANGE</item>+ <item>RXFREE</item>+ <item>RXSUBSTR</item>+ <item>SAVING</item>+ <item>SAVINGS</item>+ <item>SCAN</item>+ <item>SCANQ</item>+ <item>SDF</item>+ <item>SEC</item>+ <item>SECOND</item>+ <item>SESSFOUND</item>+ <item>SESSIONS</item>+ <item>SET</item>+ <item>SETNULL</item>+ <item>SETTERM</item>+ <item>SHA256</item>+ <item>SHA256HEX</item>+ <item>SHA256HMACHEX</item>+ <item>SIGN</item>+ <item>SIN</item>+ <item>SINH</item>+ <item>SKEWNESS</item>+ <item>SLEEP</item>+ <item>SMALLEST</item>+ <item>SOAPWEB</item>+ <item>SOAPWEBMETA</item>+ <item>SOAPWIPSERVICE</item>+ <item>SOAPWIPSRS</item>+ <item>SOAPWS</item>+ <item>SOAPWSMETA</item>+ <item>SOFTMAX</item>+ <item>SOLVE</item>+ <item>SORT</item>+ <item>SORTC</item>+ <item>SORTN</item>+ <item>SORT_REV</item>+ <item>SOUNDEX</item>+ <item>SPEDIS</item>+ <item>SQRT</item>+ <item>SQUANTILE</item>+ <item>STD</item>+ <item>STDERR</item>+ <item>STDIZE</item>+ <item>STFIPS</item>+ <item>STNAME</item>+ <item>STNAMEL</item>+ <item>STR</item>+ <item>STREAMINIT</item>+ <item>STRIP</item>+ <item>STRUCTINDEX</item>+ <item>SUBPAD</item>+ <item>SUBSTR</item>+ <item>SUBSTRN</item>+ <item>SUBTRACTMATRIX</item>+ <item>SUM</item>+ <item>SUMABS</item>+ <item>SUPERQ</item>+ <item>SYMEXIST</item>+ <item>SYMGET</item>+ <item>SYMGLOBL</item>+ <item>SYMLOCAL</item>+ <item>SYMPUT</item>+ <item>SYMPUTX</item>+ <item>SYSEVALF</item>+ <item>SYSEXIST</item>+ <item>SYSFUNC</item>+ <item>SYSGET</item>+ <item>SYSMSG</item>+ <item>SYSPARM</item>+ <item>SYSPROCESSID</item>+ <item>SYSPROCESSNAME</item>+ <item>SYSPROD</item>+ <item>SYSRC</item>+ <item>SYSTEM</item>+ <item>TABCOLUMNS</item>+ <item>TABTYPES</item>+ <item>TAN</item>+ <item>TANH</item>+ <item>TERMIN</item>+ <item>TERMOUT</item>+ <item>TIME</item>+ <item>TIMEPART</item>+ <item>TIMEVALUE</item>+ <item>TINV</item>+ <item>TNONCT</item>+ <item>TODAY</item>+ <item>TRACEBACK</item>+ <item>TRANSLATE</item>+ <item>TRANSPOSE</item>+ <item>TRANSTRN</item>+ <item>TRANWRD</item>+ <item>TRIGAMMA</item>+ <item>TRIM</item>+ <item>TRIMN</item>+ <item>TRUNC</item>+ <item>TSO</item>+ <item>TTCLOSE</item>+ <item>TTCONTRL</item>+ <item>TTOPEN</item>+ <item>TTREAD</item>+ <item>TTWRITE</item>+ <item>TYPEOF</item>+ <item>TZID</item>+ <item>TZONEID</item>+ <item>TZONENAME</item>+ <item>TZONEOFF</item>+ <item>TZONES2U</item>+ <item>TZONEU2S</item>+ <item>UNIFORM</item>+ <item>UNQUOTE</item>+ <item>UPCASE</item>+ <item>URLDECODE</item>+ <item>URLENCODE</item>+ <item>USS</item>+ <item>UUIDGEN</item>+ <item>VAR</item>+ <item>VARFMT</item>+ <item>VARINFMT</item>+ <item>VARLABEL</item>+ <item>VARLEN</item>+ <item>VARNAME</item>+ <item>VARNUM</item>+ <item>VARRAY</item>+ <item>VARRAYX</item>+ <item>VARTYPE</item>+ <item>VERIFY</item>+ <item>VFORMAT</item>+ <item>VFORMATD</item>+ <item>VFORMATDX</item>+ <item>VFORMATN</item>+ <item>VFORMATNX</item>+ <item>VFORMATW</item>+ <item>VFORMATWX</item>+ <item>VFORMATX</item>+ <item>VINARRAY</item>+ <item>VINARRAYX</item>+ <item>VINFORMAT</item>+ <item>VINFORMATD</item>+ <item>VINFORMATDX</item>+ <item>VINFORMATN</item>+ <item>VINFORMATNX</item>+ <item>VINFORMATW</item>+ <item>VINFORMATWX</item>+ <item>VINFORMATX</item>+ <item>VLABEL</item>+ <item>VLABELX</item>+ <item>VLENGTH</item>+ <item>VLENGTHX</item>+ <item>VMS</item>+ <item>VNAME</item>+ <item>VNAMEX</item>+ <item>VNEXT</item>+ <item>VTYPE</item>+ <item>VTYPEX</item>+ <item>VVALUE</item>+ <item>VVALUEX</item>+ <item>WEEK</item>+ <item>WEEKDAY</item>+ <item>WHICHC</item>+ <item>WHICHN</item>+ <item>WRITE_ARRAY</item>+ <item>WTO</item>+ <item>YEAR</item>+ <item>YIELDP</item>+ <item>YRDIF</item>+ <item>YYQ</item>+ <item>ZEROMATRIX</item>+ <item>ZIPCITY</item>+ <item>ZIPCITYDISTANCE</item>+ <item>ZIPFIPS</item>+ <item>ZIPNAME</item>+ <item>ZIPNAMEL</item>+ <item>ZIPSTATE</item>+ </list>+ <contexts>+ <!-- ====+ Init - default file-start for comments (ensure statement comment). Fall through to Normal+ ==== -->+ <context attribute="Normal Text" name="Init" lineEndContext="#stay" fallthroughContext="Normal">+ <IncludeRules context="Statement"/>+ </context>+ <!-- ====+ General - highlighting context rules for e.g. macros,+ strings, numbers, without proc/data keywords, used via+ IncludeRule+ ==== -->+ <context attribute="Normal Text" name="General" lineEndContext="#stay">+ <!-- Intra-statement comments, handle statement comments via Statement context -->+ <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>+ <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>+ <DetectChar attribute="Normal Text" context="Statement" char=";"/>+ <!-- %DO / %END folding -->+ <WordDetect attribute="MacroKeyword" context="#stay" String="%do" insensitive="true" beginRegion="macrogroup"/>+ <WordDetect attribute="MacroKeyword" context="#stay" String="%end" insensitive="true" endRegion="macrogroup"/>+ <!-- %MACRO / %MEND folding -->+ <WordDetect attribute="MacroDef" context="MacroName" String="%macro" insensitive="true" beginRegion="macrodef"/>+ <WordDetect attribute="MacroDef" context="#stay" String="%mend" endRegion="macrodef"/>+ <!-- Macro keywords (%IF %LET %PUT etc.) -->+ <keyword attribute="MacroKeyword" context="#stay" String="macros"/>+ <!-- Macro variable: &varname -->+ <DetectChar attribute="MacroVariable" context="MacroVariable" char="&"/>+ <!-- Generic macro call: %name (user-defined macros or macro functions) -->+ <DetectChar attribute="MacroName" context="MacroName" char="%"/>+ <!-- OPTIONS statement -->+ <WordDetect attribute="Keywords" context="OptionsStmt" String="options" insensitive="true"/>+ <!-- Mnemonic operators -->+ <keyword attribute="Operator" context="#stay" String="operators-word"/>+ <!-- Automatic variables -->+ <keyword attribute="Constants" context="#stay" String="constants"/>+ <!-- Format specifications -->+ <RegExpr attribute="Format" context="#stay" String="(?:\$?[A-Za-z_]|\$\d+)\w*\.(?![a-zA-Z])(?:\d+)?" insensitive="true"/>+ <!-- Suffixed and regular strings -->+ <RegExpr attribute="Number" context="#stay" insensitive="true" String=""(?:[^"]|"")*"(?:dt|[dtDT])(?!\w)"/>+ <RegExpr attribute="String" context="#stay" insensitive="true" String=""(?:[^"]|"")*"[bnxBNX](?!\w)"/>+ <DetectChar attribute="String" context="StringDouble" char="""/>+ <RegExpr attribute="Number" context="#stay" insensitive="true" String="'(?:[^']|'')*'(?:dt|[dtDT])(?!\w)"/>+ <RegExpr attribute="String" context="#stay" insensitive="true" String="'(?:[^']|'')*'[bnxBNX](?!\w)"/>+ <DetectChar attribute="String" context="StringSingle" char="'"/>+ <!-- Numbers -->+ <RegExpr attribute="Number" context="#stay" insensitive="true" String="[0-9][0-9A-Fa-f]*[xX](?!\w)|(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?"/>+ <!-- Symbolic operators, multi char and single char -->+ <RegExpr attribute="Operator" context="#stay" String="\^=:|~=:|>=:|<=:|\*\*|\|\||\^=|~=|>=|<=|<>|><|=:|>:|<:|=\*"/>+ <AnyChar attribute="Operator" context="#stay" String="+-*/=<>^~|!#@"/>+ </context>+ <!-- Statement - used to ensure ; are respected for comments. Falls through to previous context -->+ <context attribute="Normal Text" name="Statement" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Comment" context="StmtComment" char="*" beginRegion="Comment"/>+ <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>+ <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>+ </context>+ <!-- ====+ Main / Normal context+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal">+ <DetectSpaces context="#stay"/>+ <!-- Proc-specific embedded-language contexts — tested before generic \bproc\b -->+ <RegExpr attribute="Step" context="ProcSQL" String="\bproc\s+(?:sql|fedsql)\b" insensitive="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="ProcPython" String="&proc_py;" insensitive="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="ProcLua" String="&proc_lua;" insensitive="true" beginRegion="datastep"/>+ <!-- Generic PROC <name> -->+ <RegExpr attribute="Step" context="ProcHeader" String="\bproc\s+[a-zA-Z]\w*" insensitive="true" beginRegion="datastep"/>+ <!-- DATA step — negative lookahead prevents firing on `data=` common option -->+ <RegExpr attribute="Step" context="DataBody" String="&datastep;" insensitive="true" beginRegion="datastep"/>+ <!-- RUN; or QUIT; at global scope -->+ <RegExpr attribute="Step" context="Statement" String="\brun|quit\s*;" insensitive="true" endRegion="datastep"/>+ <!-- SAS statement keywords -->+ <keyword attribute="Keywords" context="#stay" String="keywords"/>+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ ProcHeader — proc option line (proc <name> <options> ;)+ Colours option names as SecKeyword:+ option=value — lookahead on = to match only the name+ standalone option — DetectIdentifier+ On ; transitions to ProcBody+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ProcHeader">+ <!-- Semicolon ends the header line; dont consume and enter ProcBody -->+ <DetectChar attribute="Normal Text" context="#pop!ProcBody" char=";" lookAhead="true"/>+ <!-- option=value - colour option name as SecKeyword, push helper to color value depending on type -->+ <RegExpr attribute="SecKeyword" context="OptValue" String="&option_name;" insensitive="true"/>+ <!-- standalone boolean option -->+ <DetectIdentifier attribute="SecKeyword" context="#stay"/>+ <!-- Dataset options inside () -->+ <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ ProcBody — generic proc body, handles each statment by colouring first keyword using+ helper context (which also exits context), then colouring dataset options, then regular rules+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ProcBody">+ <!-- After each semicolon, colour the next identifier as a proc keyword -->+ <DetectChar attribute="Normal Text" context="ProcStmt" char=";"/>+ <!-- Dataset options inside () -->+ <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>+ <!-- All regular Normal rules -->+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ ProcStmt — after ; inside a proc body.+ Exit when run/quit/new statement+ Skips whitespace/comments, colours the first identifier as SecKeyword, then pops back to ProcBody.+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ProcStmt" fallthroughContext="#pop">+ <DetectSpaces context="#stay"/>+ <DetectChar attribute="Comment" context="StmtComment" char="*" beginRegion="Comment"/>+ <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>+ <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>+ <!-- Exit on run or quit -->+ <RegExpr attribute="Step" context="#pop#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>+ <!-- Bail out if another step starts without RUN/QUIT, dont consume and handle with main context -->+ <RegExpr attribute="Normal Text" context="#pop#pop" String="&proc_data;" firstNonSpace="true" insensitive="true" lookAhead="true"/>+ <!-- Colour the first identifier as a proc sub-statement keyword, then re-enter ProcBody for remaining rules -->+ <DetectIdentifier attribute="SecKeyword" context="#pop"/>+ </context>+ <!-- ====+ DataBody — DATA step body+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="DataBody">+ <DetectSpaces context="#stay"/>+ <!-- Exit on RUN; -->+ <RegExpr attribute="Step" context="#pop!Statement" String="\brun\s*;" insensitive="true" endRegion="datastep"/>+ <!-- Bail out if another step starts without RUN, dont consume and handle with main context -->+ <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>+ <!-- Dataset options inside () -->+ <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>+ <!-- Control flow -->+ <keyword attribute="Control" context="#stay" String="controls"/>+ <!-- Built-in functions: lookahead for func( then classify in FuncCheck -->+ <RegExpr attribute="Normal Text" context="FuncCheck" String="&identifier;\s*\(" insensitive="true" lookAhead="true"/>+ <!-- Data-step statement keywords -->+ <keyword attribute="Keywords" context="#stay" String="datastep-keywords"/>+ <!-- Cards / Datalines / Parmcards -->+ <RegExpr attribute="Keywords" context="Cards4" String="\b(?:cards4|lines4|datalines4|parmcards4)\b[^;]*;" insensitive="true" beginRegion="Cards"/>+ <RegExpr attribute="Keywords" context="Cards" String="\b(?:cards|lines|datalines|parmcards)\b[^;]*;" insensitive="true" beginRegion="Cards"/>+ <!-- DO / END folding -->+ <WordDetect attribute="Control" context="#stay" String="do" insensitive="true" beginRegion="doblock"/>+ <RegExpr attribute="Control" context="#stay" String="\bend(?=\s*;)" insensitive="true" endRegion="doblock"/>+ <!-- All regular General rules -->+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ FuncCheck — classify word before ( as Function or Normal Text+ ==== -->+ <context attribute="Normal Text" name="FuncCheck" fallthroughContext="#pop">+ <keyword attribute="Functions" context="#pop" String="functions"/>+ <!-- If we dont match then consume identfiers to avoid popping back to same position and re-entering match -->+ <DetectIdentifier attribute="Normal Text" context="#pop"/>+ </context>+ <!-- ====+ DatasetOpts — inside (...) after a dataset name+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="DatasetOpts">+ <!-- Nested data set option/value key pairs -->+ <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ <keyword attribute="SecKeyword" context="#stay" String="dataset-options"/>+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ OptionsStmt — after OPTIONS keyword, until ;+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="OptionsStmt">+ <DetectChar attribute="Normal Text" context="#pop" char=";"/>+ <!-- option=value - colour option name as SecKeyword, push helper to color value depending on type -->+ <RegExpr attribute="SecKeyword" context="OptValue" String="&option_name;" insensitive="true"/>+ <!-- standalone boolean option -->+ <DetectIdentifier attribute="SecKeyword" context="#stay"/>+ <IncludeRules context="General"/>+ </context>+ <!-- ====+ OptValue / OptValueAfterEq — shared by ProcHeader and+ OptionsStmt to consume =<value> without colouring the+ value as SecKeyword.+ ==== -->+ <context attribute="Normal Text" lineEndContext="#stay" name="OptValue" fallthroughContext="#pop">+ <DetectSpaces context="#stay"/>+ <DetectChar attribute="Operator" context="OptValueAfterEq" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="OptValueAfterEq" fallthroughContext="#pop#pop">+ <DetectSpaces context="#stay"/>+ <!-- Identifier value (libref.member or plain): consume as Normal Text, pop both -->+ <RegExpr attribute="Normal Text" context="#pop#pop" String="&identifier;(\.&identifier;)*"/>+ <!-- Numbers, strings, other values: fall through #pop#pop — caller's General rules colour them -->+ </context>+ <!-- ====+ Comments+ ==== -->+ <context attribute="Comment" name="BlockComment">+ <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>+ </context>+ <context attribute="Comment" name="MacroComment">+ <DetectChar attribute="Comment" context="#pop" char=";" endRegion="Comment"/>+ </context>+ <context attribute="Comment" name="StmtComment">+ <DetectChar attribute="Comment" context="#pop" char=";" endRegion="Comment"/>+ </context>+ <!-- ====+ Regular Strings - allow double quoting to escape+ ==== -->+ <context attribute="String" name="StringDouble">+ <StringDetect attribute="String" context="#stay" String=""""/>+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+ <context attribute="String" name="StringSingle">+ <StringDetect attribute="String" context="#stay" String="''"/>+ <DetectChar attribute="String" context="#pop" char="'"/>+ </context>+ <!-- ====+ Macro Names & Variables+ ==== -->+ <context attribute="MacroName" name="MacroName">+ <!-- Highlight macro name as in %macro <macro_name>, or as in %macro_name -->+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectIdentifier attribute="MacroName" context="#pop"/>+ </context>+ <context attribute="MacroVariable" name="MacroVariable">+ <DetectIdentifier attribute="MacroVariable" context="#stay"/>+ <DetectChar attribute="MacroVariable" context="#pop" char="."/>+ <RegExpr attribute="MacroVariable" context="#pop" String="\W" lookAhead="true"/>+ </context>+ <!-- ====+ CARDS / DATALINES inline data+ ==== -->+ <context attribute="Cards" name="Cards">+ <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="Cards"/>+ </context>+ <context attribute="Cards" name="Cards4">+ <StringDetect attribute="Normal Text" context="#pop" String=";;;;" endRegion="Cards"/>+ </context>+ <!-- ====+ Embedded Language PROCS+ ==== -->+ <context attribute="Normal Text" name="ProcSQL">+ <!-- Add rules to jump to correct block if a proc sql block is ended - to take precedence over+ regular SQL rules -->+ <RegExpr attribute="Step" context="#pop!Statement" String="\bquit\s*;" insensitive="true" endRegion="datastep"/>+ <RegExpr attribute="Step" context="#pop!DataBody" String="&datastep;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="#pop!ProcSQL" String="\bproc\s+(?:sql|fedsql)\b[^;]*;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="#pop!ProcPython" String="&proc_py;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="#pop!ProcLua" String="&proc_lua;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>+ <RegExpr attribute="Step" context="#pop!ProcBody" String=";\s*\bproc\b" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>+ <IncludeRules context="Normal##SQL"/>+ </context>+ <context attribute="Normal Text" name="ProcPython">+ <RegExpr attribute="Step" context="#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>+ <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>+ <RegExpr attribute="Keywords" context="PythonBlock" String="&submit;" insensitive="true"/>+ <IncludeRules context="Normal"/>+ </context>+ <context attribute="Normal Text" name="PythonBlock">+ <RegExpr attribute="Keywords" context="#pop" String="&endsubmit;" insensitive="true"/>+ <IncludeRules context="Normal##Python"/>+ </context>+ <context attribute="Normal Text" name="ProcLua">+ <RegExpr attribute="Step" context="#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>+ <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>+ <RegExpr attribute="Keywords" context="LuaBlock" String="&submit;" insensitive="true"/>+ <IncludeRules context="Normal"/>+ </context>+ <context attribute="Normal Text" name="LuaBlock">+ <RegExpr attribute="Keywords" context="#pop" String="&endsubmit;" insensitive="true"/>+ <IncludeRules context="Normal##Lua"/>+ </context>+ </contexts>+ <!-- ====+ Style Definitions+ ==== -->+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Operator" defStyleNum="dsOperator"/>+ <itemData name="Keywords" defStyleNum="dsKeyword"/>+ <itemData name="SecKeyword" defStyleNum="dsBuiltIn"/>+ <itemData name="Functions" defStyleNum="dsFunction"/>+ <itemData name="Constants" defStyleNum="dsConstant"/>+ <itemData name="Format" defStyleNum="dsDataType"/>+ <itemData name="MacroDef" defStyleNum="dsPreprocessor"/>+ <itemData name="MacroKeyword" defStyleNum="dsPreprocessor"/>+ <itemData name="Control" defStyleNum="dsControlFlow"/>+ <itemData name="Step" defStyleNum="dsKeyword" bold="true"/>+ <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Number" defStyleNum="dsFloat"/>+ <itemData name="MacroName" defStyleNum="dsExtension" italic="true"/>+ <itemData name="MacroVariable" defStyleNum="dsVariable"/>+ <itemData name="Cards" defStyleNum="dsOthers"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="multiLine" start="/*" end="*/" region="Comment"/>+ <comment name="multiLine" start="*" end=";" region="Comment"/>+ <comment name="multiLine" start="%*" end=";" region="Comment"/>+ </comments>+ <keywords casesensitive="false" weakDeliminator="%"/>+ </general>+</language>
+ xml/sparql.xml view
@@ -0,0 +1,193 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language>+<language name="SPARQL" section="Database" version="1" kateversion="5.0"+ extensions="*.rq;*.sparql"+ mimetype="application/sparql-query"+ author="Damian Oswald (damian.oswald@protonmail.com)"+ license="MIT">+ <highlighting>+ <list name="keywords">+ <item>ADD</item>+ <item>AS</item>+ <item>ASC</item>+ <item>ASK</item>+ <item>BASE</item>+ <item>BIND</item>+ <item>BY</item>+ <item>CLEAR</item>+ <item>CONSTRUCT</item>+ <item>COPY</item>+ <item>CREATE</item>+ <item>DATA</item>+ <item>DEFAULT</item>+ <item>DELETE</item>+ <item>DESC</item>+ <item>DESCRIBE</item>+ <item>DISTINCT</item>+ <item>DROP</item>+ <item>EXISTS</item>+ <item>FILTER</item>+ <item>FROM</item>+ <item>GRAPH</item>+ <item>GROUP</item>+ <item>HAVING</item>+ <item>IN</item>+ <item>INSERT</item>+ <item>INTO</item>+ <item>LIMIT</item>+ <item>LOAD</item>+ <item>MINUS</item>+ <item>MOVE</item>+ <item>NAMED</item>+ <item>NOT</item>+ <item>OFFSET</item>+ <item>OPTIONAL</item>+ <item>ORDER</item>+ <item>PREFIX</item>+ <item>REDUCED</item>+ <item>SELECT</item>+ <item>SERVICE</item>+ <item>SILENT</item>+ <item>TO</item>+ <item>UNDEF</item>+ <item>UNION</item>+ <item>USING</item>+ <item>VALUES</item>+ <item>WHERE</item>+ <item>WITH</item>+ </list>+ <list name="functions">+ <item>ABS</item>+ <item>BNODE</item>+ <item>BOUND</item>+ <item>CEIL</item>+ <item>COALESCE</item>+ <item>CONCAT</item>+ <item>CONTAINS</item>+ <item>DATATYPE</item>+ <item>DAY</item>+ <item>ENCODE_FOR_URI</item>+ <item>FLOOR</item>+ <item>HOURS</item>+ <item>IF</item>+ <item>IRI</item>+ <item>ISBLANK</item>+ <item>ISIRI</item>+ <item>ISLITERAL</item>+ <item>ISNUMERIC</item>+ <item>ISURI</item>+ <item>LANG</item>+ <item>LANGMATCHES</item>+ <item>LCASE</item>+ <item>MD5</item>+ <item>MINUTES</item>+ <item>MONTH</item>+ <item>NOW</item>+ <item>RAND</item>+ <item>REGEX</item>+ <item>REPLACE</item>+ <item>ROUND</item>+ <item>SAMETERM</item>+ <item>SECONDS</item>+ <item>SHA1</item>+ <item>SHA256</item>+ <item>SHA384</item>+ <item>SHA512</item>+ <item>STR</item>+ <item>STRAFTER</item>+ <item>STRBEFORE</item>+ <item>STRDT</item>+ <item>STRENDS</item>+ <item>STRLANG</item>+ <item>STRLEN</item>+ <item>STRSTARTS</item>+ <item>STRUUID</item>+ <item>SUBSTR</item>+ <item>TIMEZONE</item>+ <item>TZ</item>+ <item>UCASE</item>+ <item>URI</item>+ <item>UUID</item>+ <item>YEAR</item>+ </list>+ <list name="aggregates">+ <item>AVG</item>+ <item>COUNT</item>+ <item>GROUP_CONCAT</item>+ <item>MAX</item>+ <item>MIN</item>+ <item>SAMPLE</item>+ <item>SUM</item>+ </list>+ <contexts>+ <context name="Normal" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectChar attribute="Comment" context="Singleline Comment" char="#"/>+ <RangeDetect attribute="IRI" context="#stay" char="<" char1=">"/>+ <StringDetect attribute="String" context="StringTSS" String="'''"/>+ <StringDetect attribute="String" context="StringTDS" String="""""/>+ <DetectChar attribute="String" context="StringS" char="'"/>+ <DetectChar attribute="String" context="StringD" char="""/>+ <HlCHex attribute="Hex" context="#stay"/>+ <Float attribute="Float" context="#stay"/>+ <Int attribute="Decimal" context="#stay"/>+ <StringDetect attribute="Variable" context="#stay" String="[\?\$]\w+"/>+ <keyword attribute="Keyword" String="keywords" context="#stay" insensitive="true"/>+ <keyword attribute="Function" String="functions" context="#stay" insensitive="true"/>+ <keyword attribute="Function" String="aggregates" context="#stay" insensitive="true"/>+ <Detect2Chars attribute="Operator" context="#stay" char="&" char1="&"/>+ <Detect2Chars attribute="Operator" context="#stay" char="|" char1="|"/>+ <Detect2Chars attribute="Operator" context="#stay" char="!" char1="="/>+ <Detect2Chars attribute="Operator" context="#stay" char="<" char1="="/>+ <Detect2Chars attribute="Operator" context="#stay" char=">" char1="="/>+ <Detect2Chars attribute="Operator" context="#stay" char="^" char1="^"/>+ <AnyChar attribute="Operator" context="#stay" String="*+-/=!<>()[]{},;.|^"/>+ <StringDetect attribute="Boolean" context="#stay" String="\b(true|false)\b" insensitive="true"/>+ <StringDetect attribute="Prefixed Name" context="#stay" String="\b[a-zA-Z0-9_.-]*:[a-zA-Z0-9_.-]+"/>+ <StringDetect attribute="Blank Node" context="#stay" String="_:[a-zA-Z0-9_.-]+"/>+ <StringDetect attribute="LangTag" context="#stay" String="@[a-zA-Z]+(-[a-zA-Z0-9]+)*"/>+ </context>+ <context name="StringS" attribute="String" lineEndContext="#stay">+ <HlCStringChar attribute="String Char" context="#stay"/>+ <DetectChar attribute="String" context="#pop" char="'"/>+ </context>+ <context name="StringD" attribute="String" lineEndContext="#stay">+ <HlCStringChar attribute="String Char" context="#stay"/>+ <DetectChar attribute="String" context="#pop" char="""/>+ </context>+ <context name="StringTSS" attribute="String" lineEndContext="#stay">+ <StringDetect attribute="String" context="#pop" String="'''"/>+ </context>+ <context name="StringTDS" attribute="String" lineEndContext="#stay">+ <StringDetect attribute="String" context="#pop" String="""""/>+ </context>+ <context name="Singleline Comment" attribute="Comment" lineEndContext="#pop">+ <IncludeRules context="##Comments"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Variable" defStyleNum="dsOthers" spellChecking="false" bold="1"/>+ <itemData name="IRI" defStyleNum="dsString" spellChecking="false"/>+ <itemData name="Prefixed Name" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Blank Node" defStyleNum="dsOthers" spellChecking="false"/>+ <itemData name="LangTag" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Boolean" defStyleNum="dsConstant" spellChecking="false"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#" />+ </comments>+ <keywords casesensitive="0" />+ </general>+</language>
xml/spdx-comments.xml view
@@ -6,545 +6,808 @@ ./generate-spdx-syntax.py > ../syntax/spdx-comments.xml --> <language- version="6"- kateversion="3.1"- name="SPDX-Comments"- section="Other"- extensions=""- mimetype=""- author="Alex Turbov (i.zaufi@gmail.com)"- license="MIT"- hidden="true"- >- <highlighting>- <list name="tags">- <item>SPDX-License-Identifier:</item>- <item>SPDX-FileContributor:</item>- <item>SPDX-FileCopyrightText:</item>- <item>SPDX-LicenseInfoInFile:</item>- </list>-- <list name="operators">- <item>AND</item>- <item>OR</item>- <item>WITH</item>- </list>-- <list name="licenses">- <item>bzip2-1.0.6</item>- <item>Intel-ACPI</item>- <item>XSkat</item>- <item>CC-BY-NC-SA-2.0</item>- <item>Plexus</item>- <item>Giftware</item>- <item>BitTorrent-1.0</item>- <item>APSL-1.1</item>- <item>UPL-1.0</item>- <item>Caldera</item>- <item>Zend-2.0</item>- <item>CUA-OPL-1.0</item>- <item>JPNIC</item>- <item>SAX-PD</item>- <item>CC-BY-ND-2.5</item>- <item>eGenix</item>- <item>LGPLLR</item>- <item>OLDAP-2.2.2</item>- <item>CC-BY-ND-3.0-DE</item>- <item>IPA</item>- <item>NCSA</item>- <item>W3C</item>- <item>Adobe-2006</item>- <item>Net-SNMP</item>- <item>CC-BY-SA-4.0</item>- <item>YPL-1.0</item>- <item>MITNFA</item>- <item>PHP-3.01</item>- <item>BSD-Source-Code</item>- <item>CC-BY-SA-2.5</item>- <item>Motosoto</item>- <item>OSL-1.1</item>- <item>NGPL</item>- <item>CC-BY-2.5-AU</item>- <item>Unicode-TOU</item>- <item>BSD-3-Clause-No-Nuclear-License</item>- <item>OPUBL-1.0</item>- <item>CC-BY-NC-SA-2.0-UK</item>- <item>NLOD-2.0</item>- <item>gnuplot</item>- <item>EPICS</item>- <item>Info-ZIP</item>- <item>OLDAP-2.0</item>- <item>CERN-OHL-P-2.0</item>- <item>BSD-3-Clause-No-Nuclear-Warranty</item>- <item>AML</item>- <item>MulanPSL-1.0</item>- <item>Multics</item>- <item>VSL-1.0</item>- <item>RSA-MD</item>- <item>CC-PDDC</item>- <item>CC-BY-SA-2.1-JP</item>- <item>LPPL-1.2</item>- <item>Spencer-94</item>- <item>OLDAP-1.2</item>- <item>O-UDA-1.0</item>- <item>OLDAP-2.7</item>- <item>Glulxe</item>- <item>iMatix</item>- <item>TAPR-OHL-1.0</item>- <item>NBPL-1.0</item>- <item>LiLiQ-R-1.1</item>- <item>Noweb</item>- <item>CC0-1.0</item>- <item>BSD-Protection</item>- <item>CC-BY-NC-2.5</item>- <item>Zlib</item>- <item>GFDL-1.3-invariants-or-later</item>- <item>CC-BY-3.0-AT</item>- <item>LPPL-1.3c</item>- <item>EPL-1.0</item>- <item>GFDL-1.1-invariants-or-later</item>- <item>ANTLR-PD-fallback</item>- <item>OLDAP-2.4</item>- <item>OLDAP-2.3</item>- <item>ZPL-2.1</item>- <item>Apache-2.0</item>- <item>SGI-B-2.0</item>- <item>Hippocratic-2.1</item>- <item>CC-BY-SA-3.0-DE</item>- <item>CC-BY-NC-SA-1.0</item>- <item>LGPL-2.1-or-later</item>- <item>CC-BY-3.0-US</item>- <item>TCP-wrappers</item>- <item>GFDL-1.2-invariants-or-later</item>- <item>Eurosym</item>- <item>LPPL-1.0</item>- <item>SGI-B-1.0</item>- <item>APL-1.0</item>- <item>libtiff</item>- <item>AFL-2.1</item>- <item>CC-BY-NC-1.0</item>- <item>GD</item>- <item>AFL-1.1</item>- <item>CC-BY-NC-ND-3.0-IGO</item>- <item>Unicode-DFS-2015</item>- <item>GFDL-1.2-only</item>- <item>MPL-1.1</item>- <item>GPL-2.0-only</item>- <item>CC-BY-NC-4.0</item>- <item>FreeImage</item>- <item>SHL-0.51</item>- <item>CNRI-Jython</item>- <item>ZPL-1.1</item>- <item>Afmparse</item>- <item>OLDAP-2.1</item>- <item>Rdisc</item>- <item>Imlib2</item>- <item>BSD-4-Clause-Shortened</item>- <item>Sendmail</item>- <item>CC-BY-2.5</item>- <item>AAL</item>- <item>MPL-2.0-no-copyleft-exception</item>- <item>CC-BY-NC-ND-2.5</item>- <item>CC-BY-3.0-NL</item>- <item>LPL-1.02</item>- <item>ECL-1.0</item>- <item>OFL-1.0-no-RFN</item>- <item>CC-BY-NC-SA-3.0-DE</item>- <item>CC-BY-SA-3.0</item>- <item>NTP</item>- <item>MPL-2.0</item>- <item>APSL-1.2</item>- <item>GFDL-1.2-no-invariants-only</item>- <item>Artistic-2.0</item>- <item>RSCPL</item>- <item>Sleepycat</item>- <item>xpp</item>- <item>CDLA-Sharing-1.0</item>- <item>ClArtistic</item>- <item>AGPL-1.0-only</item>- <item>CC-BY-3.0-DE</item>- <item>AFL-2.0</item>- <item>Intel</item>- <item>GFDL-1.1-no-invariants-or-later</item>- <item>APAFML</item>- <item>SISSL</item>- <item>Naumen</item>- <item>HTMLTIDY</item>- <item>OLDAP-2.8</item>- <item>blessing</item>- <item>CC-BY-ND-2.0</item>- <item>OGTSL</item>- <item>LGPL-2.0-or-later</item>- <item>Parity-7.0.0</item>- <item>CC-BY-ND-1.0</item>- <item>dvipdfm</item>- <item>CNRI-Python</item>- <item>BSD-4-Clause-UC</item>- <item>NLOD-1.0</item>- <item>MS-RL</item>- <item>CC-BY-NC-SA-4.0</item>- <item>HaskellReport</item>- <item>CC-BY-1.0</item>- <item>UCL-1.0</item>- <item>Mup</item>- <item>SMPPL</item>- <item>PHP-3.0</item>- <item>GL2PS</item>- <item>CrystalStacker</item>- <item>W3C-20150513</item>- <item>NIST-PD-fallback</item>- <item>OGL-UK-1.0</item>- <item>CPL-1.0</item>- <item>LGPL-2.1-only</item>- <item>ZPL-2.0</item>- <item>Frameworx-1.0</item>- <item>AGPL-3.0-only</item>- <item>DRL-1.0</item>- <item>EFL-2.0</item>- <item>Spencer-99</item>- <item>CAL-1.0-Combined-Work-Exception</item>- <item>GFDL-1.1-invariants-only</item>- <item>TCL</item>- <item>SHL-0.5</item>- <item>OFL-1.0-RFN</item>- <item>CERN-OHL-W-2.0</item>- <item>Glide</item>- <item>mpich2</item>- <item>psutils</item>- <item>SPL-1.0</item>- <item>Apache-1.1</item>- <item>CC-BY-ND-4.0</item>- <item>FreeBSD-DOC</item>- <item>SCEA</item>- <item>Latex2e</item>- <item>Artistic-1.0-cl8</item>- <item>SGI-B-1.1</item>- <item>NRL</item>- <item>SWL</item>- <item>Zed</item>- <item>CERN-OHL-1.1</item>- <item>RHeCos-1.1</item>- <item>JasPer-2.0</item>- <item>SSPL-1.0</item>- <item>OLDAP-1.4</item>- <item>libpng-2.0</item>- <item>CNRI-Python-GPL-Compatible</item>- <item>Aladdin</item>- <item>CECILL-1.0</item>- <item>Ruby</item>- <item>NPL-1.1</item>- <item>ImageMagick</item>- <item>Cube</item>- <item>GFDL-1.1-only</item>- <item>CC-BY-2.0</item>- <item>AFL-1.2</item>- <item>CC-BY-SA-2.0</item>- <item>CECILL-2.0</item>- <item>MIT-advertising</item>- <item>CC-BY-NC-SA-2.5</item>- <item>Artistic-1.0</item>- <item>OSL-3.0</item>- <item>X11</item>- <item>Bahyph</item>- <item>OLDAP-2.0.1</item>- <item>EUDatagrid</item>- <item>MTLL</item>- <item>GFDL-1.2-invariants-only</item>- <item>GFDL-1.3-no-invariants-or-later</item>- <item>curl</item>- <item>LAL-1.3</item>- <item>DSDP</item>- <item>CERN-OHL-1.2</item>- <item>TOSL</item>- <item>CC-BY-3.0</item>- <item>Qhull</item>- <item>GFDL-1.3-no-invariants-only</item>- <item>TORQUE-1.1</item>- <item>MS-PL</item>- <item>Apache-1.0</item>- <item>copyleft-next-0.3.1</item>- <item>GFDL-1.2-or-later</item>- <item>MulanPSL-2.0</item>- <item>FSFAP</item>- <item>Xerox</item>- <item>CDDL-1.0</item>- <item>GFDL-1.3-invariants-only</item>- <item>etalab-2.0</item>- <item>XFree86-1.1</item>- <item>SNIA</item>- <item>LPPL-1.1</item>- <item>CATOSL-1.1</item>- <item>TU-Berlin-2.0</item>- <item>GFDL-1.3-or-later</item>- <item>LAL-1.2</item>- <item>ICU</item>- <item>FTL</item>- <item>MirOS</item>- <item>CC-BY-NC-ND-3.0</item>- <item>OSET-PL-2.1</item>- <item>CC-BY-NC-ND-2.0</item>- <item>SISSL-1.2</item>- <item>Wsuipa</item>- <item>Zimbra-1.4</item>- <item>Linux-OpenIB</item>- <item>OLDAP-2.5</item>- <item>AMPAS</item>- <item>GPL-1.0-or-later</item>- <item>BUSL-1.1</item>- <item>Adobe-Glyph</item>- <item>0BSD</item>- <item>W3C-19980720</item>- <item>FSFUL</item>- <item>CC-BY-NC-SA-3.0</item>- <item>DOC</item>- <item>TMate</item>- <item>MIT-open-group</item>- <item>AMDPLPA</item>- <item>Condor-1.1</item>- <item>PolyForm-Noncommercial-1.0.0</item>- <item>BSD-3-Clause-No-Military-License</item>- <item>CC-BY-4.0</item>- <item>OGL-Canada-2.0</item>- <item>CC-BY-NC-SA-3.0-IGO</item>- <item>EFL-1.0</item>- <item>Newsletr</item>- <item>copyleft-next-0.3.0</item>- <item>GPL-3.0-or-later</item>- <item>CDLA-Permissive-2.0</item>- <item>CC-BY-ND-3.0</item>- <item>C-UDA-1.0</item>- <item>Barr</item>- <item>Vim</item>- <item>BitTorrent-1.1</item>- <item>CDL-1.0</item>- <item>CC-BY-SA-1.0</item>- <item>ADSL</item>- <item>PostgreSQL</item>- <item>OFL-1.1</item>- <item>NPL-1.0</item>- <item>xinetd</item>- <item>LGPL-2.0-only</item>- <item>zlib-acknowledgement</item>- <item>OLDAP-2.2.1</item>- <item>APSL-1.0</item>- <item>BSD-3-Clause-LBNL</item>- <item>GLWTPL</item>- <item>LGPL-3.0-only</item>- <item>OGC-1.0</item>- <item>Dotseqn</item>- <item>MakeIndex</item>- <item>GPL-3.0-only</item>- <item>BSD-3-Clause-No-Nuclear-License-2014</item>- <item>GPL-1.0-only</item>- <item>IJG</item>- <item>AGPL-1.0-or-later</item>- <item>OFL-1.1-no-RFN</item>- <item>BSL-1.0</item>- <item>Libpng</item>- <item>CC-BY-NC-3.0</item>- <item>CC-BY-NC-2.0</item>- <item>Unlicense</item>- <item>LPL-1.0</item>- <item>bzip2-1.0.5</item>- <item>Entessa</item>- <item>BSD-2-Clause-Patent</item>- <item>ECL-2.0</item>- <item>Crossword</item>- <item>CC-BY-NC-ND-1.0</item>- <item>OCLC-2.0</item>- <item>CECILL-1.1</item>- <item>CECILL-2.1</item>- <item>OGDL-Taiwan-1.0</item>- <item>Abstyles</item>- <item>libselinux-1.0</item>- <item>ANTLR-PD</item>- <item>GPL-2.0-or-later</item>- <item>IPL-1.0</item>- <item>MIT-enna</item>- <item>CPOL-1.02</item>- <item>CC-BY-SA-3.0-AT</item>- <item>BSD-1-Clause</item>- <item>NTP-0</item>- <item>SugarCRM-1.1.3</item>- <item>MIT</item>- <item>OFL-1.1-RFN</item>- <item>Watcom-1.0</item>- <item>CC-BY-NC-SA-2.0-FR</item>- <item>ODbL-1.0</item>- <item>FSFULLR</item>- <item>OLDAP-1.3</item>- <item>SSH-OpenSSH</item>- <item>BSD-2-Clause</item>- <item>HPND</item>- <item>Zimbra-1.3</item>- <item>Borceux</item>- <item>OLDAP-1.1</item>- <item>OFL-1.0</item>- <item>NASA-1.3</item>- <item>VOSTROM</item>- <item>MIT-0</item>- <item>ISC</item>- <item>Unicode-DFS-2016</item>- <item>BlueOak-1.0.0</item>- <item>LiLiQ-Rplus-1.1</item>- <item>NOSL</item>- <item>SMLNJ</item>- <item>CPAL-1.0</item>- <item>PSF-2.0</item>- <item>RPL-1.5</item>- <item>MIT-Modern-Variant</item>- <item>Nokia</item>- <item>GFDL-1.1-no-invariants-only</item>- <item>PDDL-1.0</item>- <item>EUPL-1.0</item>- <item>CDDL-1.1</item>- <item>GFDL-1.3-only</item>- <item>OLDAP-2.6</item>- <item>JSON</item>- <item>LGPL-3.0-or-later</item>- <item>Fair</item>- <item>OSL-2.1</item>- <item>LPPL-1.3a</item>- <item>NAIST-2003</item>- <item>CC-BY-NC-ND-4.0</item>- <item>CC-BY-NC-3.0-DE</item>- <item>OPL-1.0</item>- <item>HPND-sell-variant</item>- <item>QPL-1.0</item>- <item>EUPL-1.2</item>- <item>GFDL-1.2-no-invariants-or-later</item>- <item>NCGL-UK-2.0</item>- <item>Beerware</item>- <item>BSD-3-Clause-Open-MPI</item>- <item>CECILL-B</item>- <item>EPL-2.0</item>- <item>MIT-feh</item>- <item>RPL-1.1</item>- <item>CDLA-Permissive-1.0</item>- <item>Python-2.0</item>- <item>MPL-1.0</item>- <item>GFDL-1.1-or-later</item>- <item>diffmark</item>- <item>OpenSSL</item>- <item>OSL-1.0</item>- <item>Parity-6.0.0</item>- <item>YPL-1.1</item>- <item>SSH-short</item>- <item>IBM-pibs</item>- <item>Xnet</item>- <item>TU-Berlin-1.0</item>- <item>CAL-1.0</item>- <item>AFL-3.0</item>- <item>CECILL-C</item>- <item>OGL-UK-3.0</item>- <item>BSD-3-Clause-Clear</item>- <item>BSD-3-Clause-Modification</item>- <item>CC-BY-SA-2.0-UK</item>- <item>Saxpath</item>- <item>NLPL</item>- <item>SimPL-2.0</item>- <item>psfrag</item>- <item>Spencer-86</item>- <item>OCCT-PL</item>- <item>CERN-OHL-S-2.0</item>- <item>ErlPL-1.1</item>- <item>MIT-CMU</item>- <item>NIST-PD</item>- <item>OSL-2.0</item>- <item>APSL-2.0</item>- <item>Leptonica</item>- <item>PolyForm-Small-Business-1.0.0</item>- <item>LiLiQ-P-1.1</item>- <item>NetCDF</item>- <item>OML</item>- <item>AGPL-3.0-or-later</item>- <item>OLDAP-2.2</item>- <item>BSD-3-Clause</item>- <item>WTFPL</item>- <item>OGL-UK-2.0</item>- <item>BSD-3-Clause-Attribution</item>- <item>RPSL-1.0</item>- <item>CC-BY-NC-ND-3.0-DE</item>- <item>EUPL-1.1</item>- <item>Sendmail-8.23</item>- <item>ODC-By-1.0</item>- <item>D-FSL-1.0</item>- <item>BSD-4-Clause</item>- <item>BSD-2-Clause-Views</item>- <item>Artistic-1.0-Perl</item>- <item>NPOSL-3.0</item>- <item>gSOAP-1.3b</item>- <item>Interbase-1.0</item>- </list>-- <list name="deprecated-licenses">- <item>GPL-1.0</item>- <item>GPL-2.0-with-GCC-exception</item>- <item>wxWindows</item>- <item>Nunit</item>- <item>GFDL-1.1</item>- <item>GPL-2.0</item>- <item>GFDL-1.2</item>- <item>LGPL-2.0</item>- <item>GPL-3.0-with-autoconf-exception</item>- <item>GFDL-1.3</item>- <item>BSD-2-Clause-NetBSD</item>- <item>LGPL-3.0</item>- <item>GPL-2.0-with-classpath-exception</item>- <item>GPL-3.0-with-GCC-exception</item>- <item>BSD-2-Clause-FreeBSD</item>- <item>GPL-3.0</item>- <item>GPL-2.0-with-font-exception</item>- <item>eCos-2.0</item>- <item>GPL-2.0-with-bison-exception</item>- <item>GPL-2.0-with-autoconf-exception</item>- <item>AGPL-1.0</item>- <item>AGPL-3.0</item>- <item>LGPL-2.1</item>- <item>StandardML-NJ</item>- </list>-- <list name="exceptions">- <item>GPL-CC-1.0</item>- <item>openvpn-openssl-exception</item>- <item>WxWindows-exception-3.1</item>- <item>GPL-3.0-linking-exception</item>- <item>i2p-gpl-java-exception</item>- <item>OpenJDK-assembly-exception-1.0</item>- <item>mif-exception</item>- <item>CLISP-exception-2.0</item>- <item>freertos-exception-2.0</item>- <item>Bison-exception-2.2</item>- <item>OCCT-exception-1.0</item>- <item>Autoconf-exception-2.0</item>- <item>LLVM-exception</item>- <item>GCC-exception-3.1</item>- <item>Font-exception-2.0</item>- <item>Libtool-exception</item>- <item>u-boot-exception-2.0</item>- <item>Swift-exception</item>- <item>eCos-exception-2.0</item>- <item>OCaml-LGPL-linking-exception</item>- <item>Qt-GPL-exception-1.0</item>- <item>Linux-syscall-note</item>- <item>Bootloader-exception</item>- <item>PS-or-PDF-font-exception-20170817</item>- <item>Universal-FOSS-exception-1.0</item>- <item>Classpath-exception-2.0</item>- <item>Qwt-exception-1.0</item>- <item>LZMA-exception</item>- <item>Autoconf-exception-3.0</item>- <item>DigiRule-FOSS-exception</item>- <item>389-exception</item>- <item>SHL-2.0</item>- <item>GCC-exception-2.0</item>- <item>GPL-3.0-linking-source-exception</item>- <item>Qt-LGPL-exception-1.1</item>- <item>Fawkes-Runtime-exception</item>- <item>gnu-javamail-exception</item>- <item>FLTK-exception</item>- <item>LGPL-3.0-linking-exception</item>- <item>SHL-2.1</item>+ version="7"+ kateversion="3.1"+ name="SPDX-Comments"+ section="Other"+ extensions=""+ mimetype=""+ author="Alex Turbov (i.zaufi@gmail.com)"+ license="MIT"+ hidden="true"+ >+ <highlighting>+ <list name="tags">+ <item>SPDX-License-Identifier:</item>+ <item>SPDX-FileContributor:</item>+ <item>SPDX-FileCopyrightText:</item>+ <item>SPDX-LicenseInfoInFile:</item>+ </list>++ <list name="operators">+ <item>AND</item>+ <item>OR</item>+ <item>WITH</item>+ </list>++ <list name="licenses">+ <item>X11</item>+ <item>HPND-export2-US</item>+ <item>OpenPBS-2.3</item>+ <item>OSL-3.0</item>+ <item>Rdisc</item>+ <item>LPD-document</item>+ <item>BSD-3-Clause-LBNL</item>+ <item>AFL-1.1</item>+ <item>HP-1989</item>+ <item>CC-BY-ND-4.0</item>+ <item>RSA-MD</item>+ <item>HPND-sell-variant</item>+ <item>threeparttable</item>+ <item>AMPAS</item>+ <item>ngrep</item>+ <item>mplus</item>+ <item>MIT-Festival</item>+ <item>HDF5</item>+ <item>Artistic-1.0-Perl</item>+ <item>BSD-4-Clause-UC</item>+ <item>SAX-PD</item>+ <item>APSL-1.1</item>+ <item>AGPL-1.0-or-later</item>+ <item>ANTLR-PD</item>+ <item>Zimbra-1.3</item>+ <item>GLWTPL</item>+ <item>Minpack</item>+ <item>OSL-2.1</item>+ <item>PolyForm-Small-Business-1.0.0</item>+ <item>DOC</item>+ <item>Cronyx</item>+ <item>LPPL-1.3c</item>+ <item>SGI-OpenGL</item>+ <item>libtiff</item>+ <item>OpenVision</item>+ <item>TrustedQSL</item>+ <item>Sun-PPP</item>+ <item>Entessa</item>+ <item>AFL-2.0</item>+ <item>Sleepycat</item>+ <item>Latex2e</item>+ <item>FDK-AAC</item>+ <item>CECILL-C</item>+ <item>ODC-By-1.0</item>+ <item>Bitstream-Charter</item>+ <item>UMich-Merit</item>+ <item>CC-BY-NC-2.5</item>+ <item>diffmark</item>+ <item>BlueOak-1.0.0</item>+ <item>Info-ZIP</item>+ <item>CC-BY-NC-ND-4.0</item>+ <item>JSON</item>+ <item>Sendmail-8.23</item>+ <item>SGI-B-1.0</item>+ <item>RPL-1.1</item>+ <item>ISC</item>+ <item>FSFUL</item>+ <item>Multics</item>+ <item>3D-Slicer-1.0</item>+ <item>Libpng</item>+ <item>LPPL-1.0</item>+ <item>NGPL</item>+ <item>Clips</item>+ <item>CC-BY-4.0</item>+ <item>GFDL-1.1-or-later</item>+ <item>GPL-1.0-or-later</item>+ <item>GFDL-1.3-invariants-only</item>+ <item>Sun-PPP-2000</item>+ <item>Glide</item>+ <item>Furuseth</item>+ <item>GFDL-1.3-no-invariants-or-later</item>+ <item>any-OSI</item>+ <item>LGPL-2.0-or-later</item>+ <item>ADSL</item>+ <item>Noweb</item>+ <item>Linux-man-pages-1-para</item>+ <item>CC-BY-SA-3.0</item>+ <item>TAPR-OHL-1.0</item>+ <item>SMLNJ</item>+ <item>OFL-1.1-RFN</item>+ <item>SL</item>+ <item>Afmparse</item>+ <item>CC-SA-1.0</item>+ <item>APSL-1.0</item>+ <item>Hippocratic-2.1</item>+ <item>UPL-1.0</item>+ <item>CC-BY-NC-SA-4.0</item>+ <item>xzoom</item>+ <item>SchemeReport</item>+ <item>Boehm-GC</item>+ <item>xinetd</item>+ <item>CC-BY-NC-ND-3.0</item>+ <item>CECILL-2.1</item>+ <item>SSLeay-standalone</item>+ <item>CATOSL-1.1</item>+ <item>NIST-PD</item>+ <item>GPL-2.0-or-later</item>+ <item>CECILL-1.1</item>+ <item>GFDL-1.2-no-invariants-only</item>+ <item>mpich2</item>+ <item>JasPer-2.0</item>+ <item>RPSL-1.0</item>+ <item>OLDAP-1.4</item>+ <item>TU-Berlin-1.0</item>+ <item>CC-BY-3.0-AT</item>+ <item>BSD-3-Clause-No-Nuclear-License</item>+ <item>Xdebug-1.03</item>+ <item>SISSL</item>+ <item>Apache-1.1</item>+ <item>HPND-DEC</item>+ <item>Unlicense-libtelnet</item>+ <item>Condor-1.1</item>+ <item>Unicode-TOU</item>+ <item>OML</item>+ <item>QPL-1.0-INRIA-2004</item>+ <item>CC-BY-ND-1.0</item>+ <item>PolyForm-Noncommercial-1.0.0</item>+ <item>man2html</item>+ <item>OLFL-1.3</item>+ <item>copyleft-next-0.3.0</item>+ <item>LGPLLR</item>+ <item>CDDL-1.1</item>+ <item>Xfig</item>+ <item>CC-BY-2.5-AU</item>+ <item>APL-1.0</item>+ <item>OpenSSL-standalone</item>+ <item>OGDL-Taiwan-1.0</item>+ <item>BSL-1.0</item>+ <item>generic-xts</item>+ <item>PHP-3.0</item>+ <item>LAL-1.2</item>+ <item>DRL-1.1</item>+ <item>LPL-1.0</item>+ <item>Leptonica</item>+ <item>CNRI-Jython</item>+ <item>DL-DE-ZERO-2.0</item>+ <item>Cube</item>+ <item>w3m</item>+ <item>TGPPL-1.0</item>+ <item>HPND-UC-export-US</item>+ <item>EFL-1.0</item>+ <item>NRL</item>+ <item>CPAL-1.0</item>+ <item>NCSA</item>+ <item>CC-BY-SA-2.1-JP</item>+ <item>PPL</item>+ <item>GPL-1.0-only</item>+ <item>ASWF-Digital-Assets-1.1</item>+ <item>NCL</item>+ <item>App-s2p</item>+ <item>BitTorrent-1.0</item>+ <item>HPND-merchantability-variant</item>+ <item>EPICS</item>+ <item>BSD-3-Clause-Attribution</item>+ <item>curl</item>+ <item>NLPL</item>+ <item>Apache-2.0</item>+ <item>BSD-Protection</item>+ <item>DEC-3-Clause</item>+ <item>MakeIndex</item>+ <item>RSCPL</item>+ <item>bcrypt-Solar-Designer</item>+ <item>OGL-UK-1.0</item>+ <item>OLDAP-2.1</item>+ <item>HPND-export-US-modify</item>+ <item>MIT-0</item>+ <item>MPL-2.0-no-copyleft-exception</item>+ <item>CERN-OHL-S-2.0</item>+ <item>TMate</item>+ <item>CMU-Mach</item>+ <item>OSL-2.0</item>+ <item>UnixCrypt</item>+ <item>Plexus</item>+ <item>MulanPSL-2.0</item>+ <item>OSET-PL-2.1</item>+ <item>DocBook-Schema</item>+ <item>CC-BY-NC-ND-3.0-DE</item>+ <item>IPA</item>+ <item>LGPL-2.1-or-later</item>+ <item>zlib-acknowledgement</item>+ <item>Zed</item>+ <item>Fair</item>+ <item>AGPL-3.0-only</item>+ <item>GFDL-1.2-invariants-only</item>+ <item>Spencer-86</item>+ <item>AMDPLPA</item>+ <item>NPOSL-3.0</item>+ <item>SWL</item>+ <item>CC-BY-SA-2.0-UK</item>+ <item>Brian-Gladman-2-Clause</item>+ <item>CC-BY-NC-SA-2.0</item>+ <item>CERN-OHL-P-2.0</item>+ <item>OFL-1.0-RFN</item>+ <item>Linux-man-pages-copyleft-var</item>+ <item>OFL-1.1-no-RFN</item>+ <item>BSD-3-Clause-flex</item>+ <item>Intel-ACPI</item>+ <item>CFITSIO</item>+ <item>Bitstream-Vera</item>+ <item>HPND</item>+ <item>HPND-UC</item>+ <item>PSF-2.0</item>+ <item>xkeyboard-config-Zinoviev</item>+ <item>mpi-permissive</item>+ <item>TORQUE-1.1</item>+ <item>CC-BY-NC-ND-2.5</item>+ <item>cve-tou</item>+ <item>Artistic-2.0</item>+ <item>ANTLR-PD-fallback</item>+ <item>CERN-OHL-W-2.0</item>+ <item>Spencer-99</item>+ <item>PHP-3.01</item>+ <item>SugarCRM-1.1.3</item>+ <item>GFDL-1.3-only</item>+ <item>SNIA</item>+ <item>HPND-sell-variant-MIT-disclaimer</item>+ <item>libpng-2.0</item>+ <item>BSD-4-Clause</item>+ <item>HPND-Intel</item>+ <item>LiLiQ-R-1.1</item>+ <item>any-OSI-perl-modules</item>+ <item>Aspell-RU</item>+ <item>LiLiQ-P-1.1</item>+ <item>HPND-INRIA-IMAG</item>+ <item>BUSL-1.1</item>+ <item>Parity-7.0.0</item>+ <item>TTYP0</item>+ <item>LOOP</item>+ <item>LiLiQ-Rplus-1.1</item>+ <item>BSD-3-Clause-No-Nuclear-License-2014</item>+ <item>BSD-3-Clause-Sun</item>+ <item>Parity-6.0.0</item>+ <item>IBM-pibs</item>+ <item>bzip2-1.0.6</item>+ <item>GFDL-1.2-no-invariants-or-later</item>+ <item>FSFULLRWD</item>+ <item>Game-Programming-Gems</item>+ <item>gnuplot</item>+ <item>X11-swapped</item>+ <item>NLOD-1.0</item>+ <item>CPOL-1.02</item>+ <item>OAR</item>+ <item>Abstyles</item>+ <item>SISSL-1.2</item>+ <item>Unicode-DFS-2015</item>+ <item>Graphics-Gems</item>+ <item>CC-BY-SA-4.0</item>+ <item>Dotseqn</item>+ <item>RHeCos-1.1</item>+ <item>BSD-3-Clause-Clear</item>+ <item>CC-BY-SA-2.0</item>+ <item>GFDL-1.2-invariants-or-later</item>+ <item>EUDatagrid</item>+ <item>libselinux-1.0</item>+ <item>FreeImage</item>+ <item>APSL-1.2</item>+ <item>Sendmail</item>+ <item>SHL-0.5</item>+ <item>Ubuntu-font-1.0</item>+ <item>BSD-4-Clause-Shortened</item>+ <item>GCR-docs</item>+ <item>GFDL-1.1-invariants-only</item>+ <item>ZPL-2.1</item>+ <item>CC-PDDC</item>+ <item>OCLC-2.0</item>+ <item>OpenSSL</item>+ <item>MS-RL</item>+ <item>BSD-3-Clause-acpica</item>+ <item>TCP-wrappers</item>+ <item>CC-BY-NC-SA-3.0-DE</item>+ <item>LPPL-1.3a</item>+ <item>OLDAP-1.2</item>+ <item>HP-1986</item>+ <item>hdparm</item>+ <item>PADL</item>+ <item>OPL-UK-3.0</item>+ <item>BSD-1-Clause</item>+ <item>MIT-CMU</item>+ <item>Mup</item>+ <item>ICU</item>+ <item>xpp</item>+ <item>Artistic-1.0-cl8</item>+ <item>CC-BY-2.5</item>+ <item>XSkat</item>+ <item>YPL-1.0</item>+ <item>W3C-20150513</item>+ <item>SGI-B-1.1</item>+ <item>LGPL-2.1-only</item>+ <item>CUA-OPL-1.0</item>+ <item>Eurosym</item>+ <item>FSFULLRSD</item>+ <item>CC-BY-NC-SA-2.0-FR</item>+ <item>X11-distribute-modifications-variant</item>+ <item>MPEG-SSG</item>+ <item>MIT-Modern-Variant</item>+ <item>CAL-1.0</item>+ <item>HPND-doc-sell</item>+ <item>Naumen</item>+ <item>Unicode-3.0</item>+ <item>Unicode-DFS-2016</item>+ <item>HIDAPI</item>+ <item>Baekmuk</item>+ <item>Kazlib</item>+ <item>HPND-MIT-disclaimer</item>+ <item>OLDAP-2.2.2</item>+ <item>AdaCore-doc</item>+ <item>0BSD</item>+ <item>ISC-Veillard</item>+ <item>CERN-OHL-1.2</item>+ <item>dvipdfm</item>+ <item>MulanPSL-1.0</item>+ <item>JPL-image</item>+ <item>FSFULLR</item>+ <item>CryptoSwift</item>+ <item>CC-BY-NC-3.0-DE</item>+ <item>BitTorrent-1.1</item>+ <item>EPL-2.0</item>+ <item>Vim</item>+ <item>Inner-Net-2.0</item>+ <item>LGPL-2.0-only</item>+ <item>Zimbra-1.4</item>+ <item>Cornell-Lossless-JPEG</item>+ <item>Knuth-CTAN</item>+ <item>OLDAP-1.1</item>+ <item>CC-BY-NC-ND-2.0</item>+ <item>Borceux</item>+ <item>DSDP</item>+ <item>Unlicense</item>+ <item>ECL-2.0</item>+ <item>HPND-Pbmplus</item>+ <item>ASWF-Digital-Assets-1.0</item>+ <item>HPND-sell-MIT-disclaimer-xserver</item>+ <item>SPL-1.0</item>+ <item>AFL-3.0</item>+ <item>OLDAP-2.6</item>+ <item>BSD-Advertising-Acknowledgement</item>+ <item>SAX-PD-2.0</item>+ <item>Crossword</item>+ <item>swrule</item>+ <item>LZMA-SDK-9.11-to-9.20</item>+ <item>MIPS</item>+ <item>CNRI-Python</item>+ <item>UCAR</item>+ <item>InnoSetup</item>+ <item>MIT-Wu</item>+ <item>CC-BY-NC-SA-2.0-DE</item>+ <item>HPND-sell-variant-MIT-disclaimer-rev</item>+ <item>CC-BY-NC-SA-3.0</item>+ <item>GL2PS</item>+ <item>Martin-Birgmeier</item>+ <item>xlock</item>+ <item>etalab-2.0</item>+ <item>OLDAP-2.8</item>+ <item>W3C-19980720</item>+ <item>CC-BY-3.0-US</item>+ <item>CPL-1.0</item>+ <item>OFFIS</item>+ <item>CC0-1.0</item>+ <item>CECILL-2.0</item>+ <item>OCCT-PL</item>+ <item>NPL-1.0</item>+ <item>magaz</item>+ <item>Soundex</item>+ <item>SOFA</item>+ <item>Frameworx-1.0</item>+ <item>check-cvs</item>+ <item>OLDAP-2.2.1</item>+ <item>Apache-1.0</item>+ <item>URT-RLE</item>+ <item>mailprio</item>+ <item>OLDAP-2.4</item>+ <item>BSD-Source-beginning-file</item>+ <item>CC-BY-SA-1.0</item>+ <item>CDL-1.0</item>+ <item>OLDAP-1.3</item>+ <item>HPND-Netrek</item>+ <item>Artistic-1.0</item>+ <item>checkmk</item>+ <item>Saxpath</item>+ <item>CMU-Mach-nodoc</item>+ <item>NCGL-UK-2.0</item>+ <item>EUPL-1.1</item>+ <item>CC-BY-ND-2.5</item>+ <item>SunPro</item>+ <item>Elastic-2.0</item>+ <item>ODbL-1.0</item>+ <item>CERN-OHL-1.1</item>+ <item>IEC-Code-Components-EULA</item>+ <item>OGL-UK-2.0</item>+ <item>Caldera-no-preamble</item>+ <item>libutil-David-Nugent</item>+ <item>ThirdEye</item>+ <item>MIT-open-group</item>+ <item>EUPL-1.0</item>+ <item>NICTA-1.0</item>+ <item>CDDL-1.0</item>+ <item>MIT-feh</item>+ <item>CC-BY-3.0-IGO</item>+ <item>OLDAP-2.3</item>+ <item>RPL-1.5</item>+ <item>OPUBL-1.0</item>+ <item>AGPL-1.0-only</item>+ <item>TOSL</item>+ <item>FTL</item>+ <item>WTFPL</item>+ <item>Intel</item>+ <item>Barr</item>+ <item>Zlib</item>+ <item>BSD-Systemics-W3Works</item>+ <item>psfrag</item>+ <item>AAL</item>+ <item>CECILL-B</item>+ <item>NTIA-PD</item>+ <item>CC-BY-NC-1.0</item>+ <item>libpng-1.6.35</item>+ <item>BSD-2-Clause</item>+ <item>NASA-1.3</item>+ <item>Mackerras-3-Clause-acknowledgment</item>+ <item>BSD-4.3RENO</item>+ <item>Pixar</item>+ <item>CC-BY-3.0-NL</item>+ <item>AMD-newlib</item>+ <item>MIT-Click</item>+ <item>AML-glslang</item>+ <item>MIT-advertising</item>+ <item>CC-BY-2.0</item>+ <item>CC-BY-NC-ND-1.0</item>+ <item>OLDAP-2.5</item>+ <item>Zend-2.0</item>+ <item>HPND-Fenneberg-Livingston</item>+ <item>DRL-1.0</item>+ <item>NIST-Software</item>+ <item>CrystalStacker</item>+ <item>BSD-Source-Code</item>+ <item>Spencer-94</item>+ <item>SimPL-2.0</item>+ <item>OSL-1.1</item>+ <item>CDLA-Permissive-1.0</item>+ <item>metamail</item>+ <item>GFDL-1.1-only</item>+ <item>CC-BY-ND-3.0</item>+ <item>CC-BY-3.0-DE</item>+ <item>HPND-export-US</item>+ <item>NBPL-1.0</item>+ <item>GPL-2.0-only</item>+ <item>NAIST-2003</item>+ <item>SSH-OpenSSH</item>+ <item>Nokia</item>+ <item>gtkbook</item>+ <item>Boehm-GC-without-fee</item>+ <item>GPL-3.0-or-later</item>+ <item>CECILL-1.0</item>+ <item>AGPL-3.0-or-later</item>+ <item>Xnet</item>+ <item>NOSL</item>+ <item>ImageMagick</item>+ <item>MITNFA</item>+ <item>APAFML</item>+ <item>Jam</item>+ <item>FBM</item>+ <item>BSD-2-Clause-Darwin</item>+ <item>HTMLTIDY</item>+ <item>W3C</item>+ <item>AFL-1.2</item>+ <item>YPL-1.1</item>+ <item>iMatix</item>+ <item>Caldera</item>+ <item>SCEA</item>+ <item>O-UDA-1.0</item>+ <item>LPPL-1.2</item>+ <item>HPND-export-US-acknowledgement</item>+ <item>GFDL-1.2-or-later</item>+ <item>McPhee-slideshow</item>+ <item>Ruby</item>+ <item>Kastrup</item>+ <item>Adobe-Glyph</item>+ <item>CC-BY-SA-3.0-AT</item>+ <item>DocBook-Stylesheet</item>+ <item>Aladdin</item>+ <item>MIT-testregex</item>+ <item>BSD-3-Clause-Modification</item>+ <item>BSD-3-Clause-No-Military-License</item>+ <item>Adobe-Display-PostScript</item>+ <item>psutils</item>+ <item>LGPL-3.0-or-later</item>+ <item>LZMA-SDK-9.22</item>+ <item>Bahyph</item>+ <item>BSD-Attribution-HPND-disclaimer</item>+ <item>Motosoto</item>+ <item>MIT-Khronos-old</item>+ <item>Ruby-pty</item>+ <item>CC-BY-NC-SA-1.0</item>+ <item>Artistic-dist</item>+ <item>IJG</item>+ <item>Linux-OpenIB</item>+ <item>ulem</item>+ <item>MIT</item>+ <item>GFDL-1.3-no-invariants-only</item>+ <item>Symlinks</item>+ <item>NPL-1.1</item>+ <item>Giftware</item>+ <item>CDLA-Permissive-2.0</item>+ <item>LAL-1.3</item>+ <item>Widget-Workshop</item>+ <item>Latex2e-translated-notice</item>+ <item>Gutmann</item>+ <item>COIL-1.0</item>+ <item>Watcom-1.0</item>+ <item>HPND-Kevlin-Henney</item>+ <item>fwlw</item>+ <item>DL-DE-BY-2.0</item>+ <item>Interbase-1.0</item>+ <item>OGTSL</item>+ <item>BSD-Inferno-Nettverk</item>+ <item>BSD-2-Clause-Views</item>+ <item>ssh-keyscan</item>+ <item>GFDL-1.1-invariants-or-later</item>+ <item>Mackerras-3-Clause</item>+ <item>TPL-1.0</item>+ <item>ErlPL-1.1</item>+ <item>LPPL-1.1</item>+ <item>BSD-2-Clause-first-lines</item>+ <item>OGL-Canada-2.0</item>+ <item>D-FSL-1.0</item>+ <item>SMAIL-GPL</item>+ <item>CC-PDM-1.0</item>+ <item>CDLA-Sharing-1.0</item>+ <item>GD</item>+ <item>GFDL-1.3-invariants-or-later</item>+ <item>Zeeff</item>+ <item>Imlib2</item>+ <item>CC-BY-NC-2.0</item>+ <item>Adobe-Utopia</item>+ <item>ZPL-2.0</item>+ <item>Beerware</item>+ <item>SUL-1.0</item>+ <item>EPL-1.0</item>+ <item>CC-BY-1.0</item>+ <item>CC-BY-NC-4.0</item>+ <item>FSFAP</item>+ <item>VSL-1.0</item>+ <item>lsof</item>+ <item>Wsuipa</item>+ <item>Unlicense-libwhirlpool</item>+ <item>NTP-0</item>+ <item>BSD-3-Clause</item>+ <item>APSL-2.0</item>+ <item>CAL-1.0-Combined-Work-Exception</item>+ <item>OGL-UK-3.0</item>+ <item>CC-BY-SA-3.0-IGO</item>+ <item>SGP4</item>+ <item>SSH-short</item>+ <item>OLDAP-2.7</item>+ <item>VOSTROM</item>+ <item>CC-BY-3.0</item>+ <item>CC-BY-NC-ND-3.0-IGO</item>+ <item>dtoa</item>+ <item>SMPPL</item>+ <item>MIT-enna</item>+ <item>Catharon</item>+ <item>SHL-0.51</item>+ <item>copyleft-next-0.3.1</item>+ <item>BSD-2-Clause-Patent</item>+ <item>FSL-1.1-ALv2</item>+ <item>Python-2.0.1</item>+ <item>CC-BY-ND-2.0</item>+ <item>MTLL</item>+ <item>OFL-1.0</item>+ <item>Qhull</item>+ <item>IPL-1.0</item>+ <item>Linux-man-pages-copyleft-2-para</item>+ <item>softSurfer</item>+ <item>snprintf</item>+ <item>GFDL-1.2-only</item>+ <item>EUPL-1.2</item>+ <item>ZPL-1.1</item>+ <item>TTWL</item>+ <item>MPL-2.0</item>+ <item>HPND-doc</item>+ <item>BSD-Systemics</item>+ <item>DocBook-DTD</item>+ <item>EFL-2.0</item>+ <item>HaskellReport</item>+ <item>BSD-3-Clause-No-Nuclear-Warranty</item>+ <item>Newsletr</item>+ <item>OFL-1.1</item>+ <item>GFDL-1.1-no-invariants-only</item>+ <item>CC-BY-ND-3.0-DE</item>+ <item>UCL-1.0</item>+ <item>OGC-1.0</item>+ <item>eGenix</item>+ <item>OPL-1.0</item>+ <item>Xerox</item>+ <item>NIST-PD-fallback</item>+ <item>SGI-B-2.0</item>+ <item>TermReadKey</item>+ <item>Sendmail-Open-Source-1.1</item>+ <item>NTP</item>+ <item>HPND-Markus-Kuhn</item>+ <item>BSD-2-Clause-pkgconf-disclaimer</item>+ <item>TCL</item>+ <item>NetCDF</item>+ <item>wwl</item>+ <item>Python-2.0</item>+ <item>FSFAP-no-warranty-disclaimer</item>+ <item>python-ldap</item>+ <item>CC-BY-SA-2.5</item>+ <item>GPL-3.0-only</item>+ <item>GFDL-1.3-or-later</item>+ <item>LGPL-3.0-only</item>+ <item>Glulxe</item>+ <item>CC-BY-NC-SA-3.0-IGO</item>+ <item>BSD-3-Clause-Open-MPI</item>+ <item>FSL-1.1-MIT</item>+ <item>Linux-man-pages-copyleft</item>+ <item>ECL-1.0</item>+ <item>jove</item>+ <item>BSD-3-Clause-HP</item>+ <item>AML</item>+ <item>FreeBSD-DOC</item>+ <item>XFree86-1.1</item>+ <item>CC-BY-3.0-AU</item>+ <item>Arphic-1999</item>+ <item>OSL-1.0</item>+ <item>OFL-1.0-no-RFN</item>+ <item>OLDAP-2.0.1</item>+ <item>JPNIC</item>+ <item>LPL-1.02</item>+ <item>OLDAP-2.0</item>+ <item>Adobe-2006</item>+ <item>CC-BY-NC-SA-2.5</item>+ <item>C-UDA-1.0</item>+ <item>Lucida-Bitmap-Fonts</item>+ <item>Ferguson-Twofish</item>+ <item>MMIXware</item>+ <item>SSPL-1.0</item>+ <item>MPL-1.0</item>+ <item>TPDL</item>+ <item>OLDAP-2.2</item>+ <item>gSOAP-1.3b</item>+ <item>TU-Berlin-2.0</item>+ <item>pkgconf</item>+ <item>CC-BY-NC-SA-2.0-UK</item>+ <item>DocBook-XML</item>+ <item>CNRI-Python-GPL-Compatible</item>+ <item>MS-LPL</item>+ <item>Brian-Gladman-3-Clause</item>+ <item>radvd</item>+ <item>MPL-1.1</item>+ <item>blessing</item>+ <item>HPND-sell-regexpr</item>+ <item>AFL-2.1</item>+ <item>CC-BY-SA-3.0-DE</item>+ <item>PDDL-1.0</item>+ <item>BSD-4.3TAHOE</item>+ <item>CC-BY-NC-3.0</item>+ <item>NLOD-2.0</item>+ <item>GFDL-1.1-no-invariants-or-later</item>+ <item>ClArtistic</item>+ <item>pnmstitch</item>+ <item>MirOS</item>+ <item>QPL-1.0</item>+ <item>IJG-short</item>+ <item>Community-Spec-1.0</item>+ <item>NCBI-PD</item>+ <item>PostgreSQL</item>+ <item>MS-PL</item>+ </list>++ <list name="deprecated-licenses">+ <item>LGPL-3.0</item>+ <item>GPL-1.0</item>+ <item>AGPL-1.0</item>+ <item>GPL-2.0-with-font-exception</item>+ <item>GPL-2.0-with-classpath-exception</item>+ <item>Nunit</item>+ <item>GFDL-1.2</item>+ <item>GPL-2.0-with-bison-exception</item>+ <item>bzip2-1.0.5</item>+ <item>AGPL-3.0</item>+ <item>wxWindows</item>+ <item>StandardML-NJ</item>+ <item>GPL-3.0</item>+ <item>GPL-2.0-with-GCC-exception</item>+ <item>BSD-2-Clause-NetBSD</item>+ <item>GFDL-1.1</item>+ <item>GPL-3.0-with-GCC-exception</item>+ <item>GPL-2.0-with-autoconf-exception</item>+ <item>BSD-2-Clause-FreeBSD</item>+ <item>Net-SNMP</item>+ <item>eCos-2.0</item>+ <item>GPL-3.0-with-autoconf-exception</item>+ <item>GFDL-1.3</item>+ <item>LGPL-2.0</item>+ <item>LGPL-2.1</item>+ <item>GPL-2.0</item>+ </list>++ <list name="exceptions">+ <item>SHL-2.1</item>+ <item>Autoconf-exception-2.0</item>+ <item>openvpn-openssl-exception</item>+ <item>GStreamer-exception-2005</item>+ <item>SHL-2.0</item>+ <item>romic-exception</item>+ <item>RRDtool-FLOSS-exception-2.0</item>+ <item>u-boot-exception-2.0</item>+ <item>i2p-gpl-java-exception</item>+ <item>CLISP-exception-2.0</item>+ <item>OpenJDK-assembly-exception-1.0</item>+ <item>PCRE2-exception</item>+ <item>erlang-otp-linking-exception</item>+ <item>GCC-exception-2.0</item>+ <item>SWI-exception</item>+ <item>Asterisk-exception</item>+ <item>OCCT-exception-1.0</item>+ <item>GPL-3.0-389-ds-base-exception</item>+ <item>libpri-OpenH323-exception</item>+ <item>GCC-exception-2.0-note</item>+ <item>Fawkes-Runtime-exception</item>+ <item>Asterisk-linking-protocols-exception</item>+ <item>freertos-exception-2.0</item>+ <item>LLGPL</item>+ <item>GCC-exception-3.1</item>+ <item>Gmsh-exception</item>+ <item>SANE-exception</item>+ <item>Bison-exception-2.2</item>+ <item>mif-exception</item>+ <item>LZMA-exception</item>+ <item>WxWindows-exception-3.1</item>+ <item>LGPL-3.0-linking-exception</item>+ <item>GPL-CC-1.0</item>+ <item>Qt-GPL-exception-1.0</item>+ <item>Font-exception-2.0</item>+ <item>389-exception</item>+ <item>Linux-syscall-note</item>+ <item>mxml-exception</item>+ <item>Qt-LGPL-exception-1.1</item>+ <item>Autoconf-exception-generic-3.0</item>+ <item>GStreamer-exception-2008</item>+ <item>OCaml-LGPL-linking-exception</item>+ <item>PS-or-PDF-font-exception-20170817</item>+ <item>KiCad-libraries-exception</item>+ <item>Independent-modules-exception</item>+ <item>cryptsetup-OpenSSL-exception</item>+ <item>Digia-Qt-LGPL-exception-1.1</item>+ <item>stunnel-exception</item>+ <item>QPL-1.0-INRIA-2004-exception</item>+ <item>Autoconf-exception-3.0</item>+ <item>Swift-exception</item>+ <item>DigiRule-FOSS-exception</item>+ <item>polyparse-exception</item>+ <item>vsftpd-openssl-exception</item>+ <item>Bison-exception-1.24</item>+ <item>x11vnc-openssl-exception</item>+ <item>GNU-compiler-exception</item>+ <item>harbour-exception</item>+ <item>Texinfo-exception</item>+ <item>eCos-exception-2.0</item>+ <item>GPL-3.0-linking-source-exception</item>+ <item>Autoconf-exception-macro</item>+ <item>gnu-javamail-exception</item>+ <item>Bootloader-exception</item>+ <item>FLTK-exception</item>+ <item>Classpath-exception-2.0</item>+ <item>GPL-3.0-linking-exception</item>+ <item>GNAT-exception</item>+ <item>Universal-FOSS-exception-1.0</item>+ <item>Libtool-exception</item>+ <item>LLVM-exception</item>+ <item>Autoconf-exception-generic</item>+ <item>CGAL-linking-exception</item>+ <item>UBDL-exception</item>+ <item>GNOME-examples-exception</item>+ <item>fmt-exception</item>+ <item>GPL-3.0-interface-exception</item>+ <item>Qwt-exception-1.0</item> </list> <list name="deprecated-exceptions">
xml/tcsh.xml view
@@ -9,7 +9,7 @@ <!ENTITY pathpart "([\w_@.%*?+-]|\\ )"> <!-- valid character in a file name --> <!ENTITY tab "	"> ]>-<language name="Tcsh" version="10" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">+<language name="Tcsh" version="12" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh;text/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL"> <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net) Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)@@ -465,7 +465,7 @@ </highlighting> <general> <comments>- <comment name="singleLine" start="#"/>+ <comment name="singleLine" start="#" position="afterwhitespace"/> </comments> <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`"/> </general>
+ xml/textile.xml view
@@ -0,0 +1,102 @@+<?xml version="1.0" encoding="UTF-8"?>+<!--+ Kate syntax highlight filter for Textile formatted documents++ Copyright 2012 alexander Kabakov. http://kabakov.wordpress.com/+ Licensed under GPL license.+-->++<!DOCTYPE language+ [ + <!ENTITY strongregex "(\s|^)\*[^*]\w.*\w[^*]\*(\s|\.|,|;|:|\-|\?|$)">+ <!ENTITY strikeoutregex "(\s|^)-[^-]\w.*\w[^-]-(\s|\.|,|;|:|\-|\?|$)">+ <!ENTITY blockattrsregex "(\(\w+(#\w+)?\))?">+ <!ENTITY formatregex "(>|<|=|<>)?">+ <!ENTITY name "(?![0-9])[\w_:][\w.:_-]*">+]>+ +<language section="Markup" name="Textile" + version="6" kateversion="5.0"+ extensions="*.textile" priority="15"+ author="Alexander Kabakov (kabakov.as@gmail.com)"+ license="LGPL" >+ <highlighting>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >+ <StringDetect attribute="comment" context="comment" String="<!--" beginRegion="comment" />+ <RegExpr attribute="macro" String="\{\{&name;\}\}" />+ + <Detect2Chars context="sectiontitle_block" char="h" char1="1" column="0" />+ <Detect2Chars context="sectionheader_block" char="h" char1="2" column="0" /> + <Detect2Chars context="sectionheader_block" char="h" char1="3" column="0" />+ <Detect2Chars context="sectionheader_block" char="h" char1="4" column="0" />+ <Detect2Chars context="sectionheader_block" char="h" char1="5" column="0" />+ + <RegExpr attribute="textblock" String="^(p|pre|bq|bc)&blockattrsregex;&formatregex;\." column="0" />+ <DetectChar context="image" char="!"/>+ + <IncludeRules context="inc" />++ <RegExpr attribute="itemlist" String="^[\*\#]+\s" column="0" />+ <RegExpr attribute="htmllink" String='".*":http(s)?:[\w_/\\\d\.%\?&=-]*' />+ </context>+ + <context name="image" lineEndContext="#pop" attribute="image">+ <RegExpr String="&blockattrsregex;" attribute="blockattrs" />+ <RegExpr String="\w+\.(png|jpg|jpeg|gif|bmp)" attribute="imagefilename" />+ <DetectChar char="!" context="#pop" attribute="image"/>+ </context>+ + <context name="sectiontitle_block" lineEndContext="#pop" attribute="sectiontitle">+ <RegExpr String="&blockattrsregex;" attribute="sectionblockattrs" />+ </context>+ + <context name="sectionheader_block" lineEndContext="#pop" attribute="sectionheader">+ <RegExpr String="&blockattrsregex;" attribute="sectionblockattrs" />+ </context>+ + <context name="comment" attribute="comment" lineEndContext="#stay">+ <DetectSpaces/>+ <StringDetect attribute="comment" context="#pop" String="-->" endRegion="comment" />+ <IncludeRules context="##Comments" />+ <DetectIdentifier/>+ </context>+ + <context attribute="Normal Text" name="inc" lineEndContext="#stay" >+ <RegExpr attribute="strong" String="&strongregex;" />+ <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal" />+ + <itemData name="sectiontitle" defStyleNum="dsKeyword" bold="true" />+ <itemData name="sectionheader" defStyleNum="dsFunction" bold="true" />+ <itemData name="sectionblockattrs" defStyleNum="dsComment" bold="true"/>+ <itemData name="blockattrs" defStyleNum="dsComment" />+ <itemData name="textblock" defStyleNum="dsComment" />+ + <itemData name="strong" defStyleNum="dsNormal" bold="true" />+ <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true" />+ + <itemData name="itemlist" defStyleNum="dsDataType" />+ + <itemData name="macro" defStyleNum="dsComment" bold="true"/>+ <itemData name="comment" defStyleNum="dsComment" />+ + <itemData name="image" defStyleNum="dsFloat" />+ <itemData name="imagefilename" defStyleNum="dsKeyword" />+ <itemData name="htmllink" defStyleNum="dsDataType" />+ </itemDatas>++ </highlighting>++ <general>+ <comments>+ <comment name="multiLine" start="<!--" end="-->" region="comment" />+ </comments>+ </general>++</language>+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
+ xml/todo.xml view
@@ -0,0 +1,468 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+ <!ENTITY date "\d{4}-\d{2}-\d{2}(?=\s|$)">+ <!ENTITY tab "	">+]>+<!-- http://todotxt.org/ -->+<language+ name="Todo.txt" section="Other"+ version="2" kateversion="5.62"+ extensions="todo.txt"+ author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"+>+<highlighting>+ <contexts>+ <context name="Normal" attribute="Normal" lineEndContext="#stay" fallthroughContext="CompletionDate">+ <Detect2Chars attribute="Done" context="Done" char="x" char1=" "/>+ <Detect2Chars attribute="Done" context="Done" char="x" char1="&tab;"/>+ <DetectChar attribute="Normal" context="Priority" char="(" lookAhead="1"/>+ </context>++ <context name="Priority" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!CompletionDate">+ <StringDetect attribute="Priority A" context="#pop!(A)CompletionDate" String="(A)"/>+ <StringDetect attribute="Priority B" context="#pop!(B)CompletionDate" String="(B)"/>+ <StringDetect attribute="Priority C" context="#pop!(C)CompletionDate" String="(C)"/>+ <StringDetect attribute="Priority D" context="#pop!(D)CompletionDate" String="(D)"/>+ <StringDetect attribute="Priority E" context="#pop!(E)CompletionDate" String="(E)"/>+ <StringDetect attribute="Priority F" context="#pop!(F)CompletionDate" String="(F)"/>+ <StringDetect attribute="Priority G" context="#pop!(G)CompletionDate" String="(G)"/>+ <StringDetect attribute="Priority H" context="#pop!(H)CompletionDate" String="(H)"/>+ <StringDetect attribute="Priority I" context="#pop!(I)CompletionDate" String="(I)"/>+ <StringDetect attribute="Priority J" context="#pop!(J)CompletionDate" String="(J)"/>+ <StringDetect attribute="Priority K" context="#pop!(K)CompletionDate" String="(K)"/>+ <StringDetect attribute="Priority L" context="#pop!(L)CompletionDate" String="(L)"/>+ <StringDetect attribute="Priority M" context="#pop!(M)CompletionDate" String="(M)"/>+ <StringDetect attribute="Priority N" context="#pop!(N)CompletionDate" String="(N)"/>+ <StringDetect attribute="Priority O" context="#pop!(O)CompletionDate" String="(O)"/>+ <StringDetect attribute="Priority P" context="#pop!(P)CompletionDate" String="(P)"/>+ <StringDetect attribute="Priority Q" context="#pop!(Q)CompletionDate" String="(Q)"/>+ <StringDetect attribute="Priority R" context="#pop!(R)CompletionDate" String="(R)"/>+ <StringDetect attribute="Priority S" context="#pop!(S)CompletionDate" String="(S)"/>+ <StringDetect attribute="Priority T" context="#pop!(T)CompletionDate" String="(T)"/>+ <StringDetect attribute="Priority U" context="#pop!(U)CompletionDate" String="(U)"/>+ <StringDetect attribute="Priority V" context="#pop!(V)CompletionDate" String="(V)"/>+ <StringDetect attribute="Priority W" context="#pop!(W)CompletionDate" String="(W)"/>+ <StringDetect attribute="Priority X" context="#pop!(X)CompletionDate" String="(X)"/>+ <StringDetect attribute="Priority Y" context="#pop!(Y)CompletionDate" String="(Y)"/>+ <StringDetect attribute="Priority Z" context="#pop!(Z)CompletionDate" String="(Z)"/>+ </context>++ <context name="Done" attribute="Done" lineEndContext="#pop">+ </context>++ <context name="CompletionDate" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!Description">+ <DetectSpaces attribute="Normal" context="#pop!Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>++ <context name="CreationDate" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop">+ <RegExpr attribute="Creation Date" context="#pop" String="\G\s+&date;"/>+ </context>++ <context name="Description" attribute="Normal" lineEndContext="#pop">+ <DetectSpaces attribute="Normal"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Normal"/>+ </context>++ <context name="_Tag" attribute="Normal" lineEndContext="#pop">+ <DetectChar attribute="Project Tag" context="ProjectTag" char="+" lookAhead="1"/>+ <DetectChar attribute="Context Tag" context="ContextTag" char="@" lookAhead="1"/>+ <RegExpr attribute="Metadata Key" context="MetadataValue" String="(?<=\s)[^\s:]++:(?=[^\s:]++(?!:))"/>+ </context>++ <context name="ProjectTag" attribute="Project Tag" lineEndContext="#pop#pop" fallthroughContext="#pop">+ <RegExpr attribute="Project Tag" context="#pop" String="(?<=\s)\+[^\s]+"/>+ <DetectChar context="#pop" char="+"/>+ </context>++ <context name="ContextTag" attribute="Context Tag" lineEndContext="#pop#pop" fallthroughContext="#pop">+ <RegExpr attribute="Context Tag" context="#pop" String="(?<=\s)@[^\s]+"/>+ <DetectChar context="#pop" char="@"/>+ </context>++ <context name="MetadataValue" attribute="Metadata Value" lineEndContext="#pop#pop">+ <RegExpr attribute="Metadata Value" context="#pop" String="\G[^\s:]+"/>+ </context>++ <context name="_CompletionDate" attribute="Completion Date" lineEndContext="#pop">+ <RegExpr attribute="Completion Date" context="CreationDate" String="\G&date;"/>+ </context>++ <context name="(A)CompletionDate" attribute="Priority A" lineEndContext="#pop" fallthroughContext="#pop!(A)Description">+ <DetectSpaces attribute="Priority A" context="#pop!(A)CompletionDate2"/>+ </context>+ <context name="(A)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(A)Description">+ <DetectSpaces attribute="Priority A" context="#pop!(A)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(A)Description" attribute="Priority A" lineEndContext="#pop">+ <DetectSpaces attribute="Priority A"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority A"/>+ </context>++ <context name="(B)CompletionDate" attribute="Priority B" lineEndContext="#pop" fallthroughContext="#pop!(B)Description">+ <DetectSpaces attribute="Priority B" context="#pop!(B)CompletionDate2"/>+ </context>+ <context name="(B)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(B)Description">+ <DetectSpaces attribute="Priority B" context="#pop!(B)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(B)Description" attribute="Priority B" lineEndContext="#pop">+ <DetectSpaces attribute="Priority B"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority B"/>+ </context>++ <context name="(C)CompletionDate" attribute="Priority C" lineEndContext="#pop" fallthroughContext="#pop!(C)Description">+ <DetectSpaces attribute="Priority C" context="#pop!(C)CompletionDate2"/>+ </context>+ <context name="(C)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(C)Description">+ <DetectSpaces attribute="Priority C" context="#pop!(C)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(C)Description" attribute="Priority C" lineEndContext="#pop">+ <DetectSpaces attribute="Priority C"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority C"/>+ </context>++ <context name="(D)CompletionDate" attribute="Priority D" lineEndContext="#pop" fallthroughContext="#pop!(D)Description">+ <DetectSpaces attribute="Priority D" context="#pop!(D)CompletionDate2"/>+ </context>+ <context name="(D)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(D)Description">+ <DetectSpaces attribute="Priority D" context="#pop!(D)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(D)Description" attribute="Priority D" lineEndContext="#pop">+ <DetectSpaces attribute="Priority D"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority D"/>+ </context>++ <context name="(E)CompletionDate" attribute="Priority E" lineEndContext="#pop" fallthroughContext="#pop!(E)Description">+ <DetectSpaces attribute="Priority E" context="#pop!(E)CompletionDate2"/>+ </context>+ <context name="(E)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(E)Description">+ <DetectSpaces attribute="Priority E" context="#pop!(E)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(E)Description" attribute="Priority E" lineEndContext="#pop">+ <DetectSpaces attribute="Priority E"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority E"/>+ </context>++ <context name="(F)CompletionDate" attribute="Priority F" lineEndContext="#pop" fallthroughContext="#pop!(F)Description">+ <DetectSpaces attribute="Priority F" context="#pop!(F)CompletionDate2"/>+ </context>+ <context name="(F)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(F)Description">+ <DetectSpaces attribute="Priority F" context="#pop!(F)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(F)Description" attribute="Priority F" lineEndContext="#pop">+ <DetectSpaces attribute="Priority F"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority F"/>+ </context>++ <context name="(G)CompletionDate" attribute="Priority G" lineEndContext="#pop" fallthroughContext="#pop!(G)Description">+ <DetectSpaces attribute="Priority G" context="#pop!(G)CompletionDate2"/>+ </context>+ <context name="(G)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(G)Description">+ <DetectSpaces attribute="Priority G" context="#pop!(G)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(G)Description" attribute="Priority G" lineEndContext="#pop">+ <DetectSpaces attribute="Priority G"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority G"/>+ </context>++ <context name="(H)CompletionDate" attribute="Priority H" lineEndContext="#pop" fallthroughContext="#pop!(H)Description">+ <DetectSpaces attribute="Priority H" context="#pop!(H)CompletionDate2"/>+ </context>+ <context name="(H)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(H)Description">+ <DetectSpaces attribute="Priority H" context="#pop!(H)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(H)Description" attribute="Priority H" lineEndContext="#pop">+ <DetectSpaces attribute="Priority H"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority H"/>+ </context>++ <context name="(I)CompletionDate" attribute="Priority I" lineEndContext="#pop" fallthroughContext="#pop!(I)Description">+ <DetectSpaces attribute="Priority I" context="#pop!(I)CompletionDate2"/>+ </context>+ <context name="(I)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(I)Description">+ <DetectSpaces attribute="Priority I" context="#pop!(I)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(I)Description" attribute="Priority I" lineEndContext="#pop">+ <DetectSpaces attribute="Priority I"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority I"/>+ </context>++ <context name="(J)CompletionDate" attribute="Priority J" lineEndContext="#pop" fallthroughContext="#pop!(J)Description">+ <DetectSpaces attribute="Priority J" context="#pop!(J)CompletionDate2"/>+ </context>+ <context name="(J)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(J)Description">+ <DetectSpaces attribute="Priority J" context="#pop!(J)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(J)Description" attribute="Priority J" lineEndContext="#pop">+ <DetectSpaces attribute="Priority J"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority J"/>+ </context>++ <context name="(K)CompletionDate" attribute="Priority K" lineEndContext="#pop" fallthroughContext="#pop!(K)Description">+ <DetectSpaces attribute="Priority K" context="#pop!(K)CompletionDate2"/>+ </context>+ <context name="(K)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(K)Description">+ <DetectSpaces attribute="Priority K" context="#pop!(K)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(K)Description" attribute="Priority K" lineEndContext="#pop">+ <DetectSpaces attribute="Priority K"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority K"/>+ </context>++ <context name="(L)CompletionDate" attribute="Priority L" lineEndContext="#pop" fallthroughContext="#pop!(L)Description">+ <DetectSpaces attribute="Priority L" context="#pop!(L)CompletionDate2"/>+ </context>+ <context name="(L)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(L)Description">+ <DetectSpaces attribute="Priority L" context="#pop!(L)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(L)Description" attribute="Priority L" lineEndContext="#pop">+ <DetectSpaces attribute="Priority L"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority L"/>+ </context>++ <context name="(M)CompletionDate" attribute="Priority M" lineEndContext="#pop" fallthroughContext="#pop!(M)Description">+ <DetectSpaces attribute="Priority M" context="#pop!(M)CompletionDate2"/>+ </context>+ <context name="(M)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(M)Description">+ <DetectSpaces attribute="Priority M" context="#pop!(M)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(M)Description" attribute="Priority M" lineEndContext="#pop">+ <DetectSpaces attribute="Priority M"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority M"/>+ </context>++ <context name="(N)CompletionDate" attribute="Priority N" lineEndContext="#pop" fallthroughContext="#pop!(N)Description">+ <DetectSpaces attribute="Priority N" context="#pop!(N)CompletionDate2"/>+ </context>+ <context name="(N)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(N)Description">+ <DetectSpaces attribute="Priority N" context="#pop!(N)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(N)Description" attribute="Priority N" lineEndContext="#pop">+ <DetectSpaces attribute="Priority N"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority N"/>+ </context>++ <context name="(O)CompletionDate" attribute="Priority O" lineEndContext="#pop" fallthroughContext="#pop!(O)Description">+ <DetectSpaces attribute="Priority O" context="#pop!(O)CompletionDate2"/>+ </context>+ <context name="(O)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(O)Description">+ <DetectSpaces attribute="Priority O" context="#pop!(O)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(O)Description" attribute="Priority O" lineEndContext="#pop">+ <DetectSpaces attribute="Priority O"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority O"/>+ </context>++ <context name="(P)CompletionDate" attribute="Priority P" lineEndContext="#pop" fallthroughContext="#pop!(P)Description">+ <DetectSpaces attribute="Priority P" context="#pop!(P)CompletionDate2"/>+ </context>+ <context name="(P)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(P)Description">+ <DetectSpaces attribute="Priority P" context="#pop!(P)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(P)Description" attribute="Priority P" lineEndContext="#pop">+ <DetectSpaces attribute="Priority P"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority P"/>+ </context>++ <context name="(Q)CompletionDate" attribute="Priority Q" lineEndContext="#pop" fallthroughContext="#pop!(Q)Description">+ <DetectSpaces attribute="Priority Q" context="#pop!(Q)CompletionDate2"/>+ </context>+ <context name="(Q)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Q)Description">+ <DetectSpaces attribute="Priority Q" context="#pop!(Q)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(Q)Description" attribute="Priority Q" lineEndContext="#pop">+ <DetectSpaces attribute="Priority Q"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority Q"/>+ </context>++ <context name="(R)CompletionDate" attribute="Priority R" lineEndContext="#pop" fallthroughContext="#pop!(R)Description">+ <DetectSpaces attribute="Priority R" context="#pop!(R)CompletionDate2"/>+ </context>+ <context name="(R)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(R)Description">+ <DetectSpaces attribute="Priority R" context="#pop!(R)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(R)Description" attribute="Priority R" lineEndContext="#pop">+ <DetectSpaces attribute="Priority R"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority R"/>+ </context>++ <context name="(S)CompletionDate" attribute="Priority S" lineEndContext="#pop" fallthroughContext="#pop!(S)Description">+ <DetectSpaces attribute="Priority S" context="#pop!(S)CompletionDate2"/>+ </context>+ <context name="(S)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(S)Description">+ <DetectSpaces attribute="Priority S" context="#pop!(S)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(S)Description" attribute="Priority S" lineEndContext="#pop">+ <DetectSpaces attribute="Priority S"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority S"/>+ </context>++ <context name="(T)CompletionDate" attribute="Priority T" lineEndContext="#pop" fallthroughContext="#pop!(T)Description">+ <DetectSpaces attribute="Priority T" context="#pop!(T)CompletionDate2"/>+ </context>+ <context name="(T)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(T)Description">+ <DetectSpaces attribute="Priority T" context="#pop!(T)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(T)Description" attribute="Priority T" lineEndContext="#pop">+ <DetectSpaces attribute="Priority T"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority T"/>+ </context>++ <context name="(U)CompletionDate" attribute="Priority U" lineEndContext="#pop" fallthroughContext="#pop!(U)Description">+ <DetectSpaces attribute="Priority U" context="#pop!(U)CompletionDate2"/>+ </context>+ <context name="(U)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(U)Description">+ <DetectSpaces attribute="Priority U" context="#pop!(U)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(U)Description" attribute="Priority U" lineEndContext="#pop">+ <DetectSpaces attribute="Priority U"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority U"/>+ </context>++ <context name="(V)CompletionDate" attribute="Priority V" lineEndContext="#pop" fallthroughContext="#pop!(V)Description">+ <DetectSpaces attribute="Priority V" context="#pop!(V)CompletionDate2"/>+ </context>+ <context name="(V)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(V)Description">+ <DetectSpaces attribute="Priority V" context="#pop!(V)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(V)Description" attribute="Priority V" lineEndContext="#pop">+ <DetectSpaces attribute="Priority V"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority V"/>+ </context>++ <context name="(W)CompletionDate" attribute="Priority W" lineEndContext="#pop" fallthroughContext="#pop!(W)Description">+ <DetectSpaces attribute="Priority W" context="#pop!(W)CompletionDate2"/>+ </context>+ <context name="(W)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(W)Description">+ <DetectSpaces attribute="Priority W" context="#pop!(W)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(W)Description" attribute="Priority W" lineEndContext="#pop">+ <DetectSpaces attribute="Priority W"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority W"/>+ </context>++ <context name="(X)CompletionDate" attribute="Priority X" lineEndContext="#pop" fallthroughContext="#pop!(X)Description">+ <DetectSpaces attribute="Priority X" context="#pop!(X)CompletionDate2"/>+ </context>+ <context name="(X)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(X)Description">+ <DetectSpaces attribute="Priority X" context="#pop!(X)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(X)Description" attribute="Priority X" lineEndContext="#pop">+ <DetectSpaces attribute="Priority X"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority X"/>+ </context>++ <context name="(Y)CompletionDate" attribute="Priority Y" lineEndContext="#pop" fallthroughContext="#pop!(Y)Description">+ <DetectSpaces attribute="Priority Y" context="#pop!(Y)CompletionDate2"/>+ </context>+ <context name="(Y)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Y)Description">+ <DetectSpaces attribute="Priority Y" context="#pop!(Y)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(Y)Description" attribute="Priority Y" lineEndContext="#pop">+ <DetectSpaces attribute="Priority Y"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority Y"/>+ </context>++ <context name="(Z)CompletionDate" attribute="Priority Z" lineEndContext="#pop" fallthroughContext="#pop!(Z)Description">+ <DetectSpaces attribute="Priority Z" context="#pop!(Z)CompletionDate2"/>+ </context>+ <context name="(Z)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Z)Description">+ <DetectSpaces attribute="Priority Z" context="#pop!(Z)Description"/>+ <IncludeRules context="_CompletionDate"/>+ </context>+ <context name="(Z)Description" attribute="Priority Z" lineEndContext="#pop">+ <DetectSpaces attribute="Priority Z"/>+ <IncludeRules context="_Tag"/>+ <DetectIdentifier attribute="Priority Z"/>+ </context>+ </contexts>++ <itemDatas>+ <itemData name="Normal" defStyleNum="dsNormal"/>+ <itemData name="Done" defStyleNum="dsAnnotation" spellChecking="0"/>+ <itemData name="Completion Date" defStyleNum="dsBuiltIn" spellChecking="0"/>+ <itemData name="Creation Date" defStyleNum="dsPreprocessor" spellChecking="0"/>+ <itemData name="Project Tag" defStyleNum="dsAttribute" spellChecking="0"/>+ <itemData name="Context Tag" defStyleNum="dsExtension" spellChecking="0"/>+ <itemData name="Metadata Key" defStyleNum="dsVariable" spellChecking="0"/>+ <itemData name="Metadata Value" defStyleNum="dsString" spellChecking="0"/>+ <itemData name="Priority A" defStyleNum="dsAlert"/>+ <itemData name="Priority B" defStyleNum="dsWarning"/>+ <itemData name="Priority C" defStyleNum="dsInformation"/>+ <itemData name="Priority D" defStyleNum="dsOthers"/>+ <itemData name="Priority E" defStyleNum="dsOthers"/>+ <itemData name="Priority F" defStyleNum="dsOthers"/>+ <itemData name="Priority G" defStyleNum="dsOthers"/>+ <itemData name="Priority H" defStyleNum="dsOthers"/>+ <itemData name="Priority I" defStyleNum="dsOthers"/>+ <itemData name="Priority J" defStyleNum="dsOthers"/>+ <itemData name="Priority K" defStyleNum="dsOthers"/>+ <itemData name="Priority L" defStyleNum="dsOthers"/>+ <itemData name="Priority M" defStyleNum="dsOthers"/>+ <itemData name="Priority N" defStyleNum="dsOthers"/>+ <itemData name="Priority O" defStyleNum="dsOthers"/>+ <itemData name="Priority P" defStyleNum="dsOthers"/>+ <itemData name="Priority Q" defStyleNum="dsOthers"/>+ <itemData name="Priority R" defStyleNum="dsOthers"/>+ <itemData name="Priority S" defStyleNum="dsOthers"/>+ <itemData name="Priority T" defStyleNum="dsOthers"/>+ <itemData name="Priority U" defStyleNum="dsOthers"/>+ <itemData name="Priority V" defStyleNum="dsOthers"/>+ <itemData name="Priority W" defStyleNum="dsOthers"/>+ <itemData name="Priority X" defStyleNum="dsOthers"/>+ <itemData name="Priority Y" defStyleNum="dsOthers"/>+ <itemData name="Priority Z" defStyleNum="dsOthers"/>+ </itemDatas>+</highlighting>+</language>
xml/typst.xml view
@@ -12,7 +12,7 @@ ]> <!--- SPDX-FileCopyrightText: 2024 Marco Rebhan <me@dblsaiko.net>+ SPDX-FileCopyrightText: 2024 Katalin Rebhan <me@dblsaiko.net> SPDX-License-Identifier: MIT -->@@ -24,7 +24,7 @@ section="Markup" extensions="*.typ" casesensitive="1"- author="Marco Rebhan <me@dblsaiko.net>"+ author="Katalin Rebhan <me@dblsaiko.net>" license="MIT" priority="1" >
+ xml/vue.xml view
@@ -0,0 +1,251 @@+<?xml version="1.0" encoding="UTF-8"?>+<!DOCTYPE language [+<!ENTITY name "[A-Za-z_:][\w.:_-]*">+<!ENTITY attributeName "[\@A-Za-z_:*#\(\[][\)\]\w.:_-]*">+<!ENTITY entref "&(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">+]>+<language name="Vue" version="19" kateversion="5.79" section="Markup" extensions="*.vue" mimetype="text/html" author="James Zuccon" license="LGPL" priority="10">+ <!--+ This is a modified version of the HTML Syntax Highlighter to accommodate Vue JS template files (with some non-relevant parts removed).+ While we could take the approach of just including rules from the HTML files, this introduces some problems:+ 1. Vue supports the <template> tag recursively - to support this, we would need to duplicate much of the HTML syntax file anyway.+ 2. Vue has some additional attributeName patterns that are not supported by HTML (e.g. '@' prefix as shorthand for events).+ 3. If we wanted to support Vue Attribute Bindings in future (e.g. :some-binded-param), we would have to duplicate much of the HTML syntax file again.+ 4. If we wanted to support Vue JS Brackets in future (e.g. {{ echoSomeContent }}, we would also have to duplicate much of the HTML syntax file again.+ If Syntax Highlighting supports over-riding third-party contexts at some point in future, it might be worth re-thinking how this file is constructed.+ But, for now, it's probably saner to use HTML as the base template.+ NOTE: We do not necessarily want to just integrate support for these features directly into the HTML syntax highlighter, as we want Vue to have its own mimetype.+ One of the major reasons for this is so that we can identify Vue files for use with an LSP (e.g. Volar) in Kate.+ -->+ <highlighting>+ <contexts>+ <context name="Start" attribute="Normal Text" lineEndContext="#stay">+ <IncludeRules context="FindHTML"/>+ </context>+ <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">+ <DetectSpaces/>+ <DetectIdentifier/>+ <StringDetect attribute="Comment" context="Comment" String="<!--" beginRegion="comment"/>+ <IncludeRules context="FindElements"/>+ <IncludeRules context="FindEntityRefs"/>+ </context>+ <context name="FindElements" attribute="Other Text" lineEndContext="#pop">+ <RegExpr attribute="Element Symbols" context="ElementTagName" String="<(?=(&name;))"/>+ <RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="</(?=(&name;))"/>+ </context>+ <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop">+ <IncludeRules context="FindHTMLTags"/>+ <IncludeRules context="FindSpecialHTMLTags"/>+ <StringDetect attribute="Element" context="#pop!El Open" String="%1" dynamic="true"/>+ </context>+ <context name="ElementTagNameClose" attribute="Other Text" lineEndContext="#pop">+ <IncludeRules context="FindHTMLTagsClose"/>+ <StringDetect attribute="Element" context="#pop!El Close" String="%1" dynamic="true"/>+ </context>+ <!-- This allows you to insert HTML tags in other syntax definitions -->+ <context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">+ <WordDetect attribute="Element" context="#pop!CSS" String="style" insensitive="true" beginRegion="style"/>+ <WordDetect attribute="Element" context="#pop!JS" String="script" insensitive="true" beginRegion="script"/>+ </context>+ <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">+ <WordDetect attribute="Element" context="#pop!El Open" String="pre" insensitive="true" beginRegion="pre"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="div" insensitive="true" beginRegion="div"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="table" insensitive="true" beginRegion="table"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="ul" insensitive="true" beginRegion="ul"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="ol" insensitive="true" beginRegion="ol"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="dl" insensitive="true" beginRegion="dl"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="article" insensitive="true" beginRegion="article"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="aside" insensitive="true" beginRegion="aside"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="details" insensitive="true" beginRegion="details"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="figure" insensitive="true" beginRegion="figure"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="footer" insensitive="true" beginRegion="footer"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="header" insensitive="true" beginRegion="header"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="main" insensitive="true" beginRegion="main"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="nav" insensitive="true" beginRegion="nav"/>+ <WordDetect attribute="Element" context="#pop!El Open" String="section" insensitive="true" beginRegion="section"/>+ </context>+ <context name="FindHTMLTagsClose" attribute="Normal Text" lineEndContext="#stay">+ <WordDetect attribute="Element" context="#pop!El Close" String="pre" insensitive="true" endRegion="pre"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="div" insensitive="true" endRegion="div"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="table" insensitive="true" endRegion="table"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="ul" insensitive="true" endRegion="ul"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="ol" insensitive="true" endRegion="ol"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="dl" insensitive="true" endRegion="dl"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="article" insensitive="true" endRegion="article"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="aside" insensitive="true" endRegion="aside"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="details" insensitive="true" endRegion="details"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="figure" insensitive="true" endRegion="figure"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="footer" insensitive="true" endRegion="footer"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="header" insensitive="true" endRegion="header"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="main" insensitive="true" endRegion="main"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="nav" insensitive="true" endRegion="nav"/>+ <WordDetect attribute="Element" context="#pop!El Close" String="section" insensitive="true" endRegion="section"/>+ </context>+ <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">+ <RegExpr attribute="EntityRef" context="#stay" String="&entref;"/>+ <AnyChar attribute="Error" context="#stay" String="&<"/>+ </context>+ <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">+ <DetectChar attribute="Attribute Separator" context="Value" char="="/>+ <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;(\s+&attributeName;)*\s*|\s+"/>+ </context>+ <context name="Comment" attribute="Comment" lineEndContext="#stay">+ <DetectSpaces/>+ <StringDetect attribute="Comment" context="#pop" String="-->" endRegion="comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>+ <context name="El Open" attribute="Error" lineEndContext="#stay">+ <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">"/>+ <DetectChar attribute="Element Symbols" context="#pop" char=">"/>+ <IncludeRules context="FindAttributes"/>+ </context>+ <context name="El Close" attribute="Error" lineEndContext="#stay">+ <DetectChar attribute="Element Symbols" context="#pop" char=">"/>+ <DetectSpaces attribute="Other Text"/>+ </context>+ <context name="CSS" attribute="Error" lineEndContext="#stay">+ <RegExpr attribute="Attribute" context="Style-Type" String="(?:\s+|^)lang(?=\=|\s|$)" insensitive="true"/>+ <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" endRegion="style"/>+ <DetectChar attribute="Element Symbols" context="CSS content" char=">"/>+ <IncludeRules context="FindAttributes"/>+ </context>+ <context name="DefaultCSS" attribute="Other Text" lineEndContext="#stay">+ <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" endRegion="style"/>+ <DetectChar attribute="Attribute Separator" context="Value" char="="/>+ <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+"/>+ </context>+ <context name="CSS content" attribute="Other Text" lineEndContext="#stay">+ <RegExpr attribute="Element Symbols" context="StyleTagClose" String="</(?=style\b)" insensitive="true"/>+ <IncludeRules context="##CSS" includeAttrib="true"/>+ </context>+ <context name="Default CSS content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="FindStyleTagClose"/>+ </context>+ <context name="FindStyleTagClose" attribute="Other Text" lineEndContext="#stay">+ <RegExpr attribute="Element Symbols" context="StyleTagClose" String="</(?=style\b)" insensitive="true"/>+ </context>+ <context name="StyleTagClose" attribute="Other Text" lineEndContext="#stay">+ <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="style"/>+ </context>+ <context name="JS" attribute="Error" lineEndContext="#stay">+ <RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)lang(?=\=|\s|$)" insensitive="true"/>+ <DetectChar attribute="Element Symbols" context="JS content" char=">"/>+ <IncludeRules context="DefaultJS"/>+ </context>+ <context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">+ <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" endRegion="script"/>+ <DetectChar attribute="Attribute Separator" context="Value" char="="/>+ <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+"/>+ </context>+ <context name="JS content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="Default JS content"/>+ <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>+ </context>+ <context name="Default JS content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="FindScriptTagClose"/>+ <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*</script\b)" insensitive="true"/>+ </context>+ <context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">+ <RegExpr attribute="Element Symbols" context="ScriptTagClose" String="</(?=script\b)" insensitive="true"/>+ </context>+ <context name="ScriptTagClose" attribute="Other Text" lineEndContext="#stay">+ <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="script"/>+ </context>+ <context name="JS comment close" attribute="Comment" lineEndContext="#pop">+ <RegExpr attribute="Element Symbols" context="#pop!ScriptTagClose" String="</(?=script\b)" insensitive="true"/>+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ </context>+ <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="Value NQ">+ <DetectChar attribute="Value" context="Value DQ" char="""/>+ <DetectChar attribute="Value" context="Value SQ" char="'"/>+ <DetectSpaces/>+ </context>+ <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <!-- '{' and '}' are valid, but used with twig -->+ <RegExpr attribute="Value" String="[^><"'&\s=`{}]+"/>+ <IncludeRules context="FindEntityRefs"/>+ <AnyChar attribute="Error" String=""'`="/>+ <AnyChar attribute="Value" String="{}"/>+ </context>+ <context name="Value DQ" attribute="Value" lineEndContext="#stay">+ <DetectChar attribute="Value" context="#pop#pop" char="""/>+ <IncludeRules context="FindEntityRefs"/>+ </context>+ <context name="Value SQ" attribute="Value" lineEndContext="#stay">+ <DetectChar attribute="Value" context="#pop#pop" char="'"/>+ <IncludeRules context="FindEntityRefs"/>+ </context>+ <!-- Read content from the "lang" attribute to change the language to+ highlight in the <style> tag. The default language is CSS. -->+ <context name="Style-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Attribute" context="#pop!Style-Type Value" char="="/>+ </context>+ <context name="Style-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">+ <DetectSpaces/>+ <!-- SASS -->+ <StringDetect attribute="Value" context="#pop#pop!SASS" String=""sass""/>+ <StringDetect attribute="Value" context="#pop#pop!SASS" String="'sass'"/>+ <!-- SCSS -->+ <StringDetect attribute="Value" context="#pop#pop!SCSS" String=""scss""/>+ <StringDetect attribute="Value" context="#pop#pop!SCSS" String="'scss'"/>+ </context>+ <context name="SASS" attribute="Error" lineEndContext="#stay">+ <DetectChar attribute="Element Symbols" context="SASS content" char=">"/>+ <IncludeRules context="DefaultCSS"/>+ </context>+ <context name="SASS content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="Default CSS content"/>+ <IncludeRules context="##SASS" includeAttrib="true"/>+ </context>+ <context name="SCSS" attribute="Error" lineEndContext="#stay">+ <DetectChar attribute="Element Symbols" context="SCSS content" char=">"/>+ <IncludeRules context="DefaultCSS"/>+ </context>+ <context name="SCSS content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="Default CSS content"/>+ <IncludeRules context="##SCSS" includeAttrib="true"/>+ </context>+ <!-- Read content from the "lang" attribute to change the language to+ highlight in the <script> tag. The default language is JavaScript. -->+ <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="="/>+ </context>+ <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">+ <DetectSpaces/>+ <!-- TypeScript -->+ <StringDetect attribute="Value" context="#pop#pop!TypeScript" String=""ts""/>+ <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="'ts'"/>+ </context>+ <context name="TypeScript" attribute="Error" lineEndContext="#stay">+ <DetectChar attribute="Element Symbols" context="TypeScript content" char=">"/>+ <IncludeRules context="DefaultJS"/>+ </context>+ <context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">+ <IncludeRules context="Default JS content"/>+ <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>+ </context>+ </contexts>+ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Other Text" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Element Symbols" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>+ <itemData name="Attribute Separator" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Value" defStyleNum="dsString" spellChecking="false"/>+ <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="multiLine" start="<!--" end="-->" region="comment"/>+ </comments>+ </general>+</language>+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
xml/yaml.xml view
@@ -1,640 +1,820 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language [- <!ENTITY null "(?:null|Null|NULL|~)">- <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">-- <!ENTITY int "(?:0|[\-\+]?[1-9][0-9_]*)">- <!ENTITY intOther "[\-\+]?0(?:x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->- <!ENTITY intBase60 "[\-\+]?[1-9][0-9_]*(?:\:[0-5]?[0-9])+">- <!ENTITY allInt "(?:&intBase60;|&intOther;|∫)">-- <!ENTITY float "[\-\+]?(?:[0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)(?:[eE][\-\+]?[0-9]+)?">- <!ENTITY floatExp "[\-\+]?[0-9][0-9_]*[eE][\-\+]?[0-9]+">- <!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(?:\:[0-5]?[0-9])+\.[0-9_]*">- <!ENTITY inf "[\-\+]?\.(?:inf|Inf|INF)\b">- <!ENTITY nan "\.(?:nan|NaN|NAN)\b">- <!ENTITY allFloat "(?:&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">-- <!ENTITY endValue "(?:\s*$|\s+#)">- <!ENTITY endValueInline "\s*[:,\[\]\{\}]">- <!ENTITY space "[ ]">-- <!-- Key quoted -->- <!ENTITY keyDQ ""(?:\\.|[^"])+"\s*">- <!ENTITY keySQ "'(?:[^']|'')+'\s*">- <!-- Literal/folded operator -->- <!ENTITY literalOp "[\|>][\-\+]?">- <!-- Key after "?" or "-", used to detect literal/folded operator -->- <!ENTITY keyAfterOp "(?:[^"'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)">-- <!ENTITY dataTypes "!!\S+">- <!ENTITY alias "&\S+">- <!ENTITY reference "\*\S+">-- <!ENTITY dpointsHashAttrPreInline1 "[^\s"'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))">- <!ENTITY dpointsHashAttrPreInline2 "\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))">- <!ENTITY dpointsHashAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">- <!ENTITY dpointsHashAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">-- <!ENTITY dpointsListAttrPreInline1 "[^"'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))">- <!ENTITY dpointsListAttrPreInline2 "\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))">- <!ENTITY dpointsListAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">- <!ENTITY dpointsListAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">-- <!ENTITY dpointsAttrPre1 "[^"'#\-\s][^:#]*(?=\:(?:\s|$))">- <!ENTITY dpointsAttrPre2 "\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))">- <!ENTITY dpointsAttrPre3 "&keyDQ;(?=\:(?:\s|$))">- <!ENTITY dpointsAttrPre4 "&keySQ;(?=\:(?:\s|$))">--]>--<!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->-<!-- Modifications (YAML 1.2), values & support for literal/folded style:- Nibaldo González S. <nibgonz@gmail.com>- These modifications are under the MIT license. //-->-<language name="YAML" alternativeNames="YML" version="13" kateversion="5.0" section="Markup"- extensions="*.yaml;*.yml;.clang-format;.clang-tidy" mimetype="text/yaml" priority="9"- author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">- <highlighting>- <contexts>- <context attribute="Attribute" lineEndContext="#stay" name="normal" >- <StringDetect attribute="Document Header" context="header" String="---" column="0"/>- <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>- <DetectChar attribute="Directive" context="directive" char="%" column="0"/>-- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />-- <!-- Literal/Folded Style -->- <IncludeRules context="find-literal-block" />-- <RegExpr attribute="Operator" firstNonSpace="true" context="dash" String="\-(?=\s|$)" />- <DetectChar attribute="Operator" firstNonSpace="true" context="mapping-key" char="?" />-- <DetectChar attribute="Operator" firstNonSpace="true" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" firstNonSpace="true" context="hash" char="{" beginRegion="Hash" />-- <RegExpr attribute="Data Types" firstNonSpace="true" context="after-data" String="&dataTypes;" />- <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />- <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />-- <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&dpointsAttrPre1;|&dpointsAttrPre2;|&dpointsAttrPre3;|&dpointsAttrPre4;"/>- <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>-- <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />- <DetectChar attribute="String" firstNonSpace="true" context="stringx" char=""" beginRegion="String" />- <IncludeRules context="values-firstnonspace" />- <DetectSpaces/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />- <DetectSpaces />- <RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />- <RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#pop!after-data" String="&alias;" />- <RegExpr attribute="Reference" context="#pop!after-data" String="&reference;" />-- <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="#pop!stringx" char=""" beginRegion="String" />- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces/>- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#stay" String="&alias;" />- <RegExpr attribute="Reference" context="#stay" String="&reference;" />- <IncludeRules context="values" />- <DetectChar attribute="Operator" context="#pop!mapping-key" char="?" />- <RegExpr attribute="Operator" context="#stay" String="\-(?=\s|$)" />-- <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="#pop!stringx" char=""" beginRegion="String" />- </context>-- <!-- Highlight lists, hashes and strings after a data type, reference or alias -->- <context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />- <DetectSpaces />- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#stay" String="&alias;" />- <RegExpr attribute="Reference" context="#stay" String="&reference;" />-- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />- </context>-- <context attribute="Document Header" lineEndContext="#pop" name="header">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />- </context>- <context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">- <DetectSpaces />- <RegExpr attribute="Literal/Folded Operator" context="#pop#pop!literal-block-simple" String="&literalOp;" beginRegion="Literal" />- </context>-- <context attribute="End of Document" lineEndContext="#stay" name="EOD">- </context>-- <context attribute="Directive" lineEndContext="#pop" name="directive">- </context>-- <context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- </context>-- <context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">- <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- </context>- <context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">- <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- </context>-- <!-- Attribute -->- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-attribute-pre" fallthrough="true" fallthroughContext="#pop!attribute-pre">- <DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->- </context>- <context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces/>- <DetectChar attribute="Operator" context="#stay" char="?" />- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="attribute-string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="attribute-stringx" char=""" beginRegion="String" />- <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />- <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />- <RegExpr attribute="Alias" context="attribute" String="&alias;" />- <RegExpr attribute="Reference" context="attribute" String="&reference;" />- <IncludeRules context="values" />- <RegExpr attribute="Literal/Folded Operator" context="#stay" String="&literalOp;(?=&endValue;)" />- </context>-- <context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces/>-- <DetectChar attribute="Operator" context="#stay" char="?" />- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="attribute-string-inline" char="'" beginRegion="String" />- <DetectChar attribute="String" context="attribute-stringx-inline" char=""" beginRegion="String" />- <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />- <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />- </context>-- <!-- Attribute Inline, Within List -->- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-list-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!list-attribute-pre-inline">- <DetectChar attribute="Key Points Operator" context="#pop!list-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->- </context>- <context attribute="Attribute" lineEndContext="#pop" name="list-attribute-pre-inline" fallthrough="true" fallthroughContext="list-attribute-inline">- <IncludeRules context="default-attribute-pre-inline" />- <RegExpr attribute="Alias" context="list-attribute-inline" String="&alias;" />- <RegExpr attribute="Reference" context="list-attribute-inline" String="&reference;" />-- <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",]" />- <IncludeRules context="values-inline" />- </context>-- <!-- Attribute Inline, Within Hash -->- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-hash-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!hash-attribute-pre-inline">- <DetectChar attribute="Key Points Operator" context="#pop!hash-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->- </context>- <context attribute="Attribute" lineEndContext="#pop" name="hash-attribute-pre-inline" fallthrough="true" fallthroughContext="hash-attribute-inline">- <IncludeRules context="default-attribute-pre-inline" />- <RegExpr attribute="Alias" context="hash-attribute-inline" String="&alias;" />- <RegExpr attribute="Reference" context="hash-attribute-inline" String="&reference;" />-- <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",}" />- <IncludeRules context="values-inline" />- </context>-- <!-- List -->- <!-- Context "find-values-list" highlights values and then sends to "list-element" -->- <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces />- <DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />- </context>- <context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />-- <DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />-- <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&dpointsListAttrPreInline1;|&dpointsListAttrPreInline2;|&dpointsListAttrPreInline3;|&dpointsListAttrPreInline4;"/>- <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />-- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#stay" String="&alias;" />- <RegExpr attribute="Reference" context="#stay" String="&reference;" />- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />-- <DetectChar attribute="Operator" context="#pop!list" char="," />- <IncludeRules context="values-list" />- </context>-- <!-- Hash -->- <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces />- <DetectChar attribute="Operator" context="#pop!hash-element" char="?" />- </context>- <context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces/>-- <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&dpointsHashAttrPreInline1;|&dpointsHashAttrPreInline2;|&dpointsHashAttrPreInline3;|&dpointsHashAttrPreInline4;"/>- <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>-- <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />- <DetectChar attribute="Operator" context="#pop!hash" char="," />-- <!-- This improves highlighting in keys with multiple lines -->- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#stay" String="&alias;" />- <RegExpr attribute="Reference" context="#stay" String="&reference;" />- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />- </context>-- <!-- Strings -->- <context attribute="String" lineEndContext="#stay" name="attribute-string" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-singleq" />- <DetectChar attribute="String" context="attribute-end" char="'" endRegion="String" />- </context>-- <context attribute="String" lineEndContext="#stay" name="attribute-stringx" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-doubleq" />- <DetectChar attribute="String" context="attribute-end" char=""" endRegion="String" />- </context>-- <context attribute="String" lineEndContext="#stay" name="attribute-string-inline" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-singleq" />- <DetectChar attribute="String" context="attribute-end-inline" char="'" endRegion="String" />- </context>-- <context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-doubleq" />- <DetectChar attribute="String" context="attribute-end-inline" char=""" endRegion="String" />- </context>-- <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces attribute="Normal Text" context="#stay"/>- </context>-- <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />- <DetectSpaces attribute="Normal Text" context="#stay"/>- <AnyChar context="#pop#pop#pop" lookAhead="true" String="}],"/>- </context>-- <context attribute="String" lineEndContext="#stay" name="string" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-singleq" />- <DetectChar attribute="String" context="#pop" char="'" endRegion="String" />- </context>-- <context attribute="String" lineEndContext="#stay" name="stringx" noIndentationBasedFolding="true">- <DetectIdentifier />- <IncludeRules context="escaped-char-doubleq" />- <DetectChar attribute="String" context="#pop" char=""" endRegion="String" />- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-doubleq">- <RegExpr attribute="Escaped Character" context="#stay" String="\\(?:[\s0abtnvfre"/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-singleq">- <Detect2Chars attribute="Escaped Character" context="#stay" char="'" char1="'" />- </context>-- <context attribute="Comment" lineEndContext="#pop" name="comment">- <DetectSpaces />- <IncludeRules context="##Comments" />- </context>-- <!-- Values -->- <context attribute="Normal Text" lineEndContext="#stay" name="values">- <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValue;)"/>- <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValue;)"/>- <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValue;)"/>- <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValue;)"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="values-firstnonspace">- <RegExpr attribute="Null" firstNonSpace="true" context="#stay" String="&null;(?=&endValue;)"/>- <RegExpr attribute="Boolean" firstNonSpace="true" context="#stay" String="&bool;(?=&endValue;)"/>- <RegExpr attribute="Float" firstNonSpace="true" context="#stay" String="&allFloat;(?=&endValue;)"/>- <RegExpr attribute="Integer" firstNonSpace="true" context="#stay" String="&allInt;(?=&endValue;)"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="values-inline">- <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValueInline;|&endValue;)"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="values-list">- <RegExpr attribute="Null" context="#stay" String="(?:\s|^)&null;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Boolean" context="#stay" String="(?:\s|^)&bool;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Float" context="#stay" String="(?:\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Integer" context="#stay" String="(?:\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>- </context>- <!-- If the value is found immediately at the beginning of the list item -->- <context attribute="Normal Text" lineEndContext="#pop!list-element" name="find-values-list" fallthrough="true" fallthroughContext="#pop!list-element">- <RegExpr attribute="Null" context="#pop!list-element" String="&null;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Boolean" context="#pop!list-element" String="&bool;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Float" context="#pop!list-element" String="&allFloat;(?=&endValueInline;|&endValue;)"/>- <RegExpr attribute="Integer" context="#pop!list-element" String="&allInt;(?=&endValueInline;|&endValue;)"/>- </context>-- <!-- Literal/Folded Style: http://yaml.org/spec/1.2/spec.html#id2795688 -->-- <context attribute="Normal Text" lineEndContext="#stay" name="find-literal-block">- <!-- Do not allow indentation with tabs: -->- <RegExpr attribute="Alert" context="#stay" column="0"- String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />-- <!-- CASE 1: The literal/folded operator is the first character of a line.- The text after a space is considered literal.- Ex:- > |- > ^Start the literal text- -->- <RegExpr attribute="Literal/Folded Operator" context="literal-block-simple" column="0"- String="^&literalOp;(?=&endValue;)" beginRegion="Literal" />-- <!-- CASE 2: Only the literal/folded operator is present in a line, after a space (the indentation- is captured). The text with the same indentation of the operator will be highlighted as literal.- Ex:- > key:- > |- > ^Start the literal text-- However, in this case, the correct way is to use the indentation of the block, not the- indentation of the the operator. The problem is that it is difficult to capture.- > key1:- > key2:- > key3:- > |- > ^Block indentation (correct literal text)- -->- <RegExpr attribute="Literal/Folded Operator" context="literal-block-only-operator" column="0"- String="^(&space;+)&literalOp;(?=&endValue;)" beginRegion="Literal" />-- <!-- CASE 3: There is a Key before the literal/folded operator (Key indentation is captured).- The text with the Key's indentation plus a space is considered literal.- Ex:- > key: |- > ^Start the literal text- > key: !!type >-- > ^Start the folded text- -->- <RegExpr attribute="Key Points Operator" context="literal-block-key" column="0"- String="^(&space;*)\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />- <RegExpr attribute="Key" context="literal-block-key" column="0"- String="^(&space;*)(?:[^"'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)(?=\:\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />-- <!-- CASE 4: Is there an operator "?" or "-" at the beginning of the line.- NOTE: Nested characters "-" and "?" are considered as part of the indentation.- Therefore, the indentation of the Key or the last operator "?" or "-" is captured.- Ex:- > ? |- > ^Start the literal Text- > ? - - |- > ^Start the literal text- > - Key: |- > ^Start the literal text- > ? - - - - Key: |- > ^Start the literal text- -->- <RegExpr context="start-literal-block-withdash" lookAhead="true" column="0"- String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?)?&literalOp;&endValue;" />-- <!-- CASE 5: Literal/folded operator after a data type or other content.- Ex:- > !!type |- > ^Start the literal text- > key1:- > key2:- > !!type |- > ^Start the literal text- -->- <RegExpr context="start-literal-block-other" lookAhead="true" column="0"- String="^&space;*(?:(?:[&\*]|!!)\S+\s+)+&literalOp;&endValue;" />- </context>-- <!-- If the line with the literal operator starts with the "-" or "?" operator.- NOTE: The indentation capture is limited to 6 nested operators. -->- <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash" noIndentationBasedFolding="true">- <!-- With Key: Capture the Key indentation -->- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s2" String="^(&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s7" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>- <!-- Without Key: Capture the indentation of the last operator "?" or "-" -->- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s1" String="^(&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s2" String="^(&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>- </context>- <!-- Capture the indentation of data type, reference or alias -->- <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other" noIndentationBasedFolding="true">- <!-- The text with the same indentation will be considered literal -->- <RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)&dataTypes;" column="0" />- <RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&alias;" column="0" />- <RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)&reference;" column="0" />- <!-- The text after a space will be considered literal (empty text is captured) -->- <RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()&dataTypes;" column="0" />- <RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&alias;" column="0" />- <RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()&reference;" column="0" />- </context>-- <!-- Highlight data/attribute before the literal operator (Note that if there is a line- break within a string or bracket, the literal line will not be highlighted). -->- <context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />-- <RegExpr attribute="Error" context="#pop#pop" String="(?:[&\*]|!!)\S*&literalOp;(?=&endValue;)" />- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />- <RegExpr attribute="Alias" context="#stay" String="&alias;" />- <RegExpr attribute="Reference" context="#stay" String="&reference;" />-- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />- </context>-- <context attribute="Normal Text" lineEndContext="#pop#pop" name="dpoints-key-before-literal-operator" fallthrough="true" fallthroughContext="#pop#pop" noIndentationBasedFolding="true">- <DetectChar attribute="Key Points Operator" context="#pop!key-before-literal-operator" char=":" />- </context>- <context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator" noIndentationBasedFolding="true">- <IncludeRules context="before-literal-operator" />- <DetectChar attribute="Operator" context="#stay" char="?" />- </context>- <context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />- </context>-- <!-- Common rules for the content of the literal blocks -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default" noIndentationBasedFolding="true">- <!-- End literal/folded block -->- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <!-- Find literal/folded operator -->- <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default" noIndentationBasedFolding="true">- <!-- End literal/folded block -->- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <!-- Detect Key before the literal/folded operator -->- <RegExpr attribute="Key" context="dpoints-key-before-literal-operator" String="&keyAfterOp;(?=:\s)" />- <RegExpr attribute="Normal Text" context="#pop" String="\S" lookAhead="true" endRegion="Literal" />- </context>-- <!-- Content of the literal block: -->-- <!-- If the literal operator is starting the line (after a space, use block indentation) -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />-- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />- <RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />- </context>- <!-- If the literal operator is the first character of a line (or after header) -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^\s.*$" column="0" />-- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />- </context>- <!-- If there is a data type or other content before the liretal operator (use block indentation) -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />-- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />- </context>- <!-- If there is a key before the literal operator -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />-- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />- <!-- Attribute of the Key (the Key was previously highlighted) -->- <RegExpr attribute="Key Points Operator" context="key-before-literal-operator" String=":\s" />- <RegExpr context="key-before-literal-operator" String="\S" lookAhead="true" />- </context>-- <!-- If there are dashes/"?" before the literal operator -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-default" />- </context>- <!-- If there are dashes/"?" and a Key before the literal operator -->- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true" noIndentationBasedFolding="true">- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6%7&space;{6}\s.*$" dynamic="true" column="0" />- <IncludeRules context="literal-block-key-default" />- </context>- </contexts>-- <itemDatas>- <itemData name="Normal Text" defStyleNum="dsAttribute" />- <itemData name="Attribute" defStyleNum="dsAttribute" />- <itemData name="List" defStyleNum="dsAttribute" />- <itemData name="Hash" defStyleNum="dsAttribute" />- <itemData name="Comment" defStyleNum="dsComment" />- <itemData name="End of Document" defStyleNum="dsComment" />- <itemData name="Document Header" defStyleNum="dsPreprocessor" />- <itemData name="Data Types" defStyleNum="dsOthers" />- <itemData name="Alias" defStyleNum="dsOthers" />- <itemData name="Reference" defStyleNum="dsOthers" />- <itemData name="Key" defStyleNum="dsFunction" bold="1" />- <itemData name="Directive" defStyleNum="dsPreprocessor" />- <itemData name="Key Points Operator" defStyleNum="dsKeyword" />- <itemData name="Operator" defStyleNum="dsKeyword" />- <itemData name="String" defStyleNum="dsString" />- <itemData name="Escaped Character" defStyleNum="dsSpecialChar" />- <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1" />- <itemData name="Literal/Folded Block" defStyleNum="dsNormal" />- <itemData name="Null" defStyleNum="dsChar" />- <itemData name="Boolean" defStyleNum="dsChar" />- <itemData name="Integer" defStyleNum="dsDecVal" />- <itemData name="Float" defStyleNum="dsFloat" />- <itemData name="Error" defStyleNum="dsError" />- <itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A" />- </itemDatas>- </highlighting>-- <general>- <folding indentationsensitive="1" />- <emptyLines>- <emptyLine regexpr="(?:\s+|\s*#.*)"/>- </emptyLines>- <comments>- <comment name="singleLine" start="#" position="afterwhitespace" />+ <!--+ https://yaml.org/spec/1.2.2/#1032-tag-resolution with extensions+ -->++ <!ENTITY tab "	">++ <!-- For correct highlight range between selected brackets... -->+ <!ENTITY listOpen "[">+ <!ENTITY listClose "]">+ <!ENTITY hashOpen "{">+ <!ENTITY hashClose "}">++ <!--+ @{ Literal+ -->+ <!ENTITY null "(?:null|Null|NULL|~)">+ <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">++ <!ENTITY int "[1-9](?:_*+[0-9]++)*+">+ <!-- Hex, Octal, Binary -->+ <!ENTITY intOther "0(?:x(?:_*+[0-9a-fA-F]++)++|o(?:_*+[0-7]++)++|(?:_*+[0-7]++)*+|b(?:_*+[01]++)++)">+ <!ENTITY intBase60 "[1-9][0-9_]*(?::[0-5]?[0-9])+">+ <!ENTITY allInt "[-+]?(?:&intBase60;|&intOther;|∫)">++ <!ENTITY date "[0-9]{4}-[0-9]{2}-[0-9]{2}">+ <!ENTITY time "[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]*)?">+ <!ENTITY time_canonical "T&time;Z?">+ <!ENTITY time_iso8601 "t&time;(?:[-+][0-9]+(?::[0-9]{2})?)?">+ <!ENTITY time_spaced " +&time;(?: +[-+][0-9]+)?">+ <!ENTITY timestamp "&date;(?:&time_canonical;|&time_iso8601;|&time_spaced;)?">++ <!ENTITY floatExp "(?:[eE][-+]?[0-9]+)">+ <!ENTITY float1 "[0-9][0-9_]*+(?:&floatExp;|\.(?:_*+[0-9]++)*+(?:_*+&floatExp;)?)">+ <!ENTITY float2 "\._*+[0-9]++(?:_*+[0-9]++)*+(?:_*+&floatExp;)?">+ <!ENTITY floatBase60 "[0-9][0-9_]*(?::[0-5]?[0-9])+\.(?:_*+[0-9]++)*+">+ <!ENTITY inf "\.(?:inf|Inf|INF)">+ <!ENTITY nan "\.(?:nan|NaN|NAN)">+ <!ENTITY allFloat "(?:[-+]?(?:&float1;|&float2;|&floatBase60;|&inf;)|&nan;)">++ <!ENTITY firstLitChar "nN~yYnNtTfFoO-+0123456789.">++ <!-- Key quoted -->+ <!ENTITY keyDQ '"(?:\\.|[^"])*+"'>+ <!ENTITY keySQ "'(?:[^']|'')*+'">++ <!ENTITY endValue "(?:$|\s++(?:#|$))">+ <!ENTITY inlineSep "[,\[\]{}]|:(?:\s|$)">+ <!ENTITY endValueInline "(?:$|&inlineSep;|\s++(?:#|$|&inlineSep;))">+ <!--+ @} Literal+ -->++ <!--+ @{ Key attribute+ - key: value+ ~~~+ -->+ <!ENTITY keyPlainData "(?:[^: \t]++|:(?! |$)|[\t ]++(?!#))">+ <!ENTITY listKeyPlainData "(?:[^,{}\[\]?: \t]++|:(?! |$)|[\t ]++(?!#)|[?](?! |$))">+ <!ENTITY keyPlain "&keyPlainData;++">+ <!ENTITY isKeyPoint "(?=:(?: |$))">+ <!ENTITY isPlain "(?!['"%\&listClose;\&hashClose;])">+ <!ENTITY keyAttr "(?:&keyDQ;[\t ]*+|&keySQ;[\t ]*+|&isPlain;&keyPlain;)?+&isKeyPoint;">++ <!-- string attributes in a list or hash have an optional space after ':' (json compatibility) -->+ <!ENTITY keyAttrDQEnd '"[\t ]*+&isKeyPoint;'>+ <!ENTITY jsonAttrDQEnd '"[\t ]*+(?=:)'>+ <!ENTITY keyAttrSQEnd "'[\t ]*+&isKeyPoint;">+ <!ENTITY jsonAttrSQEnd "'[\t ]*+(?=:)">+ <!ENTITY keyDQWithEscape '"[^"\\]*+(?:&keyAttrDQEnd;|(?=\\.(\\.|[^"])*+&keyAttrDQEnd;))'>+ <!ENTITY jsonDQWithEscape '"[^"\\]*+(?:&jsonAttrDQEnd;|(?=\\.(\\.|[^"])*+&jsonAttrDQEnd;))'>+ <!ENTITY keySQWithEscape "'[^']*+(?:&keyAttrSQEnd;|(?=''(?:[^']|'')*+&keyAttrSQEnd;))">+ <!ENTITY jsonSQWithEscape "'[^']*+(?:&jsonAttrSQEnd;|(?=''(?:[^']|'')*+&jsonAttrSQEnd;))">++ <!ENTITY keyAttrWithEscape "&keyDQWithEscape;|&keySQWithEscape;|&isPlain;&keyPlainData;++&isKeyPoint;">+ <!ENTITY jsonAttrWithEscape "&jsonDQWithEscape;|&jsonSQWithEscape;|&isPlain;&listKeyPlainData;++&isKeyPoint;">+ <!--+ @} Key attribute+ -->++ <!-- Detect indentation with at most 4 symbols:+ > - - - - key: value+ ~ ~ ~ ~ symbols++ Indentation level:++ - - key: value+ value+ # ^ final indent+ - - value+ value+ # ^ final indent+ - - |+ line 1+ line 2+ # ^ final indent+ # ^ minimal final indent++ Captures spaces at the start of a line as well as spaces between -, : and ?.+ The captures between symbols are in 2 parts:+ - a single space which replaces the symbol in the dynamic construction rules+ - and the spaces which follow++ - - - bla+ ~~~ capture 1+ ~ ~ capture 2 and 4+ ~~ ~~ capture 3 and 5+ ^ ^ replaced with capture 2 and 4 for dynamic indent++ The empty capture at the end is necessary to ensure+ that the number of captures is always at least 9.+ Otherwise, %N in dynamic rules are not replaced with empty string. -->+ <!ENTITY spaceAndOpPrefix "^( ++)(?![|>%])&afterSpaceLookAheadPrefix;">+ <!ENTITY spaceAndOpNewPrefix "^( ++)&afterSpaceLookAheadPrefix;">+ <!ENTITY afterSpaceLookAheadPrefix "(?=[-:?](?: |$)|&keyAttrOrSeq;)&lookAheadPrefix;()">+ <!ENTITY opPrefix "^(?=[-:?](?: |$)|(?!---(?:$| )|\.\.\.(?:$| ))&keyAttr;)()&lookAheadPrefix;.()">+ <!ENTITY keyAttrOrSeq "(?:[\&listOpen;\&hashOpen;]|&keyAttr;)">+ <!ENTITY noLastAttrOp "[-:?]( )( *+)(?=[-:?](?: |$))">+ <!ENTITY tooManySym "[-:?] ++[-:?](?: |$)">+ <!ENTITY noLastAttrOps "(?:&noLastAttrOp;(?:&noLastAttrOp;(?:&noLastAttrOp;)?+)?+)?+">+ <!ENTITY lookAheadPrefix "(?=&noLastAttrOps;(?!&tooManySym;)(?:(?:[-:?]( ))?+( *+)&keyAttrOrSeq;)?+)">+ <!ENTITY indent "%1%2%2%3%4%4%5%6%6%7%8%8%9 ">++ <!ENTITY newValueContexts "BlockPrefix!ValueTextIndent!ExplicitValueIndent!ExplicitKeyTextIndent!KeyOrValueIndent!KeyOrValue">+]>++<!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->+<!-- Modifications (YAML 1.2), values & support for literal/folded style:+ Nibaldo González S. <nibgonz@gmail.com>+ These modifications are under the MIT license. //-->+<!-- https://yaml.org/spec/1.2.2/#chapter-4-syntax-conventions -->+<language name="YAML" alternativeNames="YML" version="18" kateversion="6.22" section="Markup"+ extensions="*.yaml;*.yml;.clang-format;.clang-tidy;metadata;*.ksy" mimetype="text/yaml;application/buildstream+yaml" priority="9"+ author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">+ <highlighting>+ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="normal" fallthroughContext="Lvl0Text">+ <IncludeRules context="FindSingleComment"/>++ <RegExpr attribute="Normal Text" context="&newValueContexts;" String="&spaceAndOpPrefix;" column="0"/>+ <AnyChar lookAhead="1" context="FindSpaces" String=" &tab;"/>+ <RegExpr lookAhead="1" context="&newValueContexts;" String="&opPrefix;" column="0"/>++ <AnyChar lookAhead="1" context="Lvl0Prefix" String="*!&"/>+ <IncludeRules context="FindSeq"/>+ <IncludeRules context="FindStr"/>+ <AnyChar attribute="Literal/Folded Operator" context="Lvl0BlockPrefix!BlockHeader" String="|>" beginRegion="Block"/>+ <DetectChar attribute="Directive" context="Directive" char="%" column="0"/>+ <AnyChar lookAhead="1" context="Lvl0MaybeHeader" String="-" column="0"/>+ <AnyChar lookAhead="1" context="Lvl0SymIndent" String=":?"/>+ <AnyChar lookAhead="1" context="Lvl0MaybeEOD" String="." column="0"/>+ <AnyChar attribute="Error" context="Lvl0Text" String="%&listClose;&hashClose;"/>+ <AnyChar lookAhead="1" context="Lvl0Literal" String="&firstLitChar;"/>+ </context>++ <context name="FindSeq" attribute="Normal Text">+ <DetectChar attribute="Operator" context="List" char="&listOpen;" beginRegion="List"/>+ <DetectChar attribute="Operator" context="Hash" char="&hashOpen;" beginRegion="Hash"/>+ </context>++ <context name="FindStr" attribute="Normal Text">+ <DetectChar attribute="String" context="StringSq" char="'" beginRegion="String"/>+ <DetectChar attribute="String" context="StringDq" char='"' beginRegion="String"/>+ </context>+++ <!--+ @{ No indented text++ Normally, `lineEndContext` should be set to `#stay`,+ but this prevents the embedding of code blocks such as Markdown:++ ```+ text+ continuation (LvL0 context)+ ``` <- continuation also (LvL0 context, no top level context),++ This is not compliant and displays incorrectly in some cases:++ ```+ text+ [ a # should be text, not a list+ ```+ -->+ <context name="Lvl0Prefix" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="Lvl0Text">+ <DetectSpaces/>+ <IncludeRules context="FindMarker"/>+ <IncludeRules context="FindSeq"/>+ <IncludeRules context="FindStr"/>+ <DetectChar attribute="Comment" context="#pop!comment" char="#"/>+ <AnyChar lookAhead="1" context="#pop!Lvl0Literal" String="&firstLitChar;"/>+ <AnyChar attribute="Literal/Folded Operator" context="#pop!Lvl0BlockPrefix!BlockHeader" String="|>" beginRegion="Block"/>+ </context>++ <context name="Lvl0Literal" attribute="Attribute" lineEndContext="#pop" fallthroughContext="Lvl0Text">+ <RegExpr attribute="Integer" context="#pop!Lvl0Text" String="&allInt;(?=&endValue;)"/>+ <RegExpr attribute="Boolean" context="#pop!Lvl0Text" String="&bool;(?=&endValue;)"/>+ <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>+ <RegExpr attribute="Null" context="#pop!Lvl0Text" String="&null;(?=&endValue;)"/>+ <RegExpr attribute="Timestamp" context="#pop!Lvl0Text" String="×tamp;(?=&endValue;)"/>+ </context>++ <context name="Lvl0Text" attribute="Attribute" lineEndContext="#pop">+ <StringDetect attribute="Comment" context="#pop!comment" String="#" column="0"/>+ <StringDetect attribute="Comment" context="#pop!comment" String=" #"/>+ <StringDetect attribute="Comment" context="#pop!comment" String="&tab;#"/>+ <StringDetect attribute="Error" String=": "/>+ <StringDetect attribute="Error" String=":&tab;"/>+ <LineContinue attribute="Error" char=":"/>+ </context>++ <context name="Lvl0SymIndent" attribute="Normal Text" fallthroughContext="#pop" lineEndContext="#pop">+ <DetectSpaces/>+ <StringDetect attribute="Operator" String="- "/>+ <StringDetect attribute="Operator" String="-&tab;"/>+ <StringDetect attribute="Operator" String="? "/>+ <StringDetect attribute="Operator" String="?&tab;"/>+ <StringDetect attribute="Key Points Operator" String=": "/>+ <StringDetect attribute="Key Points Operator" String=":&tab;"/>+ <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="-"/>+ <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="?"/>+ <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineKpOp" char=":"/>+ <RegExpr attribute="Key" String="&keyAttrWithEscape;" context="#pop"/>+ </context>+ <context name="Lvl0SymIndentEndLineOp" attribute="Attribute">+ <AnyChar attribute="Operator" context="#pop#pop" String="?-"/>+ </context>+ <context name="Lvl0SymIndentEndLineKpOp" attribute="Attribute">+ <StringDetect attribute="Operator" context="#pop#pop" String=":"/>+ </context>++ <context name="Lvl0MaybeHeader" attribute="Attribute" fallthroughContext="#pop!Lvl0Text">+ <RegExpr attribute="Document Header" context="#pop" String="^---( +|$)" column="0"/>+ <RegExpr attribute="Integer" context="#pop!Lvl0Text" String="&allInt;(?=&endValue;)"/>+ <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>+ <StringDetect attribute="Operator" context="#pop!Lvl0SymIndent" String="- "/>+ <StringDetect attribute="Operator" context="#pop!Lvl0SymIndent" String="-&tab;"/>+ <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="-"/>+ </context>++ <context name="Lvl0MaybeEOD" attribute="Attribute" fallthroughContext="#pop!Lvl0Text">+ <RegExpr attribute="End of Document" context="#pop!EOD" String="^\.\.\.($| +(?=#|$))" column="0"/>+ <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>+ </context>+ <!--+ @} No indented text+ -->+++ <!--+ @{ Find whitespace+ -->+ <context name="FindSpaces" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">+ <StringDetect attribute="Normal Text" String=" "/>+ <StringDetect attribute="Alert" String="&tab;"/>+ </context>++ <context name="FindBlankLine" attribute="Attribute">+ <RegExpr String="^\s+(?=#|$)" column="0"/>+ </context>+ <!--+ @} Find whitespace+ -->+++ <!--+ @{ # ...+ -->+ <context attribute="Comment" lineEndContext="#pop" name="comment">+ <DetectSpaces/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier/>+ </context>++ <context name="FindSingleComment" attribute="Attribute">+ <DetectChar attribute="Comment" context="comment" char="#"/>+ </context>+ <!--+ @} # ...+ -->+++ <!--+ @{ '...'+ -->+ <context name="StringSq" attribute="String" noIndentationBasedFolding="true">+ <StringDetect attribute="Escaped Character" String="''"/>+ <DetectChar attribute="String" context="#pop" char="'" endRegion="String"/>+ </context>++ <context name="StringSqAsKey" attribute="Key" noIndentationBasedFolding="true">+ <StringDetect attribute="Escaped Character" String="''"/>+ <DetectChar attribute="Key" context="#pop" char="'" endRegion="String"/>+ </context>+ <!--+ @} '...'+ -->+++ <!--+ @{ "..."+ -->+ <context name="StringDq" attribute="String" noIndentationBasedFolding="true">+ <DetectChar lookAhead="true" context="EscapeDq" char="\"/>+ <DetectChar attribute="String" context="#pop" char=""" endRegion="String"/>+ </context>++ <context name="StringDqAsKey" attribute="Key" noIndentationBasedFolding="true">+ <DetectChar lookAhead="true" context="EscapeDq" char="\"/>+ <DetectChar attribute="Key" context="#pop" char=""" endRegion="String"/>+ </context>++ <context name="EscapeDq" attribute="Normal Text">+ <RegExpr attribute="Escaped Character" context="#pop" String="\\([0abtnvfre &tab;"/\\N_LP]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|$)"/>+ <RegExpr attribute="Error" context="#pop" String="\\(?:x[a-fA-F0-9]?|u[a-fA-F0-9]{0,3}|U[a-fA-F0-9]{0,7})?"/>+ </context>+ <!--+ @} "..."+ -->+++ <!--+ @{ KeyOrValue+ - ? xxx+ ~~~~+ key:+ ~~~~+ -->+ <context name="KeyOrValueIndent" attribute="Normal Text" fallthroughContext="#pop#pop#pop#pop#pop">+ <IncludeRules context="FindSingleComment"/>+ <RegExpr attribute="Normal Text" context="#pop#pop#pop#pop#pop!&newValueContexts;" String="&spaceAndOpNewPrefix;" column="0"/>+ <IncludeRules context="FindBlankLine"/>+ <StringDetect context="KeyOrValue" String="&indent;" dynamic="1" column="0"/>+ </context>++ <context name="KeyOrValue" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop#pop#pop!ValueText">+ <IncludeRules context="KeyOrValueCommonBase"/>+ <RegExpr attribute="Key" String="&keyAttrWithEscape;" context="#pop#pop#pop!KeyOrValueKey"/>+ <IncludeRules context="KeyOrValueCommonStr"/>+ <AnyChar lookAhead="1" String="-:?" context="KeyOrValueMaybeOp"/>+ <AnyChar lookAhead="1" context="#pop#pop#pop#pop!ValueLiteral" String="&firstLitChar;"/>+ <AnyChar attribute="Error" context="#pop#pop#pop#pop!ValueText" String="%&listClose;&hashClose;"/>+ </context>++ <context name="KeyOrValueAsKey" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop!ExplicitKeyText">+ <IncludeRules context="KeyOrValueCommonBase"/>+ <IncludeRules context="KeyOrValueCommonStr"/>+ <AnyChar String="-:?" lookAhead="1" context="KeyOrValueAsKeyMaybeOp"/>+ <AnyChar attribute="Error" context="#pop#pop!ExplicitKeyText" String="%&listClose;&hashClose;"/>+ </context>++ <context name="KeyOrValueKey" attribute="Key" fallthroughContext="StringDqAsKey!EscapeDq">+ <StringDetect String=":" attribute="Key Points Operator" context="#pop!ExplicitValuePrefix"/>+ <DetectSpaces attribute="Key"/>+ <StringDetect attribute="Escaped Character" context="StringSqAsKey" String="''"/>+ </context>++ <context name="KeyOrValueMaybeOp" attribute="Attribute">+ <IncludeRules context="KeyOrValueOp"/>+ <AnyChar lookAhead="1" context="#pop#pop#pop#pop!ValueLiteral" String="-"/>+ <AnyChar String="-:?" context="#pop#pop#pop#pop#pop!ValueText"/>+ </context>++ <context name="KeyOrValueAsKeyMaybeOp" attribute="Attribute">+ <IncludeRules context="KeyOrValueOp"/>+ <AnyChar String="-:?" context="#pop#pop#pop!ExplicitKeyText"/>+ </context>++ <context name="KeyOrValueOp" attribute="Attribute">+ <LineContinue attribute="Operator" context="#pop#pop" char="-"/>+ <LineContinue attribute="Operator" context="#pop#pop" char="?"/>+ <LineContinue attribute="Key Points Operator" context="#pop#pop" char=":"/>+ </context>++ <context name="KeyOrValueCommonBase" attribute="Attribute">+ <StringDetect attribute="Operator" String="- "/>+ <StringDetect attribute="Key Points Operator" context="#pop!KeyOrValue" String=": "/>+ <StringDetect attribute="Key Points Operator" context="#pop!KeyOrValue" String=":&tab;"/>+ <StringDetect attribute="Operator" context="#pop!KeyOrValueAsKey" String="? "/>+ <StringDetect attribute="Operator" context="#pop!KeyOrValueAsKey" String="?&tab;"/>++ <IncludeRules context="FindSpaces"/>++ <DetectChar attribute="Comment" context="#pop!comment" char="#"/>++ <IncludeRules context="FindMarker"/>++ <DetectChar attribute="Operator" context="ValueSepOrRoot!List" char="&listOpen;" beginRegion="List"/>+ <DetectChar attribute="Operator" context="ValueSepOrRoot!Hash" char="&hashOpen;" beginRegion="Hash"/>++ <AnyChar attribute="Literal/Folded Operator" context="#pop#pop#pop#pop#pop!BlockHeader" String="|>" beginRegion="Block"/>+ </context>++ <context name="KeyOrValueCommonStr" attribute="Attribute">+ <DetectChar attribute="String" context="ValueSepOrRoot!StringSq" char="'" beginRegion="String"/>+ <DetectChar attribute="String" context="ValueSepOrRoot!StringDq" char='"' beginRegion="String"/>+ </context>++ <context name="ValueSepOrRoot" attribute="Attribute" lineEndContext="#pop#pop#pop#pop#pop#pop#pop" fallthroughContext="#pop">+ <DetectSpaces/>+ <DetectChar attribute="Comment" context="#pop#pop#pop#pop#pop#pop#pop!comment" char="#"/>+ <StringDetect attribute="Key Points Operator" context="#pop#pop#pop#pop!ExplicitValuePrefix" String=": "/>+ <StringDetect attribute="Key Points Operator" context="#pop#pop#pop#pop!ExplicitValuePrefix" String=":&tab;"/>+ <LineContinue attribute="Key Points Operator" context="#pop#pop#pop#pop" char=":"/>+ </context>+ <!--+ @} KeyOrValue+ -->+++ <!--+ @{ marker (alias, reference, tag)+ https://yaml.org/spec/1.2.2/#6821-tag-handles+ https://yaml.org/spec/1.2.2/#692-node-anchors+ https://yaml.org/spec/1.2.2/#71-alias-nodes+ -->+ <context name="FindMarker" attribute="Attribute">+ <DetectChar char="*" attribute="Reference" context="Reference"/>+ <DetectChar char="&" attribute="Alias" context="Alias"/>+ <DetectChar char="!" context="Tag" lookAhead="1"/>+ </context>++ <!-- &alias -->+ <context name="Alias" attribute="Alias" lineEndContext="#pop">+ <AnyChar String=" &tab;,[]{}:" lookAhead="1" context="#pop"/>+ </context>++ <!-- *ref -->+ <context name="Reference" attribute="Reference" lineEndContext="#pop">+ <IncludeRules context="Alias"/>+ </context>++ <context name="Tag" attribute="Attribute">+ <!-- ns_word_char = [-0-9a-zA-Z] -->+ <!-- named tag: !ns_word_char!ns_tag_char -->+ <!-- primary tag: !ns_tag_char -->+ <!-- secondary tag: !!ns_tag_char -->+ <!-- verbatim tag: !<ns_tag_char> -->+ <StringDetect String="!!" attribute="Data Types" context="SecondaryTag"/>+ <StringDetect String="!<" attribute="Tag" context="VerbatimTag"/>+ <StringDetect String="!" attribute="Tag" context="PrimaryTag"/>+ </context>+ <context name="FindTagError" attribute="Tag">+ <StringDetect String="!!" attribute="Error" context="#pop!SecondaryTag"/>+ <StringDetect String="!<" attribute="Error" context="#pop!VerbatimTag"/>+ <StringDetect String="!" attribute="Error" context="#pop!PrimaryTag"/>+ </context>+ <context name="PrimaryTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <IncludeRules context="ns_tag_char"/>+ <DetectChar char="!" attribute="Tag" context="#pop!NamedTag"/>+ </context>+ <context name="NamedTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <IncludeRules context="ns_tag_char"/>+ <IncludeRules context="FindTagError"/>+ </context>+ <context name="SecondaryTag" attribute="Data Types" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <IncludeRules context="ns_tag_char"/>+ <IncludeRules context="FindTagError"/>+ </context>+ <context name="VerbatimTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">+ <IncludeRules context="ns_tag_char"/>+ <DetectChar char=">" attribute="Tag" context="#pop#pop"/>+ <IncludeRules context="FindTagError"/>+ </context>+ <context name="ns_tag_char" attribute="Tag">+ <!-- ns_tag_char + "^," -->+ <AnyChar String="-0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz%#;/?:@&=+$_.~*'()^,"/>+ </context>+ <!--+ @} marker (alias, reference, tag)+ -->+++ <!--+ @{ | and >+ https://yaml.org/spec/1.2.2/#812-literal-style+ https://yaml.org/spec/1.2.2/#813-folded-style++ ```yaml+ - key:+ |+ text+ # ^ final indent (for current indent)+ # ^ final indent for block (last space)+ ```++ ```yaml+ |+ text+ # ^ final indent for block (last space)+ ```+ -->+ <!-- |1+ # dsds+ ~~~~~~~~~+ -->+ <context name="BlockHeader" attribute="Error" lineEndContext="#pop" fallthroughContext="BlockHeaderNoText">+ <AnyChar attribute="Literal/Folded Operator" String="-+123456789"/>+ </context>+ <context name="BlockHeaderNoText" attribute="Error" lineEndContext="#pop#pop">+ <DetectSpaces attribute="Literal/Folded Operator"/>+ <DetectChar attribute="Comment" context="#pop#pop!comment" char="#"/>+ </context>++ <context name="BlockPrefix" attribute="Literal/Folded Block" fallthroughContext="BlockEnd" noIndentationBasedFolding="true">+ <IncludeRules context="FindEmptyLine"/>+ <RegExpr context="BlockIndent!BlockText" String="^(&indent; *)" dynamic="1" column="0"/>+ </context>++ <context name="Lvl0BlockPrefix" attribute="Literal/Folded Block" fallthroughContext="BlockEnd" noIndentationBasedFolding="true">+ <IncludeRules context="FindEmptyLine"/>+ <RegExpr context="BlockIndent!BlockText" String="^( +)" column="0"/>+ </context>++ <context name="BlockIndent" attribute="Literal/Folded Block" fallthroughContext="#pop!BlockEnd" noIndentationBasedFolding="true">+ <StringDetect context="BlockText" String="%1" dynamic="1"/>+ <IncludeRules context="FindEmptyLine"/>+ </context>++ <context name="BlockText" attribute="Literal/Folded Block" lineEndContext="#pop">+ </context>++ <context name="BlockEnd" attribute="Literal/Folded Block">+ <RegExpr lookAhead="1" context="#pop#pop" String="." endRegion="Block"/>+ </context>++ <context name="FindEmptyLine" attribute="Attribute">+ <RegExpr String="^\s+$" column="0"/>+ </context>+ <!--+ @} | and >+ -->+++ <!--+ @{ Value++ (fallthrough) -> root+ ^+ / \+ "ValueTextIndent!ExplicitValueIndent"+ ^ | | ^+ (endline) (indent) (indent) (endline)+ | v v |+ \____ ValueText <~. ExplicitValuePrefix+ | | |+ (fallthrough) | (fallthrough)+ v | v+ root +~~~~ ValueLiteral+ | |+ \___ (fallthrough)+ -->+ <context name="ExplicitValueIndent" attribute="Normal Text" fallthroughContext="#pop#pop#pop">+ <IncludeRules context="FindSingleComment"/>+ <RegExpr attribute="Normal Text" context="#pop#pop#pop!&newValueContexts;" String="&spaceAndOpNewPrefix;" column="0"/>+ <IncludeRules context="FindBlankLine"/>+ <StringDetect context="ExplicitValuePrefix" String="&indent;" dynamic="1" column="0"/>+ </context>++ <context name="ExplicitValuePrefix" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop!ValueText">+ <DetectSpaces/>+ <IncludeRules context="FindMarker"/>+ <DetectChar attribute="Comment" context="#pop!comment" char="#"/>++ <IncludeRules context="FindStr"/>+ <IncludeRules context="FindSeq"/>+ <AnyChar attribute="Literal/Folded Operator" context="#pop#pop#pop!BlockHeader" String="|>" beginRegion="Block"/>++ <StringDetect attribute="Operator" String="- "/>+ <StringDetect attribute="Operator" String="? "/>+ <StringDetect attribute="Operator" String="?&tab;"/>+ <LineContinue context="#pop" attribute="Operator" char="?"/>+ <LineContinue context="#pop" attribute="Operator" char="-"/>+ <AnyChar lookAhead="1" context="#pop#pop!ValueLiteral" String="&firstLitChar;"/>+ <AnyChar attribute="Error" context="#pop#pop!ValueText" String="%&listClose;&hashClose;"/>+ </context>+++ <context name="ValueLiteral" attribute="Attribute" fallthroughContext="#pop!ValueText">+ <RegExpr attribute="Integer" context="#pop!ValueText" String="&allInt;(?=&endValue;)"/>+ <RegExpr attribute="Boolean" context="#pop!ValueText" String="&bool;(?=&endValue;)"/>+ <RegExpr attribute="Float" context="#pop!ValueText" String="&allFloat;(?=&endValue;)"/>+ <RegExpr attribute="Null" context="#pop!ValueText" String="&null;(?=&endValue;)"/>+ <RegExpr attribute="Timestamp" context="#pop!ValueText" String="×tamp;(?=&endValue;)"/>+ </context>+++ <context name="ValueTextIndent" attribute="Attribute" fallthroughContext="#pop#pop">+ <DetectChar attribute="Comment" context="#pop#pop!comment" char="#"/>+ <IncludeRules context="FindBlankLine"/>+ <StringDetect context="ValueText" String="&indent;" dynamic="1" column="0"/>+ </context>++ <context name="ValueText" attribute="Attribute" lineEndContext="#pop">+ <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String="#" column="0"/>+ <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String=" #"/>+ <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String="&tab;#"/>+ <StringDetect attribute="Error" context="#pop#pop#pop" String=": "/>+ <StringDetect attribute="Error" context="#pop#pop#pop" String=":&tab;"/>+ <LineContinue attribute="Error" context="#pop#pop#pop" char=":"/>+ </context>+ <!--+ @} Value+ -->+++ <!--+ @{ Key++ '? ' key+ -->+ <context name="ExplicitKeyTextIndent" attribute="Key" fallthroughContext="#pop#pop#pop#pop#pop">+ <DetectChar attribute="Comment" context="#pop#pop#pop#pop#pop!comment" char="#"/>+ <IncludeRules context="FindBlankLine"/>+ <StringDetect context="ExplicitKeyText" String="&indent;" dynamic="1" column="0"/>+ </context>++ <context name="ExplicitKeyText" attribute="Key" lineEndContext="#pop">+ <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String="#" column="0"/>+ <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String=" #"/>+ <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String="&tab;#"/>+ <StringDetect attribute="Key Points Operator" context="#pop#pop!ExplicitValuePrefix" String=": "/>+ <StringDetect attribute="Key Points Operator" context="#pop#pop!ExplicitValuePrefix" String=":&tab;"/>+ <LineContinue lookAhead="1" context="ValueOnKeyOp" char=":"/>+ </context>++ <context name="ValueOnKeyOp" attribute="Attribute">+ <StringDetect String=":" attribute="Key Points Operator" context="#pop#pop#pop!ExplicitValuePrefix"/>+ </context>+ <!--+ @} Key+ -->+++ <!--+ @{ List and Hash+ -->++ <!-- [ ... ] -->+ <context name="List" attribute="List" fallthroughContext="ListValue" noIndentationBasedFolding="true">+ <DetectChar attribute="Operator" context="#pop" char="&listClose;" endRegion="List"/>+ <IncludeRules context="ElementCommon"/>+ <AnyChar attribute="Error" String=">|%&hashClose;"/>+ </context>++ <!-- { ... } -->+ <context name="Hash" attribute="Hash" fallthroughContext="HashValue" noIndentationBasedFolding="true">+ <DetectChar attribute="Operator" context="#pop" char="&hashClose;" endRegion="Hash"/>+ <IncludeRules context="ElementCommon"/>+ <AnyChar attribute="Error" String=">|%&listClose;"/>+ </context>++ <context name="ElementCommon" attribute="List">+ <DetectSpaces/>+ <DetectChar attribute="Operator" char=","/>+ <IncludeRules context="FindSingleComment"/>+ <IncludeRules context="FindSeq"/>+ <IncludeRules context="FindMarker"/>+ <StringDetect attribute="Operator" context="ListAttr" String=": "/>+ <StringDetect attribute="Operator" context="ListAttr" String=":&tab;"/>+ <LineContinue attribute="Operator" context="ListAttr" char=":"/>++ <RegExpr attribute="Key" context="ListKey" String="&jsonAttrWithEscape;"/>++ <IncludeRules context="FindStr"/>++ <StringDetect attribute="Operator" context="ListExplicitKey" String="? "/>+ <StringDetect attribute="Operator" context="ListExplicitKey" String="?&tab;"/>+ <LineContinue attribute="Operator" context="ListExplicitKey" char="?"/>++ <IncludeRules context="FindDashError"/>+ </context>++ <!-- [ - value ] / [ key: - value ] / { - value } / { key: - value }+ ~ ~ ~ ~+ -->+ <context name="FindDashError" attribute="Error" noIndentationBasedFolding="true">+ <StringDetect attribute="Error" String="- "/>+ <StringDetect attribute="Error" String="-&tab;"/>+ <LineContinue attribute="Error" char="-"/>+ </context>++ <!-- [ ? key ] / { ? key }+ ~~~ ~~~+ -->+ <context name="ListExplicitKey" attribute="Key" fallthroughContext="ListExplicitKeyName" noIndentationBasedFolding="true">+ <DetectSpaces/>+ <IncludeRules context="FindMarker"/>+ <IncludeRules context="FindDashError"/>+ <AnyChar lookAhead="1" context="#pop" String=",[]{}'""/>+ <AnyChar attribute="Error" String=">|"/>+ </context>++ <context name="ListExplicitKeyName" attribute="Key" noIndentationBasedFolding="true">+ <StringDetect attribute="Comment" context="#pop#pop!comment" String="#" column="0"/>+ <StringDetect attribute="Comment" context="#pop#pop!comment" String=" #"/>+ <StringDetect attribute="Comment" context="#pop#pop!comment" String="&tab;#"/>+ <AnyChar lookAhead="1" context="#pop#pop" String=",[]{}"/>+ <StringDetect attribute="Operator" context="#pop#pop!ListAttr" String=": "/>+ <StringDetect attribute="Operator" context="#pop#pop!ListAttr" String=":&tab;"/>+ <LineContinue attribute="Operator" context="#pop#pop!ListAttr" char=":"/>+ <StringDetect attribute="Error" context="#pop" String="? "/>+ <StringDetect attribute="Error" context="#pop" String="?&tab;"/>+ <LineContinue attribute="Error" context="#pop" char="?"/>+ </context>++ <!-- [ key: value ] / { key: value }+ ~ ~+ -->+ <context name="ListKey" attribute="Key" fallthroughContext="StringDqAsKey!EscapeDq" noIndentationBasedFolding="true">+ <StringDetect String=":" attribute="Key Points Operator" context="#pop!ListAttr"/>+ <DetectSpaces attribute="Key"/>+ <StringDetect attribute="Escaped Character" context="StringSqAsKey" String="''"/>+ </context>++ <!-- [ value ]+ ~~~~~+ -->+ <context name="ListValue" attribute="List" fallthroughContext="ListValueText" noIndentationBasedFolding="true">+ <IncludeRules context="ListExplicitKey"/>+ <RegExpr attribute="Integer" context="#pop" String="&allInt;(?=&endValueInline;)"/>+ <RegExpr attribute="Boolean" context="#pop" String="&bool;(?=&endValueInline;)"/>+ <RegExpr attribute="Float" context="#pop" String="&allFloat;(?=&endValueInline;)"/>+ <RegExpr attribute="Null" context="#pop" String="&null;(?=&endValueInline;)"/>+ <RegExpr attribute="Timestamp" context="#pop" String="×tamp;(?=&endValueInline;)"/>+ </context>++ <context name="ListValueText" attribute="List" noIndentationBasedFolding="true">+ <StringDetect attribute="Comment" context="#pop#pop!comment" String="#" column="0"/>+ <StringDetect attribute="Comment" context="#pop#pop!comment" String=" #"/>+ <StringDetect attribute="Comment" context="#pop#pop!comment" String="&tab;#"/>+ <AnyChar lookAhead="1" context="#pop#pop" String=",[]{}"/>+ <StringDetect attribute="Error" context="#pop#pop!ListAttr" String=": "/>+ <StringDetect attribute="Error" context="#pop#pop!ListAttr" String=":&tab;"/>+ <LineContinue attribute="Error" context="#pop#pop!ListAttr" char=":"/>+ <StringDetect attribute="Error" context="#pop#pop!ListExplicitKey" String="? "/>+ <StringDetect attribute="Error" context="#pop#pop!ListExplicitKey" String="?&tab;"/>+ <LineContinue attribute="Error" context="#pop#pop!ListExplicitKey" char="?"/>+ </context>++ <!-- { value }+ ~~~~~+ -->+ <context name="HashValue" attribute="Hash" fallthroughContext="HashValueText" noIndentationBasedFolding="true">+ <IncludeRules context="ListExplicitKey"/>+ </context>+ <context name="HashValueText" attribute="Hash" noIndentationBasedFolding="true">+ <IncludeRules context="ListValueText"/>+ </context>++ <!-- [ key: value ] / { key: value }+ ~~~~~ ~~~~~+ -->+ <context name="ListAttr" attribute="Attribute" fallthroughContext="ListAttrText" noIndentationBasedFolding="true">+ <IncludeRules context="ListValue"/>+ </context>++ <context name="ListAttrText" attribute="Attribute" noIndentationBasedFolding="true">+ <IncludeRules context="ListValueText"/>+ </context>+ <!--+ @} List and Hash+ -->+++ <context attribute="Error" lineEndContext="#stay" name="EOD">+ <DetectChar attribute="Comment" context="#pop!comment" char="#"/>+ <DetectChar attribute="Error" context="#pop!List" char="&listOpen;" beginRegion="List"/>+ <DetectChar attribute="Error" context="#pop!Hash" char="&hashOpen;" beginRegion="Hash"/>+ <DetectChar attribute="Error" context="#pop!StringSq" char="'" beginRegion="String"/>+ <DetectChar attribute="Error" context="#pop!StringDq" char='"' beginRegion="String"/>+ </context>++ <context attribute="Directive" lineEndContext="#pop" name="Directive">+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsAttribute"/>+ <itemData name="Attribute" defStyleNum="dsAttribute"/>+ <itemData name="List" defStyleNum="dsAttribute"/>+ <itemData name="Hash" defStyleNum="dsAttribute"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="End of Document" defStyleNum="dsComment"/>+ <itemData name="Document Header" defStyleNum="dsPreprocessor"/>+ <itemData name="Data Types" defStyleNum="dsOthers"/>+ <itemData name="Tag" defStyleNum="dsOthers"/>+ <itemData name="Alias" defStyleNum="dsOthers"/>+ <itemData name="Reference" defStyleNum="dsOthers"/>+ <itemData name="Key" defStyleNum="dsFunction" bold="1"/>+ <itemData name="Directive" defStyleNum="dsPreprocessor"/>+ <itemData name="Key Points Operator" defStyleNum="dsKeyword"/>+ <itemData name="Operator" defStyleNum="dsKeyword"/>+ <itemData name="String" defStyleNum="dsString"/>+ <itemData name="Escaped Character" defStyleNum="dsSpecialChar"/>+ <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1"/>+ <itemData name="Literal/Folded Block" defStyleNum="dsNormal"/>+ <itemData name="Null" defStyleNum="dsChar"/>+ <itemData name="Boolean" defStyleNum="dsChar"/>+ <itemData name="Integer" defStyleNum="dsDecVal"/>+ <itemData name="Float" defStyleNum="dsFloat"/>+ <itemData name="Timestamp" defStyleNum="dsBaseN"/>+ <itemData name="Error" defStyleNum="dsError"/>+ <itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A"/>+ </itemDatas>+ </highlighting>++ <general>+ <folding indentationsensitive="1"/>+ <emptyLines>+ <emptyLine regexpr="(?:\s+|\s*#.*)"/>+ </emptyLines>+ <comments>+ <comment name="singleLine" start="#" position="afterwhitespace"/> </comments> <keywords casesensitive="1"/> </general>
xml/zig.xml view
@@ -7,7 +7,7 @@ <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)"> <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)"> ]>-<language name="Zig" section="Sources" version="3" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">+<language name="Zig" section="Sources" version="4" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT"> <highlighting> <list name="keywords"> <item>addrspace</item>@@ -234,6 +234,8 @@ <keyword attribute="Control Flow" context="#stay" String="controlflow"/> <keyword attribute="Modifiers" context="#stay" String="modifiers"/> <WordDetect attribute="Self Variable" String="self"/>+ <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />+ <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" /> <!-- <AnyChar context="SpecialType" String="iu" lookAhead="1"/> --> <DetectIdentifier/> </context>
xml/zsh.xml view
@@ -1,2172 +1,2987 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language [- <!ENTITY tab "	">- <!ENTITY funcname "[^&_fragpathseps;=]*+">- <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">- <!ENTITY eos "(?=$|[ &tab;])"> <!-- eol or space following -->- <!ENTITY eoexpr "(?=$|[ &tab;<>|&;)])">-- <!ENTITY substseps "${}'"`\\">- <!ENTITY symbolseps "<>|&;()">- <!ENTITY wordseps " &tab;&symbolseps;">- <!ENTITY wordseps_or_extglog " &tab;>|&;)`"> <!-- wordseps without < and ( -->-- <!ENTITY bq_string "`[^`]*+`">- <!ENTITY sq_string "'[^']*+'">- <!ENTITY dq_string ""(?:[^"\\`]*+|&bq_string;|\\.)*+"">- <!ENTITY strings "(?:&sq_string;|&dq_string;|&bq_string;)">-- <!ENTITY simpleglob "*?#^~">- <!ENTITY globrange "<[0-9]*-[0-9]*>">- <!ENTITY globany "\[(?:[^&wordseps;"'`\\\[\]]+|\\.|&strings;|\[:\w+:\]|\[)*\]">-- <!ENTITY _fragpathseps "&simpleglob;[&wordseps;&substseps;">- <!ENTITY _fragpathnosep "(?:&_brace_noexpansion;)?+">- <!ENTITY path "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">- <!ENTITY fragpath "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">- <!ENTITY fragpathesc "\\.(?:[^&_fragpathseps;/]*+(?:\\.|&_brace_noexpansion;)?+)*+">- <!ENTITY opt "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">- <!ENTITY assumepath "/&path;|(?=[&simpleglob;([]|&globrange;)">- <!ENTITY pathpart "(?:~(?:/&path;|(?=[&wordseps;]|$))|&fragpath;(?:&assumepath;|(?=&fragpathesc;&assumepath;))|\.\.?(?=[&wordseps;]|$))">-- <!-- Path only with / -->- <!ENTITY path_with_sep_text "[^[&wordseps;'"`\\/]">- <!ENTITY path_with_sep_text2 "[^[()<>'"`\\/]">- <!ENTITY path_with_sep_expr "\\.|&strings;|&globany;|&globrange;">- <!ENTITY path_with_sep_spe "(~|\.\.?)($|[/ &tab;<>|&;)])">- <!ENTITY path_with_sep_sub "\((&path_with_sep_text2;++|&path_with_sep_expr;)*+(\)|(?=/))">- <!ENTITY path_with_sep "/|&path_with_sep_spe;|(&path_with_sep_text;++|&path_with_sep_expr;|&path_with_sep_sub;)*+/">-- <!ENTITY _braceexpansion_spe " &tab;<>|&;{}\\`'"$">- <!ENTITY _brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}">- <!ENTITY _braceexpansion_var "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">- <!ENTITY _braceexpansion_elems "\\.|&strings;|&_braceexpansion_var;|&_brace_noexpansion;">- <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">- <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">- <!ENTITY braceexpansion "{&_braceexpansion;">-- <!ENTITY _bracerangevar "\$([#+^=~]*([_a-zA-Z0-9]+|[*@#])(\[((\$[#+^=~]*)?([-+_a-zA-Z0-9]+|[*@])|$#)\])?|#|'(\\.|[^'\\])')">- <!ENTITY _bracerangeoperand "-?([0-9]+|[a-zA-Z!#$%*+,-./:=?@^_~]|&_bracerangevar;|\\.|'[^'\\]'|"(\\.|[^"\\`])"|`[^`]*`)">- <!ENTITY bracerangeexpansion "{(?=&_bracerangeoperand;\.\.&_bracerangeoperand;(\.\.-?([0-9]+|&_bracerangevar;))?})">-- <!ENTITY nobraceexpansion "(?:{([^&_braceexpansion_spe;/{},]++|(?R))+?})+">- <!ENTITY nogroupend "(?:}+(?:[^&_fragpathseps;]|(?=[}$'"`\\])))">-- <!-- glob with |, ( or spaces is a pattern -->- <!ENTITY _ispattern_ugN "[ug][0123456789]+">- <!ENTITY _ispattern_ugeP "[ugeP](?:&_ispattern_ugeP_0;|&_ispattern_ugeP_1;|&_ispattern_ugeP_2;|&_ispattern_ugeP_3;|&_ispattern_ugeP_4;|(?=\|))">- <!ENTITY _ispattern_ugeP_0 ":(?:[^:'`"\\|()]*+(?:&_ispattern_q;)?)*(?::|(?=[|()]))">- <!ENTITY _ispattern_ugeP_1 "\[(?:[^]'`"\\|()]*+(?:&_ispattern_q;)?)*(?:\](?=[|()]))">- <!ENTITY _ispattern_ugeP_2 "{(?:[^}'`"\\|()]*+(?:&_ispattern_q;)?)*(?:}(?=[|()]))">- <!ENTITY _ispattern_ugeP_3 "<(?:[^>'`"\\|()]*+(?:&_ispattern_q;)?)*(?:>|(?=[|()]))">- <!ENTITY _ispattern_ugeP_4 "([^&wordseps;{}'"`\\])(?:(?:(?!\1)[^'`"\\\1|()])*+(?:&_ispattern_q;)?)*(?:\1|(?=[|()]))">- <!ENTITY _ispattern_q "\\.|&strings;">- <!ENTITY _ispattern_check "(?:\)(?:[^ &tab;}<>|&;)]|&nogroupend;)|[ &tab;|(]|$)">- <!ENTITY ispattern "(?:[^ &tab;\\'"|()`ugeP]*+(?:&_ispattern_ugN;|&_ispattern_ugeP;|&_ispattern_q;)?)*&_ispattern_check;">-- <!ENTITY heredocq "(?|"([^"]+)"|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">-- <!ENTITY arithmetic_as_subshell "\(((?:[^`'"()$]++|\$\{[^`'"(){}$]+\}|\$(?=[^{`'"()])|&bq_string;|\((?1)(?:[)]|(?=['"])))++)(?:[)](?=$|[^)])|["'])">-- <!ENTITY unary_operators "-[abcdefghknoprstuvwxzLOGNS](?=\\?$|[ &tab;])">- <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[ &tab;])">-- <!ENTITY dblbracket_close "\]\](?=($|[ &tab;;|&)]))">-- <!ENTITY int "(?:[0-9]++[_0-9]*+)">- <!ENTITY exp "(?:[eE][-+]?∫)">-]>--<!---https://zsh.sourceforge.io/releases.html-current: 5.9--->--<language name="Zsh" version="34" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">-- <highlighting>- <list name="keywords">- <item>continue</item>- <item>break</item>- <item>case</item>- <item>do</item>- <item>done</item>- <item>elif</item>- <item>else</item>- <item>end</item>- <item>esac</item>- <item>fi</item>- <item>for</item>- <item>foreach</item>- <item>function</item>- <item>if</item>- <item>in</item>- <item>repeat</item>- <item>return</item>- <item>select</item>- <item>then</item>- <item>until</item>- <item>while</item>- </list>--<list name="builtins"><!-- see man zshbuiltins -->- <item>-</item>- <item>.</item>- <item>:</item>- <item>alias</item>- <item>autoload</item>- <item>bg</item>- <item>bindkey</item>- <item>builtin</item>- <item>bye</item>- <item>cap</item>- <item>cd</item>- <item>chdir</item>- <item>clone</item>- <item>command</item>- <item>comparguments</item>- <item>compcall</item>- <item>compctl</item>- <item>compdescribe</item>- <item>compfiles</item>- <item>compgroups</item>- <item>compquote</item>- <item>comptags</item>- <item>comptry</item>- <item>compvalues</item>- <item>coproc</item>- <item>dirs</item>- <item>disable</item>- <item>disown</item>- <item>echo</item>- <item>echotc</item>- <item>echoti</item>- <item>emulate</item>- <item>enable</item>- <item>eval</item>- <item>exec</item>- <item>exit</item>- <item>false</item>- <item>fc</item>- <item>fg</item>- <item>functions</item>- <item>getcap</item>- <item>hash</item>- <item>history</item>- <item>jobs</item>- <item>kill</item>- <item>limit</item>- <item>log</item>- <item>logout</item>- <item>nocorrect</item>- <item>noglob</item>- <item>popd</item>- <item>print</item>- <item>printf</item>- <item>pushd</item>- <item>pushln</item>- <item>pwd</item>- <item>r</item>- <item>rehash</item>- <item>sched</item>- <item>set</item>- <item>setcap</item>- <item>setopt</item>- <item>shift</item>- <item>source</item>- <item>stat</item>- <item>suspend</item>- <item>test</item>- <item>times</item>- <item>trap</item>- <item>true</item>- <item>ttyctl</item>- <item>type</item>- <item>ulimit</item>- <item>umask</item>- <item>unalias</item>- <item>unfunction</item>- <item>unhash</item>- <item>unlimit</item>- <item>unset</item>- <item>unsetopt</item>- <item>vared</item>- <item>wait</item>- <item>whence</item>- <item>where</item>- <item>which</item>- <item>zcompile</item>- <item>zformat</item>- <item>zftp</item>- <item>zle</item>- <item>zmodload</item>- <item>zparseopts</item>- <item>zprof</item>- <item>zpty</item>- <item>zregexparse</item>- <item>zsocket</item>- <item>zstyle</item>- <item>ztcp</item>- </list>-- <list name="builtins_var">- <item>declare</item>- <item>export</item>- <item>float</item>- <item>getln</item>- <item>getopts</item>- <item>integer</item>- <item>let</item>- <item>local</item>- <item>read</item>- <item>readonly</item>- <item>typeset</item>- <item>unset</item>- </list>-- <list name="unixcommands">- <include>unixcommands##Bash</include>- </list>-- <contexts>- <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- <!-- start expression in double parentheses -->- <Detect2Chars context="ExprDblParenOrSubShell" char="(" char1="(" lookAhead="1"/>- <!-- start a subshell -->- <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/>- <!-- start expression in single/double brackets -->- <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/>- <!-- start a group command or BraceExpansion with { -->- <DetectChar attribute="Keyword" context="Group" char="{" beginRegion="group"/>-- <!-- handle ` -->- <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>-- <!-- &> redirections -->- <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/>- <Detect2Chars attribute="Control" context="#stay" char="&" char1="!"/>-- <!-- handle branche conditions -->- <Detect2Chars attribute="Control" context="#stay" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>-- <!-- handle &, |, ; -->- <AnyChar attribute="Control" context="#stay" String="&|;"/>-- <!-- handle variable assignments -->- <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))|[0-9]+(?=\+?=)"/>- <!-- handle keywords -->- <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/>- <!-- handle commands that have variable names as argument -->- <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>- <WordDetect attribute="Builtin" context="#stay" String="noglob"/>- <WordDetect attribute="Builtin" context="#stay" String="coproc"/>- <!-- mark function definitions without function keyword -->- <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/>- <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>- <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>-- <!-- handle redirection -->- <AnyChar context="CommandMaybeRedirection" String="<>0123456789" lookAhead="1"/>-- <DetectChar attribute="Error" context="#stay" char=")"/>- <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>-- <LineContinue attribute="Escape" context="#stay"/>-- <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">- <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/>- <DetectChar attribute="Error" context="#pop" char="}"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">- <!-- start expression in double brackets -->- <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>- <!-- start expression in single brackets -->- <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command">- <IncludeRules context="FindRedirection"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <Int attribute="Number" context="#stay"/>- </context>- <!-- Comment consumes shell comments till EOL -->- <context attribute="Comment" lineEndContext="#pop" name="Comment">- <DetectSpaces attribute="Comment"/>- <IncludeRules context="##Comments"/>- <DetectIdentifier attribute="Comment" context="#stay"/>- </context>-- <!-- Group is called after a { is encountered -->- <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command">- <DetectChar attribute="Keyword" context="#pop!GroupEnd" char="}" endRegion="group"/>- <IncludeRules context="Start"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="GroupEnd" fallthroughContext="#pop!CommandArgs">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <WordDetect attribute="Control Flow" context="#pop" String="always"/>- </context>-- <context attribute="OtherCommand" lineEndContext="#pop" name="Command">- <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>- <DetectIdentifier attribute="OtherCommand" context="#stay"/>- <DetectChar context="CommandVariables" char="$" lookAhead="1"/>- <IncludeRules context="FindStrings"/>- <Detect2Chars attribute="Control" context="#pop" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/>- <DetectChar attribute="Control" context="#pop" char="|"/>- <AnyChar context="#pop" String=";)`" lookAhead="1"/>- <AnyChar context="#pop!CommandArgs" String="&<>" lookAhead="1"/>- <!-- start expression in double parentheses -->- <Detect2Chars attribute="Error" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>- <!-- start a subshell -->- <DetectChar attribute="Error" context="#pop!SubShell" char="(" beginRegion="subshell"/>- <DetectChar context="CommandAssumeEscape" char="\" lookAhead="1"/>- <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="CommandMaybeGroupEnd" char="}" lookAhead="1"/>- </context>- <context attribute="Command" lineEndContext="#pop" name="CommandVariables">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="OtherCommand" context="#pop" char="$"/>- </context>- <context attribute="OtherCommand" lineEndContext="#pop" name="CommandAssumeEscape">- <LineContinue attribute="Escape" context="#pop"/>- <RegExpr attribute="OtherCommand" context="#pop" String="\\."/>- </context>- <context attribute="OtherCommand" lineEndContext="#pop" name="CommandMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="OtherCommand" context="#pop" char="{"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeGroupEnd">- <RegExpr attribute="OtherCommand" context="#pop" String="&nogroupend;+"/>- <DetectChar context="#pop#pop" char="}" lookAhead="1"/>- </context>-- <context attribute="Variable" lineEndContext="#pop" name="DispatchVariables">- <IncludeRules context="DispatchSubstVariables"/>- <IncludeRules context="DispatchStringVariables"/>- <IncludeRules context="DispatchVarNameVariables"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="DispatchSubstVariables">- <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>- <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="DispatchStringVariables">- <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>- <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="""/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="DispatchVarNameVariables">- <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[0-9]+|[-*@?$!#~=^+])"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="VarNamePrefixedWithDollar">- <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>- <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="$"/>- <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam" String="~=^"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="VarNameSubstLen" fallthroughContext="#pop!AfterVarName">- <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>- <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>- <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="#~=^+{}[]:-/$"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="VarNameParam" fallthroughContext="#pop!AfterVarName">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/>- <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="^=~"/>- <IncludeRules context="VarNameSubstLen"/>- </context>- <context attribute="Variable" lineEndContext="#pop" name="VarNameParam+" fallthroughContext="#pop">- <IncludeRules context="VarNameSubstLen"/>- </context>-- <!-- called as soon as $xxx is encoutered -->- <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarName" fallthroughContext="#pop">- <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameDispatchModifiers" fallthroughContext="#pop#pop">- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="a"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="A"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="c"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="e"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="h"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="l"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="p"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="P"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="q"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="Q"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="r"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_s" char=":" char1="s"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="t"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="u"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="x"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="&"/>- <StringDetect attribute="Parameter Expansion" context="#pop!VarNameModifier_s" String=":gs"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameModifier_h" fallthroughContext="#pop">- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- </context>- <context attribute="Parameter Expansion Operator" lineEndContext="#pop#pop" name="VarNameModifier_s" fallthroughContext="#pop#pop">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Str" char="/"/>- </context>- <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Str">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="/"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="""/>- <DetectChar attribute="String SingleQ" context="#pop" char="'"/>- </context>- <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep">- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>- <AnyChar context="#pop#pop" String=" &tab;<>|&;()" lookAhead="1"/>- <DetectIdentifier attribute="String SingleQ"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command">- <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/>- <DetectChar attribute="Comment" context="CommentBackq" char="#"/>- <IncludeRules context="Start"/>- </context>- <!-- CommentBackq consumes shell comments till EOL or a backquote -->- <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">- <DetectChar context="#pop" char="`" lookAhead="1"/>- <IncludeRules context="Comment"/>- </context>-- <!-- CommandArgs matches the items after a command -->- <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg">- <DetectSpaces attribute="Normal Text" context="#stay"/>-- <!-- &> redirections -->- <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/>-- <!-- handle &, |, ;, ` -->- <AnyChar context="#pop" String="&|;`" lookAhead="1"/>-- <!-- handle process subst -->- <Detect2Chars attribute="Redirection" context="ProcessSubst" char="=" char1="("/>- <!-- handle redirection -->- <AnyChar context="CommandArgMaybeRedirection" String="><0123456789" lookAhead="1"/>-- <DetectChar context="#pop" char=")" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption">- <!-- In command arguments, do not allow comments after escaped characters.- This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->- <DetectChar context="#pop#pop" char="#" lookAhead="1"/>- <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/>- <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>- <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption">- <IncludeRules context="FindRedirection"/>- </context>-- <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">- <DetectChar attribute="Path" context="PathThenPop" char="/"/>- <IncludeRules context="LongOption"/>- </context>- <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">- <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSingleGlob"/>- <IncludeRules context="FindGlobAny"/>- <AnyChar context="#pop!NormalOption" String="({}<" lookAhead="1"/>- <RegExpr attribute="Option" context="#stay" String="&opt;"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">- <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <DetectChar attribute="Glob" context="PathThenPop" char="[" lookAhead="1"/>- <DetectChar context="ExprGlobParenThenPath" char="(" lookAhead="1"/>- <IncludeRules context="FindPathThenPop"/>- <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>- <IncludeRules context="FindNormalTextOption"/>- <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="NormalOptionRecBrace">- <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSingleGlob"/>- <IncludeRules context="FindGlobAny"/>- <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar attribute="Normal Text" context="#pop" char="}"/>- <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>- <DetectIdentifier/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeGroupEnd">- <IncludeRules context="FindNoGroupEndThenPop"/>- <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="FindNoGroupEndThenPop">- <RegExpr context="#pop" String="&nogroupend;"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption">- <RegExpr attribute="Normal Text" context="#stay" String="([^[&wordseps;&substseps;]+|&nogroupend;)+"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Normal Text" context="#pop!NormalOptionRecBrace" char="{"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape">- <LineContinue attribute="Escape" context="#pop"/>- <RegExpr attribute="Escape" context="#pop" String="\\."/>- </context>--<!-- ====== The following rulessets are meant to be included ======== -->-- <!-- FindRedirection consumes shell redirection -->- <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection">- <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[<>])"/>- <IncludeRules context="AssumeRedirection"/>- </context>-- <!-- DispatchBraceExpansion consumes brace expansions -->- <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion">- <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>- <IncludeRules context="IncBraceExpansion"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="DispatchPathBraceExpansion">- <RegExpr context="#pop!PathBraceExpansion" String="&braceexpansion;" lookAhead="1"/>- <IncludeRules context="IncBraceExpansion"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="IncBraceExpansion">- <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="&bracerangeexpansion;"/>- <RegExpr context="#pop" String="&nobraceexpansion;"/>- </context>-- <!-- FindPathThenPop consumes path -->- <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">- <AnyChar attribute="Glob" context="PathThenPop" String="?*#^"/>- <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>- <DetectChar attribute="Glob" context="PathThenPop" char="~"/>- </context>- <context attribute="Path" lineEndContext="#pop#pop" name="IncPath">- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSingleGlob"/>- <IncludeRules context="FindGlobAny"/>- <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>- <RegExpr attribute="Path" context="#stay" String="&path;"/>- <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>- <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>- </context>- <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">- <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <IncludeRules context="IncPath"/>- <DetectChar context="PathMaybeGroupEnd" char="}" lookAhead="1"/>- <DetectIdentifier attribute="Path"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="PathRecBrace">- <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <IncludeRules context="IncPath"/>- <DetectChar attribute="Path" context="#pop" char="}"/>- <DetectIdentifier attribute="Path"/>- </context>- <context attribute="Glob" lineEndContext="#stay" name="MaybeGlobRangeOrPop" fallthroughContext="#pop#pop">- <IncludeRules context="FindGlobRangeThenPop"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion">- <IncludeRules context="DispatchPathBraceExpansion"/>- <DetectChar attribute="Path" context="#pop!PathRecBrace" char="{"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="PathMaybeGroupEnd">- <IncludeRules context="FindNoGroupEndThenPop"/>- <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>- </context>- <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeThenPop">- <RegExpr attribute="Glob" context="#pop!InGlobRange" String="<(?=[0-9]*-[0-9]*>)"/>- </context>- <context attribute="Number" lineEndContext="#stay" name="InGlobRange">- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- <DetectChar attribute="Glob" context="#stay" char="-"/>- <DetectChar attribute="Glob" context="#pop" char=">"/>- </context>-- <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->- <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">- <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="&simpleglob;|"/>- <Detect2Chars context="PathThenPopInAlternateValue" char="(" char1="#" lookAhead="1"/>- <AnyChar context="PathThenPopInAlternateValue" String="[(" lookAhead="1"/>- <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart;"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="PathThenPopInAlternateValue">- <AnyChar context="#pop" String="&wordseps_or_extglog;}" lookAhead="1"/>- <IncludeRules context="IncPath"/>- <DetectIdentifier/>- </context>-- <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny">- <DetectChar attribute="Glob" context="GlobAnyFlag" char="["/>- </context>- <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAny">- <DetectChar attribute="Glob Flag" context="#pop!GlobAny" char="^"/>- </context>- <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAny">- <DetectIdentifier attribute="String SingleQ"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="Glob Flag" context="#stay" char="-"/>- <IncludeRules context="FindStrings"/>- <DetectChar attribute="Glob" context="#pop" char="]"/>- <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/>- </context>- <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass">- <DetectIdentifier attribute="Pattern"/>- <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/>- <DetectChar attribute="Error" context="#pop" char="]"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindSingleGlob">- <AnyChar attribute="Glob" context="#stay" String="&simpleglob;"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindGlobPattern">- <AnyChar attribute="Glob" context="#stay" String="&simpleglob;|"/>- <IncludeRules context="FindGlobAny"/>- <IncludeRules context="FindGroupPattern"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindPattern">- <IncludeRules context="FindGlobPattern"/>- <DetectChar context="GlobRangeOrError" char="<" lookAhead="1"/>- </context>- <context attribute="Glob" lineEndContext="#stay" name="GlobRangeOrError">- <IncludeRules context="FindGlobRangeThenPop"/>- <DetectChar attribute="Error" context="#pop" char="<"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindSubPattern">- <IncludeRules context="FindGlobPattern"/>- <DetectChar context="GlobRangeOrPattern" char="<" lookAhead="1"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="GlobRangeOrPattern">- <IncludeRules context="FindGlobRangeThenPop"/>- <DetectChar attribute="Pattern" context="#pop" char="<"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindStringDQPattern">- <IncludeRules context="FindGlobPattern"/>- <DetectChar context="GlobRangeOrStringDQ" char="<" lookAhead="1"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobRangeOrStringDQ">- <IncludeRules context="FindGlobRangeThenPop"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="<"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#stay" name="FindGroupPattern">- <Detect2Chars attribute="Glob Flag" context="GlobPatFlag" char="(" char1="#"/>- <DetectChar attribute="Glob" context="ExtGlobPattern" char="("/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPattern">- <DetectChar attribute="Glob" context="#pop" char=")"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSubPattern"/>- <DetectIdentifier attribute="Pattern"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPatternThenPath">- <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSubPattern"/>- <DetectIdentifier attribute="Pattern"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- <DetectChar attribute="Operator" context="#pop!Assign" char="="/>- <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">- <!-- match do and if blocks -->- <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>- <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>- <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>- <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>- <!-- handle while/until as a special case -->- <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>- <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>- <!-- handle for as a special case -->- <StringDetect attribute="Control Flow" context="#pop!Foreach" String="foreach"/>- <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>- <!-- handle select as a special case -->- <StringDetect attribute="Control Flow" context="#pop!Select" String="select"/>- <StringDetect attribute="Control Flow" context="#pop!Repeat" String="repeat"/>- <!-- handle case as a special case -->- <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/>- <!-- handle functions with function keyword before keywords -->- <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/>- <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/>- <!-- not a keyword in this context -->- <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/>- <StringDetect attribute="Error" context="#pop" String="esac"/>- <!-- handle keywords -->- <DetectIdentifier attribute="Control Flow" context="#pop"/>- </context>-- <!-- if ! ... and while ! ... -->- <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">- <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">- <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>- <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>- <LineContinue attribute="Expression" context="#pop" char="!"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="Foreach" fallthroughContext="#pop">- <LineContinue attribute="Escape" context="#stay"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectIdentifier attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ForeachWord" fallthroughContext="NormalOption">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Control" context="#stay" char=";"/>- <DetectChar attribute="Keyword" context="#pop" char=")"/>- <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>- <AnyChar attribute="Control" context="#stay" String="&symbolseps;"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">- <LineContinue attribute="Escape" context="#stay"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>- <DetectIdentifier attribute="Normal Text" context="#stay"/>- <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/>- <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Control" context="#stay" char=";"/>- <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/>- <IncludeRules context="FindExprDblParen"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="Select" fallthroughContext="#pop">- <LineContinue attribute="Escape" context="#stay"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectIdentifier attribute="Normal Text" context="#pop!SelectIn"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="SelectIn" fallthroughContext="#pop">- <LineContinue attribute="Escape" context="#stay"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="Repeat" fallthroughContext="#pop!RepeatArithmeticExpr">- <LineContinue attribute="Escape" context="#stay"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="RepeatArithmeticExpr">- <DetectSpaces attribute="Normal Text" context="#pop"/>- <DetectChar attribute="Control" context="#pop" char=";"/>- <IncludeRules context="FindExprDblParen"/>- </context>-- <!-- &> and &>> redirection -->- <context attribute="Normal Text" lineEndContext="#pop" name="Prefix&>" fallthroughContext="#pop!FdRedirection">- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>- <AnyChar attribute="Redirection" context="#pop!WordRedirection" String=">|!"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection">- <!-- handle output redirection -->- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>|"/>- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>!"/>- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&|"/>- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&!"/>- <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String=">>("/>- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&|"/>- <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&!"/>- <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&"/>- <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>- <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>- <!-- handle input redirection -->- <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="<" char1="("/>- <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String="<<("/>- <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="<<<"/>- <!-- handle here document -->- <Detect2Chars context="#pop!HereDoc" char="<" char1="<" lookAhead="1"/>- <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="<" char1="&"/>- <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="<" char1=">"/>- <IncludeRules context="FindGlobRangeThenPop"/>- <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="<"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">- <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">- <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">- <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">- <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">- <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">- <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <DetectIdentifier attribute="Normal Text"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">- <DetectChar attribute="Keyword" context="#pop" char="-"/>- </context>-- <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->- <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">- <RegExpr attribute="Redirection" context="HereDocIQ" String="<<-[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>- <RegExpr attribute="Redirection" context="HereDocINQ" String="<<-[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>- <RegExpr attribute="Redirection" context="HereDocQ" String="<<[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>- <RegExpr attribute="Redirection" context="HereDocNQ" String="<<[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>-- <RegExpr context="HereDocIQCmd" String="(<<-[ &tab;]*&heredocq;)" lookAhead="1"/>- <RegExpr context="HereDocINQCmd" String="(<<-[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>- <RegExpr context="HereDocQCmd" String="(<<[ &tab;]*&heredocq;)" lookAhead="1"/>- <RegExpr context="HereDocNQCmd" String="(<<[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>-- <Detect2Chars attribute="Redirection" context="#pop" char="<" char1="<"/><!-- always met -->- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">- <AnyChar context="ZshOneLine" String="&|;`" lookAhead="1"/>- <IncludeRules context="CommandArgs"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ZshOneLine" fallthroughContext="Command">- <IncludeRules context="Start"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="1" fallthroughContext="HereDocText">- <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions">- <IncludeRules context="HereDocQ" />- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText">- <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions">- <IncludeRules context="HereDocIQ" />- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">- <!-- Only if the redirect is before the command, but as this is too complicated,- check if the redirect is at the beginning of the line. -->- <StringDetect attribute="Redirection" context="ZshOneLine" String="%1" dynamic="true" firstNonSpace="1"/>- <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText">- <IncludeRules context="HereDocCmd"/>- <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">- <IncludeRules context="HereDocQCmd"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText">- <IncludeRules context="HereDocCmd"/>- <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>- </context>-- <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">- <IncludeRules context="HereDocIQCmd"/>- </context>-- <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">- </context>-- <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">- <DetectSpaces attribute="Here Doc"/>- <DetectIdentifier attribute="Here Doc"/>- <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- </context>- <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables">- <IncludeRules context="DispatchSubstVariables"/>- <IncludeRules context="DispatchVarNameVariables"/>- <DetectChar attribute="Here Doc" context="#pop" char="$"/>- </context>-- <!-- VarName consumes spare variable names and assignments -->- <context attribute="Normal Text" lineEndContext="#pop" name="VarName">- <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/>- <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/>- <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/>- <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:-"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs">- <DetectSpaces attribute="Normal Text" context="VarNameArg"/>- <LineContinue attribute="Escape" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2">- <!-- In command arguments, do not allow comments after escaped characters.- This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->- <DetectChar context="#pop#pop" char="#" lookAhead="1"/>- <AnyChar attribute="Option" context="#pop!ShortOption" String="-+"/>- <DetectChar attribute="Keyword" context="#pop!VarNameArg2" char="="/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption">- <DetectChar attribute="Variable" context="Subscript" char="["/>- <DetectChar attribute="Operator" context="Assign" char="="/>- <DetectChar attribute="Variable" context="AssignArray" char="("/>- <DetectIdentifier attribute="Variable" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs">- <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/>- <LineContinue attribute="Escape" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2">- <DetectChar context="#pop#pop" char="#" lookAhead="1"/>- <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption">- <DetectChar attribute="Operator" context="#stay" char=":"/>- <DetectIdentifier attribute="Normal Text" context="#stay" />- <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/>- <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>- <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs">- <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs">- <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/>- <LineContinue attribute="Escape" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg">- <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/>- <IncludeRules context="CommandArgs"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg">- <IncludeRules context="FindRedirection"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr">- <DetectChar context="#pop#pop" char="#" lookAhead="1"/>- <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption">- <DetectIdentifier attribute="Variable" context="#stay" />- <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>- <AnyChar attribute="Operator" context="#stay" String="+-!%=^:"/>- <AnyChar context="Number" String="0123456789." lookAhead="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- <IncludeRules context="FindWord"/>- <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/>- <DetectChar attribute="Error" context="#stay" char="#"/>- <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>- </context>-- <!-- ProcessSubst handles <(command) and >(command) -->- <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">- <DetectChar attribute="Redirection" context="#pop" char=")"/>- <IncludeRules context="Start"/>- </context>-- <!-- StringSQ consumes anything till ' -->- <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">- <DetectSpaces attribute="String SingleQ"/>- <DetectIdentifier attribute="String SingleQ"/>- <DetectChar attribute="String SingleQ" context="#pop" char="'"/>- </context>-- <!-- StringDQ consumes anything till ", substitutes vars and expressions -->- <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">- <DetectSpaces attribute="String DoubleQ"/>- <DetectIdentifier attribute="String DoubleQ"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="""/>- <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>- <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">- <IncludeRules context="DispatchSubstVariables"/>- <IncludeRules context="DispatchVarNameVariables"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">- <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="""/>- <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/>- <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>- <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>- <LineContinue attribute="String Escape" context="#pop"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>- </context>-- <!-- RegularBackq consumes anything till ` -->- <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">- <DetectChar attribute="Backquote" context="#pop" char="`"/>- <DetectChar attribute="Comment" context="CommentBackq" char="#"/>- <IncludeRules context="Start"/>- </context>-- <!-- StringEsc eats till ', but escaping many characters -->- <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">- <DetectSpaces attribute="String SingleQ"/>- <DetectIdentifier attribute="String SingleQ"/>- <DetectChar attribute="String SingleQ" context="#pop" char="'"/>- <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abeEfnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)?"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">- <IncludeRules context="FindStrings"/>- <DetectChar context="RegularVariable" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="Normal Text" context="#pop" char="$"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings">- <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/>- <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/>- </context>-- <!-- SubstCommand is called after a $( is encountered -->- <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command">- <DetectChar attribute="Parameter Expansion" context="#pop" char=")" endRegion="subshell"/>- <IncludeRules context="Start"/>- </context>-- <!-- VarBraceStart is called as soon as ${ is encoutered -->- <context attribute="Variable" lineEndContext="#pop" name="VarBraceStart" fallthroughContext="#pop!CheckVarAlt">- <DetectChar attribute="Parameter Expansion" context="#pop!VarFlags" char="("/>- <IncludeRules context="VarFlagsVar"/>- </context>- <context attribute="Variable" lineEndContext="#stay" name="VarBraceStartRecursive" fallthroughContext="#pop#pop!CheckVarAlt">- <Detect2Chars attribute="Parameter Expansion" context="VarBraceStart" char="$" char1="{"/>- <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>- <DetectChar attribute="Error" context="#pop" char="$"/>- </context>- <context attribute="Error" lineEndContext="#stay" name="VarError">- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>- <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="%" char1="%"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#" char1="#"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="#%"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValuePrefix" char=":"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/" char1="/"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#stay" name="AlternateValuePrefix" fallthroughContext="#pop!VarSub">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?|*^"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>-- <!-- Modifiers -->- <AnyChar attribute="Parameter Expansion" context="#pop!VarBraceModifiers" String="aAcehlpPqQrsg&tux" lookAhead="1"/>- </context>-- <!-- called as soon as ${xxx:y (with y a modifier) is encoutered -->- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifiers">- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>- <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>- <DetectChar attribute="Parameter Expansion" context="VarBraceModifier_s" char="s"/>- <Detect2Chars attribute="Parameter Expansion" context="VarBraceModifier_s" char="g" char1="s"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_h" fallthroughContext="#pop">- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- </context>-- <!-- called as soon as ${xxx:s and ${xxx:gs is encoutered -->- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_s">- <DetectChar attribute="Error" context="#pop#pop" char="}"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Str" char="/"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Str">- <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="/"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="RecursiveVarBraceModifier_s">- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="String SingleQ" context="#pop" char="}"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Rep">- <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>- <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/>- </context>-- <!-- called as soon as ${xxx: is encoutered -->- <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <AnyChar context="VarOffset" String="0123456789" lookAhead="1"/>- <AnyChar attribute="Operator" context="#stay" String="+-!~*/%<>=&^|"/>- <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>- <DetectChar context="VarVariables" char="$" lookAhead="1"/>- <IncludeRules context="FindStrings"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- </context>- <context attribute="Command" lineEndContext="#pop" name="VarVariables">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="Error" context="#pop" char="$"/>- </context>- <context attribute="Number" lineEndContext="#pop" name="VarOffset" fallthroughContext="#pop">- <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>- <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>- <AnyChar attribute="Number" context="#stay" String="0123456789_"/>- <DetectChar attribute="Base" context="#stay" char="#"/>- </context>-- <!-- called as soon as ${xxx:-, etc are encoutered -->- <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternateValue">- <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindPathThenPopInAlternateValue"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternateValue">- <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindPathThenPopInAlternateValue"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>-- <!-- called as soon as ${xxx%, etc are encoutered -->- <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternatePatternValue">- <DetectChar attribute="String DoubleQ" context="RecursiveAlternatePatternValue" char="{"/>- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindStringDQPattern"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternatePatternValue">- <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>- <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindStringDQPattern"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>-- <!-- called as soon as ${xxx/ ${xxx// ${xxx:/ are encoutered -->- <context attribute="Normal Text" lineEndContext="#stay" name="VarBraceSubst" fallthroughContext="#pop!VarBraceSubstPat">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" char="#" char1="%"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" String="#%"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="VarBraceSubstPat">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="/"/>- <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSubPattern"/>- <DetectIdentifier attribute="Pattern"/>- </context>-- <!-- called as soon as ${( is encoutered -->- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlags">- <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#%*q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNR"/>- <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="sjgZ_"/>- <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_l" String="lrI"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlagsSubs" char="p"/>-- <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>- <DetectChar attribute="Error" context="#pop" char="}"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlagsSubs">- <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNRp"/>- <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="gZ"/>- <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_ps" String="sj_"/>- <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_pl" String="lrI"/>-- <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>- <DetectChar attribute="Error" context="#pop" char="}"/>- </context>- <context attribute="Variable" lineEndContext="#stay" name="VarFlagsVar" fallthroughContext="#pop!CheckVarAlt">- <DetectChar context="VarBraceStartRecursive" char="$" lookAhead="1"/>- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/>- <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#+^=~"/>- <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>- <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$-"/>- <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator="#~=^+{}[]:-/$"/>- <Detect2Chars context="#pop!VarSubShell" char="!" char1="}" lookAhead="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="!"/>- </context>-- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarSubShell">- <DetectChar attribute="Variable" context="#pop!CheckVarAlt" char="!"/>- </context>-- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_s">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s[" char="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s<" char="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s{" char="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s(" char="("/>- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_sx" String="(.)"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s[">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s<">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s{">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s(">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_sx">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[" char="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<" char="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{" char="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(" char="("/>- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lx" String="(.)"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l[">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[s" char="]" char1="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l<">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<s" char=">" char1="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l{">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{s" char="}" char1="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l(">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(s" char=")" char1="("/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_lx">- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lxs" String="(%1)%1" dynamic="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l[s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l<s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l{s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l(s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_lxs">- <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>- </context>-- <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_ps">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps[" char="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps<" char="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps{" char="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps(" char="("/>- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_psx" String="(.)"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps[">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\])"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps<">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>- <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=>)"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps{">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>- <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=})"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps(">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>- <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\))"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_psx">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>- <RegExpr attribute="Variable" context="#stay" String="\$(?!%1)(?:[A-Za-z_](?:(?!%1)[A-Za-z0-9_])*+|(?:(?!%1)[0-9])++)(?=%1)" dynamic="1"/>- <RegExpr attribute="String SingleQ" context="#stay" String="[^%1]+" dynamic="1"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[" char="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<" char="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{" char="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(" char="("/>- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plx" String="(.)"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl[">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[s" char="]" char1="["/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl<">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<s" char=">" char1="<"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl{">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{s" char="}" char1="{"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl(">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(s" char=")" char1="("/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_plx">- <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plxs" String="(%1)%1" dynamic="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl[s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>- <IncludeRules context="VarFlag_ps["/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl<s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/>- <IncludeRules context="VarFlag_ps<"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl{s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>- <IncludeRules context="VarFlag_ps{"/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl(s">- <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>- <IncludeRules context="VarFlag_ps("/>- </context>- <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_plxs">- <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>- <IncludeRules context="VarFlag_psx"/>- </context>-- <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">- <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>- </context>- <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Escape" context="#pop" char="}"/>- <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>- <DetectChar context="BraceExpansionVariables" char="$" lookAhead="1"/>- <IncludeRules context="FindStrings"/>- <IncludeRules context="FindPattern"/>- <DetectIdentifier attribute="Escape"/>- </context>- <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>- </context>- <context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="Escape" context="#pop" char="$"/>- </context>-- <context attribute="Escape" lineEndContext="#pop" name="PathBraceExpansion">- <DetectChar attribute="Escape" context="#pop!PathBraceExpansion2" char="{"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="PathBraceExpansion2">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Escape" context="#pop" char="}"/>- <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindPattern"/>- <DetectIdentifier attribute="Path"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">- <AnyChar attribute="Number" context="#stay" String="0123456789-"/>- <IncludeRules context="FindWord"/>- <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>- <DetectChar attribute="Escape" context="#pop" char="}"/>- </context>--<!-- ====== These are the contexts that can be branched to ======= -->-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenOrSubShell">- <RegExpr attribute="Keyword" context="#pop!SubShell" String="\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>- <Detect2Chars attribute="Keyword" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>- </context>- <!-- ExprDblParen consumes an expression started in command mode till )) -->- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>- <IncludeRules context="FindExprDblParen"/>- <!-- ((cmd- ) # jump to SubShell context -->- <DetectChar attribute="Keyword" context="#pop!SubShell" char=")" endRegion="expression" beginRegion="subshell"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen">- <Detect2Chars attribute="Control" context="#stay" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>- <AnyChar attribute="Operator" context="#stay" String="+-!~*/%<>=&^|?:"/>- <DetectChar attribute="Control" context="#stay" char=","/>- <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/>- <AnyChar context="Number" String="0123456789." lookAhead="1"/>- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- <IncludeRules context="FindWord"/>- <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>- <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/>- <DetectChar attribute="Error" context="#stay" char="#"/>- <DetectIdentifier attribute="Variable" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Normal Text" context="#pop" char=")"/>- <IncludeRules context="FindExprDblParen"/>- </context>- <context attribute="Error" lineEndContext="#pop" name="MaybeArithmeticBrace">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Error" context="#pop" char="{"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="NoPrefix" fallthroughContext="#pop">- <DetectChar context="AssumeEscape" char="\"/>- <RegExpr attribute="Number" context="#pop" String="[^][()]"/>- </context>-- <context attribute="Number" lineEndContext="#pop" name="Number">- <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>- <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>- <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9_]*+#"/>- <RegExpr attribute="Number" context="#pop" String="∫(\.(∫&exp;?+|&exp;)?|&exp;)?|\.∫&exp;?"/>- <DetectChar attribute="Operator" context="#pop" char="."/>- </context>- <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">- <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F_]+"/>- </context>- <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">- <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand">- <RegExpr attribute="Parameter Expansion" context="#pop!SubstCommand" String="\$\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>- <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/>- </context>- <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <Detect2Chars attribute="Parameter Expansion" context="#pop" char=")" char1=")" endRegion="expression"/>- <IncludeRules context="FindExprDblParen"/>- <!-- $((cmd- ) # jump to SubstCommand context -->- <DetectChar attribute="Parameter Expansion" context="#pop!SubstCommand" char=")" endRegion="expression" beginRegion="subshell"/>- </context>-- <!-- ExprBracket consumes an expression till ] -->- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <IncludeRules context="FindExprBracketEnd"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1">- <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/>- <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1=" " lookAhead="1"/>- <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1="&tab;" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot">- <DetectChar attribute="Expression" context="#pop" char="!"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="ExprBracketValue">- <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/>- <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>- <IncludeRules context="FindExprBracketEnd"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValue">- <AnyChar context="#pop" String=" &tab;" lookAhead="1"/>- <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindGlobAny"/>- <IncludeRules context="FindPathThenPop"/>- <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>- <DetectIdentifier attribute="Normal Text"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueRecBrace">- <AnyChar context="#pop#pop" String=" &tab;" lookAhead="1"/>- <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindGlobAny"/>- <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar attribute="Normal Text" context="#pop" char="}"/>- <DetectIdentifier attribute="Normal Text"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">- <LineContinue attribute="Escape" context="SkipSpaces"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue">- <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>- <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>- <IncludeRules context="FindExprBracketEnd"/>- </context>-- <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">- <LineContinue attribute="Escape" context="SkipSpaces"/>- </context>- <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue">- <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>- <IncludeRules context="FindExprBracketEnd"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <IncludeRules context="FindExprBracketEnd"/>- <RegExpr attribute="Expression" context="#pop!ExprBracket" String="-[ao]&eos;"/>- <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\][^ &tab;])++" endRegion="expression"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&<>)]))" endRegion="expression"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">- <RegExpr attribute="Expression" context="#pop#pop!ExprBracketParam2" String="&unary_operators;"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">- <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">- <DetectSpaces context="#pop"/>- </context>--- <!-- ExprDblBracket consumes an expression till ]] -->- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <IncludeRules context="FindExprDblBracketEnd"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">- <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/>- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">- <RegExpr attribute="Expression" context="#pop" String="!(?=$|[ &tab;(])"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2">- <DetectSpaces attribute="Normal Text" context="#stay"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValueText">- <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>- <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>- <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>- <IncludeRules context="FindExprDblBracketEnd"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValueText">- <RegExpr attribute="Expression" context="#pop!ExprDblBracketUnary" String="&unary_operators;(?!\s+(?:=~|&binary_operators;))"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketUnary" fallthroughContext="#pop!ExprDblBracketValueText">- <DetectSpaces attribute="Normal Text"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">- <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>- <DetectChar attribute="Operator" context="#pop" char=")"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText" fallthroughContext="#pop!ExprDblBracketValueText2">- <Detect2Chars context="#pop!ExprDblBracketValueTextMaybeEnd" char="]" char1="]" lookAhead="1"/>- <IncludeRules context="FindExprDblBracketValueTextPath"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="FindExprDblBracketValueTextPath">- <RegExpr context="#pop!ExprDblBracketValueTextPath" String="&path_with_sep;|" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeEnd">- <RegExpr attribute="Keyword" context="#pop#pop" String="&dblbracket_close;" endRegion="expression"/>- <IncludeRules context="FindExprDblBracketValueTextPath"/>- <Detect2Chars context="#pop!ExprDblBracketValueText2" char="]" char1="]" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText2">- <DetectIdentifier/>- <AnyChar String="*?+@~^:%+-/,"/>- <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>- <AnyChar context="#pop" String=" &tab;)" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindGroupPattern"/>- <AnyChar attribute="Error" context="#stay" String="&;|"/>- <DetectChar context="ExprDblBracketValueTextMaybeRange" char="<" lookAhead="1"/>- <DetectChar attribute="Expression" context="#pop!ExprDblBracketValuePattern" char=">"/>- </context>- <context attribute="Path" lineEndContext="#pop" name="ExprDblBracketValueTextPath">- <IncludeRules context="ExprDblBracketValueText2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeRange">- <RegExpr context="#pop" String="&globrange;"/>- <DetectChar attribute="Expression" context="#pop#pop!ExprDblBracketValuePattern" char="<"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern" fallthroughContext="#pop!ExprDblBracketValuePattern2">- <RegExpr context="ExprDblBracketValuePatternPath" String="&path_with_sep;|" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePatternPath" fallthroughContext="#pop!PathThenPop">- <DetectChar attribute="Path" context="#pop!PathThenPop" char="~"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern2">- <DetectIdentifier attribute="Normal Text"/>- <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>- <AnyChar context="#pop" String=" &tab;)" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSingleGlob"/>- <IncludeRules context="FindGlobAny"/>- <IncludeRules context="FindGroupPattern"/>- <DetectChar context="ExprDblBracketValueMaybeGlobRange" char="<" lookAhead="1"/>- <AnyChar attribute="Error" context="#stay" String=">&|;"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketValueMaybeGlobRange">- <IncludeRules context="FindGlobRangeThenPop"/>- <DetectChar attribute="Error" context="#pop" char="<"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- <LineContinue attribute="Escape"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValuePattern">- <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>- <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>- <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="<>"/>- <IncludeRules context="FindExprDblBracketEnd"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValuePattern">- <IncludeRules context="TestMaybeBinary"/>- <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~&eos;"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">- <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">- <IncludeRules context="ExprDblBracketParam2"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValuePattern">- <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>- <IncludeRules context="FindExprDblBracketEnd"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValuePattern">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <IncludeRules context="FindExprDblBracketEnd"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\](?:[^]]|\][^ &tab;]))++" endRegion="expression"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd">- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar context="#pop" char=")" lookAhead="1"/>- <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&" char1="&"/>- <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>- <RegExpr attribute="Keyword" context="#pop" String="&dblbracket_close;" endRegion="expression"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!Regex">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="Regex">- <DetectIdentifier attribute="Pattern"/>- <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>- <DetectChar attribute="Operator" context="#pop" char=")"/>- <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>- <DetectChar attribute="Operator" context="RegexChar" char="["/>- <IncludeRules context="FindRegex"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">- <DetectIdentifier attribute="Pattern"/>- <DetectSpaces attribute="Pattern" context="#stay"/>- <DetectChar attribute="Operator" context="#pop" char=")"/>- <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>- <DetectChar attribute="Operator" context="RegexSubChar" char="["/>- <IncludeRules context="FindRegex"/>- </context>-- <context attribute="Pattern" lineEndContext="#stay" name="FindRegex">- <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/>- <DetectChar attribute="Escape" context="RegexEscape" char="\"/>- <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/>- <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/>- <IncludeRules context="FindStrings"/>- <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="Operator" context="#pop" char="$"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape">- <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">- <Int attribute="Number"/>- <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>- <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>- </context>-- <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar">- <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/>- </context>- <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar">- <DetectSpaces attribute="Pattern" context="#stay"/>- <IncludeRules context="RegexInChar"/>- </context>-- <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar">- <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/>- </context>- <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar">- <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/>- <DetectChar attribute="Operator" context="#stay" char="-"/>- <DetectChar attribute="Escape" context="RegexEscape" char="\"/>- <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>- <DetectChar attribute="Operator" context="#pop" char="]"/>- <AnyChar context="#pop" String="() &tab;" lookAhead="1"/>- <IncludeRules context="FindStrings"/>- </context>- <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">- <DetectChar attribute="Pattern" context="#stay" char="-"/>- <DetectChar attribute="Operator" context="#pop#pop" char="]"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/>- <DetectChar attribute="Pattern" context="#pop" char="["/>- </context>-- <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">- <DetectIdentifier attribute="Parameter Expansion"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>- <DetectChar attribute="Error" context="#pop" char="]"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">- <DetectIdentifier attribute="Parameter Expansion"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>- <DetectChar attribute="Error" context="#pop" char="]"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">- <DetectIdentifier attribute="Parameter Expansion"/>- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>- <DetectChar attribute="Error" context="#pop" char="]"/>- </context>-- <!-- SubShell consumes shell input till ) -->- <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">- <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>- <IncludeRules context="Start"/>- </context>-- <!-- Assign consumes an expression till EOL or whitespace -->- <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!RegularAssign">- <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="RegularAssign" fallthroughContext="#pop">- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- <IncludeRules context="NormalOption"/>- </context>-- <!-- AssignArray consumes everything till ), marking assignments -->- <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- <DetectChar attribute="Variable" context="#pop" char=")"/>- <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>- <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>- <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop">- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>- <DetectChar attribute="Variable" context="#pop" char="="/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command">- <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/>- <DetectChar attribute="Comment" context="CommentBackq" char="#"/>- <IncludeRules context="Start"/>- </context>-- <!-- Subscript consumes anything till ], marks as Variable -->- <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="Subscript2">- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>- <AnyChar attribute="Number" context="#stay" String="0123456789-"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="Subscript2">- <DetectIdentifier attribute="Normal Text"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=","/>- <IncludeRules context="FindGroupPattern"/>- <IncludeRules context="FindStrings"/>- <DetectChar context="VariableOrSubscriptPos" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <AnyChar attribute="Operator" context="#pop" String="@+-!~*/%<>=&^|?:"/>- </context>- <context attribute="Normal Text" lineEndContext="#pop" name="VariableOrSubscriptPos">- <IncludeRules context="DispatchVariables"/>- <DetectChar attribute="Number" context="#pop" char="$"/>- </context>-- <!-- FunctionDef consumes a name, possibly with (), marks as Function -->- <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop">- <Detect2Chars attribute="Operator" context="#pop" char="(" char1=")"/>- <DetectSpaces attribute="Normal Text" context="FunctionNameStart"/>- </context>- <context attribute="Function" lineEndContext="#pop" name="FunctionNameStart" fallthroughContext="#pop!FunctionName">- <AnyChar context="#pop#pop" String="&symbolseps;#" lookAhead="1"/>- <DetectChar context="FunctionNameStartMaybeBraceExpansion" char="{" lookAhead="1"/>- </context>- <context attribute="Function" lineEndContext="#pop" name="FunctionName">- <AnyChar context="#pop" String=" &tab;(" lookAhead="1"/>- <IncludeRules context="FindWord"/>- <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>- <DetectIdentifier attribute="Function"/>- </context>- <context attribute="Function" lineEndContext="#pop" name="FunctionNameRecBrace" fallthroughContext="#pop">- <IncludeRules context="FindWord"/>- <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>- <DetectChar attribute="Function" context="#pop" char="}"/>- <DetectIdentifier attribute="Function"/>- </context>- <context attribute="Function" lineEndContext="#pop" name="FunctionNameStartMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Keyword" context="#pop#pop#pop!Group" char="{" beginRegion="group"/>- </context>- <context attribute="Function" lineEndContext="#pop" name="FunctionNameMaybeBraceExpansion">- <IncludeRules context="DispatchBraceExpansion"/>- <DetectChar attribute="Function" context="#pop!FunctionNameRecBrace" char="{" beginRegion="group"/>- </context>-- <!-- Case is called after the case keyword is encoutered. We handle this because of- the lonely closing parentheses that would otherwise disturb the expr matching -->- <context attribute="Normal Text" lineEndContext="#stay" name="Case">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Keyword" context="#pop!CaseAlt" char="{"/>- <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/>- <IncludeRules context="FindWord"/>- <DetectIdentifier attribute="Normal Text" context="#stay"/>- </context>-- <!-- CaseIn is called when the construct 'case ... in' has been found. -->- <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Keyword" context="CaseClosedPattern" char="("/>- <DetectChar attribute="Comment" context="Comment" char="#"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">- <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/>- <IncludeRules context="CaseClosedPattern"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="CaseClosedPattern">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/>- <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>- <DetectChar attribute="Keyword" context="#stay" char="|"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindPattern"/>- <DetectIdentifier attribute="Pattern" context="#stay"/>- </context>-- <context attribute="Normal Text" lineEndContext="#stay" name="CaseAlt" fallthroughContext="CasePattern">- <DetectSpaces attribute="Normal Text" context="#stay"/>- <DetectChar attribute="Keyword" context="CasePattern" char="("/>- <DetectChar attribute="Keyword" context="#pop!CaseAltEnd" char="}" endRegion="caseexpr" lookAhead="1"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="CaseAltEnd">- <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="case"/>- </context>-- <!-- CaseExpr eats shell input till ;; / ;& / ;| -->- <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command">- <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="|" endRegion="caseexpr"/>- <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/>- <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&" endRegion="caseexpr"/>- <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/>- <DetectChar context="#pop" char="}" lookAhead="1"/>- <IncludeRules context="Start"/>- </context>-- <!-- ExprGlobParen is called after a ( is encountered in a argument -->- <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParen" fallthroughContext="#pop">- <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlag" char="(" char1="#"/>- <RegExpr attribute="Glob" context="#pop!ExtGlobPattern" String="\((?=&ispattern;)"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>- </context>- <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParenThenPath" fallthroughContext="#pop">- <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlagThenPath" char="(" char1="#"/>- <RegExpr attribute="Glob" context="#pop!ExtGlobPatternThenPath" String="\((?=&ispattern;)"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>- </context>- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier">- <AnyChar attribute="Glob Flag" context="#stay" String="/F.@=p*%bcrwxAIERWXsStUG^-MTNDn"/>- <AnyChar attribute="Glob Flag" context="GlobQualifier_e" String="eP"/>- <AnyChar attribute="Glob Flag" context="GlobQualifier_u" String="ug"/>- <AnyChar attribute="Glob Flag" context="GlobQualifier_a" String="amc"/>- <AnyChar attribute="Glob Flag" context="GlobQualifier_o" String="oO"/>- <DetectChar attribute="Glob Flag" context="GlobQualifier_f" char="f"/>- <DetectChar attribute="Glob Flag" context="GlobQualifier_+" char="+"/>- <DetectChar attribute="Glob Flag" context="GlobQualifier_d" char="d"/>- <DetectChar attribute="Glob Flag" context="GlobQualifier_L" char="L"/>- <DetectChar attribute="Glob Flag" context="GlobQualifier_Y" char="Y"/>- <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>-- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier" char=":"/>- <DetectChar attribute="Glob Flag" context="#pop" char=")"/>- <IncludeRules context="FindWord"/>- </context>-- <context attribute="Normal Text" lineEndContext="#pop" name="GlobQualifier_o" fallthroughContext="#pop">- <AnyChar attribute="Normal Text" context="#stay" String="nLlamcdN"/>- </context>-- <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_Y" fallthroughContext="#pop">- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_L" fallthroughContext="#pop">- <AnyChar attribute="Normal Text" context="#stay" String="kKmMpPgGtT"/>- <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_a" fallthroughContext="#pop">- <AnyChar attribute="Normal Text" context="#stay" String="Mwhmsd"/>- <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_+" fallthroughContext="#pop">- <RegExpr attribute="Function" context="#pop" String="[^&_fragpathseps;=,\[]+"/>- </context>-- <context attribute="Path" lineEndContext="#pop" name="GlobQualifier_d">- <AnyChar context="#pop" String=")," lookAhead="1"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_u">- <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="0123456789"/>- <IncludeRules context="GlobQualifier_e"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_f" fallthroughContext="#pop">- <AnyChar attribute="Number" context="#pop!GlobQualifier_fo" String="0123456789=+-"/>- <DetectChar attribute="Glob" context="#pop!GlobQualifier_fo" char="?"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f[" char="["/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f<" char="<"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f{" char="{"/>- <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_fx" String="(.)"/>- </context>- <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_fo" fallthroughContext="#pop">- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- <DetectChar attribute="Glob" context="#stay" char="?"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f[">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Glob Flag" context="#pop" char="]"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f<">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Glob Flag" context="#pop" char=">"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f{">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Glob Flag" context="#pop" char="}"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_fx">- <DetectChar attribute="Operator" context="#stay" char=","/>- <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>- </context>-- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_e" fallthroughContext="#pop">- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e[" char="["/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e<" char="<"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e{" char="{"/>- <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_ex" String="(.)"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="IncGlobQualifier_e">- <IncludeRules context="FindStrings"/>- <DetectChar context="RegularVariable" char="$" lookAhead="1"/>- <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e[">- <DetectChar attribute="Glob Flag" context="#pop" char="]"/>- <IncludeRules context="IncGlobQualifier_e"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e<">- <DetectChar attribute="Glob Flag" context="#pop" char=">"/>- <IncludeRules context="IncGlobQualifier_e"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e{">- <DetectChar attribute="Glob Flag" context="#pop" char="}"/>- <IncludeRules context="IncGlobQualifier_e"/>- </context>- <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_ex">- <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>- <IncludeRules context="IncGlobQualifier_e"/>- </context>-- <!-- GlobPatFlag is called after a (# is encountered -->- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlag" fallthroughContext="#pop">- <IncludeRules context="IncGlobPatFlag"/>- <DetectChar attribute="Glob Flag" context="#pop" char=")"/>- </context>- <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlagThenPath" fallthroughContext="#pop">- <IncludeRules context="IncGlobPatFlag"/>- <DetectChar attribute="Glob Flag" context="#pop!PathThenPop" char=")"/>- </context>- <context attribute="Glob Flag" lineEndContext="#pop" name="IncGlobPatFlag" fallthroughContext="#pop">- <AnyChar attribute="Glob Flag" context="#stay" String="ilIbBcmMaseuU,"/>- <AnyChar attribute="Number" context="#stay" String="0123456789"/>- <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="q"/>- </context>-- <!-- GlobModifier is called after a : is encountered in a GlobQualifier -->- <context attribute="Parameter Expansion" lineEndContext="#pop" name="GlobModifier">- <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>- <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>- <DetectChar attribute="Parameter Expansion" context="GlobModifier_s" char="s"/>- <Detect2Chars attribute="Parameter Expansion" context="GlobModifier_s" char="g" char1="s"/>- <DetectChar attribute="Glob Flag" context="#pop" char=")"/>- </context>- <context attribute="Parameter Expansion" lineEndContext="#stay" name="GlobModifier_s" fallthroughContext="#pop">- <DetectChar attribute="Error" context="#pop#pop" char=")"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_PatPrefix" char="/"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_PatPrefix" fallthroughContext="#pop!GlobModifier_s_Pat">- <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" char="#" char1="%"/>- <AnyChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" String="#%"/>- </context>- <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_Pat">- <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="/"/>- <IncludeRules context="FindWord"/>- <IncludeRules context="FindSubPattern"/>- <DetectChar attribute="Error" context="#pop#pop" char=")"/>- <DetectIdentifier attribute="Pattern"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_Rep">- <DetectChar attribute="Glob Flag" context="#pop#pop" char=")"/>- <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>- <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/>- <IncludeRules context="FindWord"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>- <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_RecursiveRep">- <DetectChar attribute="String DoubleQ" context="#pop" char=")"/>- <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/>- <IncludeRules context="FindWord"/>- <DetectIdentifier attribute="String DoubleQ"/>- </context>-- </contexts>-- <itemDatas>- <itemData name="Normal Text" defStyleNum="dsNormal"/>- <itemData name="Comment" defStyleNum="dsComment"/>- <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Control" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>- <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>- <itemData name="Command" defStyleNum="dsFunction" spellChecking="false"/>- <itemData name="OtherCommand" defStyleNum="dsExtension" spellChecking="false"/>- <itemData name="Redirection" defStyleNum="dsOperator" spellChecking="false"/>- <itemData name="Escape" defStyleNum="dsDataType" spellChecking="false"/>- <itemData name="String SingleQ" defStyleNum="dsString"/>- <itemData name="String DoubleQ" defStyleNum="dsString"/>- <itemData name="Here Doc" defStyleNum="dsString"/>- <itemData name="Backquote" defStyleNum="dsKeyword" spellChecking="false"/>- <itemData name="String Transl." defStyleNum="dsString"/>- <itemData name="String Escape" defStyleNum="dsDataType"/>- <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>- <itemData name="Dollar Prefix" defStyleNum="dsVariable" spellChecking="false"/>- <itemData name="Expression" defStyleNum="dsOthers" spellChecking="false"/>- <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>- <itemData name="Pattern" defStyleNum="dsSpecialString" spellChecking="false"/>- <itemData name="Path" defStyleNum="dsNormal" spellChecking="false"/>- <itemData name="Glob" defStyleNum="dsPreprocessor" spellChecking="false"/>- <itemData name="Glob Flag" defStyleNum="dsOperator" spellChecking="false"/>- <itemData name="Option" defStyleNum="dsAttribute" spellChecking="false"/>- <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>- <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>- <itemData name="Base" defStyleNum="dsDataType" spellChecking="false"/>- <itemData name="BaseN" defStyleNum="dsBaseN" spellChecking="false"/>- <itemData name="File Descriptor" defStyleNum="dsDecVal" spellChecking="false"/>- <itemData name="Parameter Expansion" defStyleNum="dsVariable" spellChecking="false"/>- <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator" spellChecking="false"/>- <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>- <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>- </itemDatas>- </highlighting>- <general>- <comments>- <comment name="singleLine" start="#"/>+ <!ENTITY ws " &tab;">+ <!ENTITY tab "	">+ <!ENTITY funcname "[^&_fragpathseps;=]*+">+ <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">+ <!ENTITY eos "(?=$|[&ws;])"> <!-- eol or space following -->+ <!ENTITY eoexpr "(?=$|[&ws;<>|&;)])">++ <!ENTITY substseps "${}'"`\\">+ <!ENTITY symbolseps "<>|&;()">+ <!ENTITY wordseps "&ws;&symbolseps;">+ <!ENTITY wordseps_or_extglog "&ws;>|&;)`"> <!-- wordseps without < and ( -->+ <!ENTITY symbolseps_without_parens "<>|&;">+ <!ENTITY wordseps_without_parens "&ws;&symbolseps_without_parens;">++ <!ENTITY bq_string "`[^`]*+`">+ <!ENTITY sq_string "'[^']*+'">+ <!ENTITY dq_string ""(?:[^"\\`]*+|&bq_string;|\\.)*+"">+ <!ENTITY strings "(?:&sq_string;|&dq_string;|&bq_string;)">++ <!ENTITY simpleglob "*?#^~">+ <!ENTITY globrange "<[0-9]*-[0-9]*>">+ <!ENTITY globany "\[(?:[^&wordseps;"'`\\\[\]]+|\\.|&strings;|\[:\w+:\]|\[)*\]">++ <!ENTITY _fragpathseps "&simpleglob;[&wordseps;&substseps;">+ <!ENTITY _fragpathnosep "(?:&_brace_noexpansion;)?+">+ <!ENTITY path "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">+ <!ENTITY fragpath "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">+ <!ENTITY fragpathesc "\\.(?:[^&_fragpathseps;/]*+(?:\\.|&_brace_noexpansion;)?+)*+">+ <!ENTITY opt "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">+ <!ENTITY assumepath "/&path;|(?=[&simpleglob;([]|&globrange;)">+ <!ENTITY pathpart "(?:~(?:/&path;|(?=[&wordseps;]|$))|&fragpath;(?:&assumepath;|(?=&fragpathesc;&assumepath;))|\.\.?(?=[&wordseps;]|$))">++ <!-- Path only with / -->+ <!ENTITY path_with_sep_text "[^[&wordseps;'"`\\/]">+ <!ENTITY path_with_sep_text2 "[^[()<>'"`\\/]">+ <!ENTITY path_with_sep_expr "\\.|&strings;|&globany;|&globrange;">+ <!ENTITY path_with_sep_spe "(~|\.\.?)($|[/&ws;<>|&;)])">+ <!ENTITY path_with_sep_sub "\((&path_with_sep_text2;++|&path_with_sep_expr;)*+(\)|(?=/))">+ <!ENTITY path_with_sep "/|&path_with_sep_spe;|(&path_with_sep_text;++|&path_with_sep_expr;|&path_with_sep_sub;)*+/">++ <!ENTITY _braceexpansion_spe "&ws;<>|&;{}\\`'"$">+ <!ENTITY _brace_noexpansion "\{[^&_braceexpansion_spe;,]*+\}">+ <!ENTITY _braceexpansion_var "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">+ <!ENTITY _braceexpansion_elems "\\.|&strings;|&_braceexpansion_var;|&_brace_noexpansion;">+ <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">+ <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">+ <!ENTITY braceexpansion "{&_braceexpansion;">++ <!ENTITY _bracerangevar "\$([#+^=~]*([_a-zA-Z0-9]+|[*@#])(\[((\$[#+^=~]*)?([-+_a-zA-Z0-9]+|[*@])|$#)\])?|#|'(\\.|[^'\\])')">+ <!ENTITY _bracerangeoperand "-?([0-9]+|[a-zA-Z!#$%*+,-./:=?@^_~]|&_bracerangevar;|\\.|'[^'\\]'|"(\\.|[^"\\`])"|`[^`]*`)">+ <!ENTITY bracerangeexpansion "{(?=&_bracerangeoperand;\.\.&_bracerangeoperand;(\.\.-?([0-9]+|&_bracerangevar;))?})">++ <!ENTITY nobraceexpansion "(?:{([^&_braceexpansion_spe;/{},]++|(?R))+?})+">+ <!ENTITY nogroupend "(?:}+(?:[^&_fragpathseps;]|(?=[}$'"`\\])))">++ <!-- glob with |, ( or spaces is a pattern -->+ <!ENTITY _ispattern_ugN "[ug][0123456789]+">+ <!ENTITY _ispattern_ugeP "[ugeP](?:&_ispattern_ugeP_0;|&_ispattern_ugeP_1;|&_ispattern_ugeP_2;|&_ispattern_ugeP_3;|&_ispattern_ugeP_4;|(?=\|))">+ <!ENTITY _ispattern_ugeP_0 ":(?:[^:'`"\\|()]*+(?:&_ispattern_q;)?)*(?::|(?=[|()]))">+ <!ENTITY _ispattern_ugeP_1 "\[(?:[^]'`"\\|()]*+(?:&_ispattern_q;)?)*(?:\](?=[|()]))">+ <!ENTITY _ispattern_ugeP_2 "{(?:[^}'`"\\|()]*+(?:&_ispattern_q;)?)*(?:}(?=[|()]))">+ <!ENTITY _ispattern_ugeP_3 "<(?:[^>'`"\\|()]*+(?:&_ispattern_q;)?)*(?:>|(?=[|()]))">+ <!ENTITY _ispattern_ugeP_4 "([^&wordseps;{}'"`\\])(?:(?:(?!\1)[^'`"\\\1|()])*+(?:&_ispattern_q;)?)*(?:\1|(?=[|()]))">+ <!ENTITY _ispattern_q "\\.|&strings;">+ <!ENTITY _ispattern_check "(?:\)(?:[^&ws;}<>|&;)]|&nogroupend;)|[&ws;|(]|$)">+ <!ENTITY ispattern "(?:[^&ws;\\'"|()`ugeP]*+(?:&_ispattern_ugN;|&_ispattern_ugeP;|&_ispattern_q;)?)*&_ispattern_check;">++ <!ENTITY heredocq "(?|"([^"]+)"|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">++ <!ENTITY arithmetic_as_subshell "\(((?:[^`'"()$]++|\$\{[^`'"(){}$]+\}|\$(?=[^{`'"()])|&bq_string;|\((?1)(?:[)]|(?=['"])))++)(?:[)](?=$|[^)])|["'])">++ <!ENTITY unary_operators "-[abcdefghknoprstuvwxzLOGNS](?=\\?$|[&ws;])">+ <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[&ws;])">++ <!ENTITY dblbracket_close "\]\](?=($|[&ws;;|&)]))">++ <!ENTITY int "(?:[0-9]++[_0-9]*+)">+ <!ENTITY exp "(?:[eE][-+]?_*+∫)">++ <!ENTITY escaped_ch "(?:[abeEfnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)">++ <!-- just to make highlight range between selected bracket work well -->+ <!ENTITY paren_open "(">+ <!ENTITY paren_close ")">+ <!ENTITY brace_open "{">+ <!ENTITY brace_close "}">+ <!ENTITY bracket_open "[">+ <!ENTITY bracket_close "]">++ <!ENTITY arithmetic_op "+-!~*/%<>=&^|?:">+]>++<!--+https://zsh.sourceforge.io/releases.html+current: 5.9+-->++<language name="Zsh" version="38" kateversion="6.22" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript;text/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">++ <highlighting>+ <list name="keywords">+ <item>continue</item>+ <item>break</item>+ <item>case</item>+ <item>do</item>+ <item>done</item>+ <item>elif</item>+ <item>else</item>+ <item>end</item>+ <item>esac</item>+ <item>fi</item>+ <item>for</item>+ <item>foreach</item>+ <item>function</item>+ <item>if</item>+ <item>in</item>+ <item>repeat</item>+ <item>return</item>+ <item>select</item>+ <item>then</item>+ <item>until</item>+ <item>while</item>+ </list>++<list name="builtins"><!-- see man zshbuiltins -->+ <item>-</item>+ <item>.</item>+ <item>:</item>+ <item>alias</item>+ <item>autoload</item>+ <item>bg</item>+ <item>bindkey</item>+ <item>builtin</item>+ <item>bye</item>+ <item>cap</item>+ <item>cd</item>+ <item>chdir</item>+ <item>clone</item>+ <item>command</item>+ <item>comparguments</item>+ <item>compcall</item>+ <item>compctl</item>+ <item>compdescribe</item>+ <item>compfiles</item>+ <item>compgroups</item>+ <item>compquote</item>+ <item>comptags</item>+ <item>comptry</item>+ <item>compvalues</item>+ <item>coproc</item>+ <item>dirs</item>+ <item>disable</item>+ <item>disown</item>+ <item>echo</item>+ <item>echotc</item>+ <item>echoti</item>+ <item>emulate</item>+ <item>enable</item>+ <item>eval</item>+ <item>exec</item>+ <item>exit</item>+ <item>false</item>+ <item>fc</item>+ <item>fg</item>+ <item>functions</item>+ <item>getcap</item>+ <item>hash</item>+ <item>history</item>+ <item>jobs</item>+ <item>kill</item>+ <item>limit</item>+ <item>log</item>+ <item>logout</item>+ <item>nocorrect</item>+ <item>noglob</item>+ <item>popd</item>+ <item>print</item>+ <item>printf</item>+ <item>pushd</item>+ <item>pushln</item>+ <item>pwd</item>+ <item>r</item>+ <item>rehash</item>+ <item>sched</item>+ <item>set</item>+ <item>setcap</item>+ <item>setopt</item>+ <item>shift</item>+ <item>source</item>+ <item>stat</item>+ <item>suspend</item>+ <item>test</item>+ <item>times</item>+ <item>trap</item>+ <item>true</item>+ <item>ttyctl</item>+ <item>type</item>+ <item>ulimit</item>+ <item>umask</item>+ <item>unalias</item>+ <item>unfunction</item>+ <item>unhash</item>+ <item>unlimit</item>+ <item>unset</item>+ <item>unsetopt</item>+ <item>vared</item>+ <item>wait</item>+ <item>whence</item>+ <item>where</item>+ <item>which</item>+ <item>zcompile</item>+ <item>zformat</item>+ <item>zftp</item>+ <item>zle</item>+ <item>zmodload</item>+ <item>zparseopts</item>+ <item>zprof</item>+ <item>zpty</item>+ <item>zregexparse</item>+ <item>zsocket</item>+ <item>zstyle</item>+ <item>ztcp</item>+ </list>++ <list name="builtins_var">+ <item>declare</item>+ <item>export</item>+ <item>float</item>+ <item>getln</item>+ <item>getopts</item>+ <item>integer</item>+ <item>let</item>+ <item>local</item>+ <item>read</item>+ <item>readonly</item>+ <item>typeset</item>+ <item>unset</item>+ </list>++ <list name="unixcommands">+ <include>unixcommands##Bash</include>+ </list>++ <contexts>+ <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">+ <IncludeRules context="FindSpaceAndComment"/>+ <!-- start expression in double parentheses -->+ <Detect2Chars context="ExprDblParenOrSubShell" char="(" char1="(" lookAhead="1"/>+ <!-- start a subshell -->+ <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/>+ <!-- start expression in single/double brackets -->+ <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/>+ <!-- start a group command or BraceExpansion with { -->+ <DetectChar attribute="Keyword" context="Group" char="{" beginRegion="group"/>++ <!-- handle ` -->+ <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>++ <!-- &> redirections -->+ <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/>+ <Detect2Chars attribute="Control" context="#stay" char="&" char1="!"/>++ <!-- handle branch conditions || && -->+ <IncludeRules context="FindBranchCondition"/>++ <!-- handle &, |, ; -->+ <AnyChar attribute="Control" context="#stay" String="&|;"/>++ <!-- handle variable assignments -->+ <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))|[0-9]+(?=\+?=)"/>+ <!-- handle keywords -->+ <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/>+ <!-- handle commands that have variable names as argument -->+ <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>+ <WordDetect attribute="Builtin" context="#stay" String="noglob"/>+ <WordDetect attribute="Builtin" context="#stay" String="coproc"/>+ <!-- mark function definitions without function keyword -->+ <RegExpr attribute="Function" context="#stay" String="&funcname;[&ws;]*\(\)"/>+ <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>+ <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>++ <!-- handle redirection -->+ <AnyChar context="CommandMaybeRedirection" String="<>0123456789" lookAhead="1"/>++ <DetectChar attribute="Error" context="#stay" char=")"/>+ <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>++ <LineContinue attribute="Escape" context="#stay"/>++ <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">+ <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/>+ <DetectChar attribute="Error" context="#pop" char="}"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">+ <!-- start expression in double brackets -->+ <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[&ws;(])" beginRegion="expression"/>+ <!-- start expression in single brackets -->+ <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command">+ <IncludeRules context="FindRedirection"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <Int attribute="Number" context="#stay"/>+ </context>+ <!-- Comment consumes shell comments till EOL -->+ <context attribute="Comment" lineEndContext="#pop" name="Comment">+ <DetectSpaces attribute="Comment"/>+ <IncludeRules context="##Comments"/>+ <DetectIdentifier attribute="Comment" context="#stay"/>+ </context>++ <!-- Group is called after a { is encountered -->+ <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command">+ <DetectChar attribute="Keyword" context="#pop!GroupEnd" char="}" endRegion="group"/>+ <IncludeRules context="Start"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="GroupEnd" fallthroughContext="#pop!CommandArgs">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <WordDetect attribute="Control Flow" context="#pop" String="always"/>+ </context>++ <context attribute="OtherCommand" lineEndContext="#pop" name="Command">+ <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>+ <DetectIdentifier attribute="OtherCommand" context="#stay"/>+ <IncludeRules context="FindVariableOrCurrentStyle"/>+ <IncludeRules context="FindStrings"/>+ <Detect2Chars attribute="Control" context="#pop" char="&" char1="&"/>+ <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/>+ <DetectChar attribute="Control" context="#pop" char="|"/>+ <AnyChar context="#pop" String=";)`" lookAhead="1"/>+ <AnyChar context="#pop!CommandArgs" String="&<>" lookAhead="1"/>+ <!-- start expression in double parentheses -->+ <Detect2Chars attribute="Error" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>+ <!-- start a subshell -->+ <DetectChar attribute="Error" context="#pop!SubShell" char="(" beginRegion="subshell"/>+ <DetectChar context="CommandAssumeEscape" char="\" lookAhead="1"/>+ <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="CommandMaybeGroupEnd" char="}" lookAhead="1"/>+ </context>+ <context attribute="OtherCommand" lineEndContext="#pop" name="CommandAssumeEscape">+ <LineContinue attribute="Escape" context="#pop"/>+ <RegExpr attribute="OtherCommand" context="#pop" String="\\."/>+ </context>+ <context attribute="OtherCommand" lineEndContext="#pop" name="CommandMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="OtherCommand" context="#pop" char="{"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeGroupEnd">+ <RegExpr attribute="OtherCommand" context="#pop" String="&nogroupend;+"/>+ <DetectChar context="#pop#pop" char="}" lookAhead="1"/>+ </context>++ <!-- $... -->+ <context attribute="Variable" lineEndContext="#pop" name="DispatchVariables">+ <IncludeRules context="DispatchSubstVariables"/>+ <IncludeRules context="DispatchStringVariables"/>+ <IncludeRules context="DispatchVarNameVariables"/>+ </context>++ <!-- ${var}+ ~~+ -->+ <context attribute="Variable" lineEndContext="#pop" name="DispatchSubstVariables">+ <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>+ <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>+ <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>+ <StringDetect attribute="Parameter Expansion" context="#pop!ExprBracketSubst" String="$[" beginRegion="expression"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketSubst">+ <DetectChar attribute="Parameter Expansion" context="#pop" char="]" endRegion="expression"/>+ <IncludeRules context="FindArithmetic"/>+ </context>++ <!-- $'...'+ ~~+ -->+ <context attribute="Variable" lineEndContext="#pop" name="DispatchStringVariables">+ <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>+ </context>++ <!-- $var $1 $* etc+ ~ ~ ~+ -->+ <context attribute="Variable" lineEndContext="#pop" name="DispatchVarNameVariables">+ <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[-*@?$!#~=^+0-9])"/>+ </context>+ <context attribute="Variable" lineEndContext="#pop" name="VarNamePrefixedWithDollar">+ <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>+ <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="$"/>+ <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" String="#+"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam" String="~=^"/>+ </context>+ <context attribute="Variable" lineEndContext="#pop" name="VarNameSubstLen" fallthroughContext="#pop!AfterVarName">+ <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>+ <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>+ <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="#~=^+{}[]:-/$"/>+ </context>+ <context attribute="Variable" lineEndContext="#pop" name="VarNameParam" fallthroughContext="#pop!AfterVarName">+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" String="#+"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="^=~"/>+ <IncludeRules context="VarNameSubstLen"/>+ </context>++ <!-- called as soon as $xxx is encoutered+ $var:... $var[xxx]:...+ ~ ~ ~+ -->+ <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarName" fallthroughContext="#pop">+ <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AfterVarNameSubscript!Subscript" char="["/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarNameSubscript" fallthroughContext="#pop">+ <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameDispatchModifiers" fallthroughContext="#pop#pop">+ <StringDetect attribute="Parameter Expansion" String=":a"/>+ <StringDetect attribute="Parameter Expansion" String=":A"/>+ <StringDetect attribute="Parameter Expansion" String=":c"/>+ <StringDetect attribute="Parameter Expansion" String=":e"/>+ <StringDetect attribute="Parameter Expansion" String=":h"/>+ <StringDetect attribute="Parameter Expansion" String=":l"/>+ <StringDetect attribute="Parameter Expansion" String=":p"/>+ <StringDetect attribute="Parameter Expansion" String=":P"/>+ <StringDetect attribute="Parameter Expansion" String=":q"/>+ <StringDetect attribute="Parameter Expansion" String=":Q"/>+ <StringDetect attribute="Parameter Expansion" String=":r"/>+ <StringDetect attribute="Parameter Expansion" context="VarNameModifier_s" String=":s"/>+ <StringDetect attribute="Parameter Expansion" String=":t"/>+ <StringDetect attribute="Parameter Expansion" String=":u"/>+ <StringDetect attribute="Parameter Expansion" context="VarNameModifier_s" String=":gs"/>+ <StringDetect String=":f" context="VarNameModifier_fFwW_Check" lookAhead="1"/>+ <StringDetect String=":F" context="VarNameModifier_fFwW_Check" lookAhead="1"/>+ <StringDetect String=":w" context="VarNameModifier_fFwW_Check" lookAhead="1"/>+ <StringDetect String=":W" context="VarNameModifier_fFwW_Check" lookAhead="1"/>+ </context>+++ <!-- $var:s/../....+ ~~~~~...+ -->+ <context attribute="Parameter Expansion Operator" lineEndContext="#pop#pop#pop" name="VarNameModifier_s" fallthroughContext="#pop#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Str" char="/"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_StrSQ_Sep" char="'"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_StrDQ_Sep" char='"'/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_C_Rep!VarNameModifier_s_C_Str" String="([^&wordseps;\[\]{}\\])"/>+ </context>+ <!-- By default the left-hand side of substitutions are character strings,+ but pattern with HIST_SUBST_PATTERN option. Assume no option. -->+ <!-- $var:s/../....+ ~~~+ -->+ <context attribute="Verbatim String" lineEndContext="#pop#pop" name="VarNameModifier_s_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="/"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="String SingleQ" context="VarNameModifier_s_StrSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_StrDQ" char='"'/>+ <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>+ </context>+ <!-- #pop -> is VarNameModifier_s_C_Rep -->+ <context attribute="Verbatim String" lineEndContext="#pop#pop#pop" name="VarNameModifier_s_C_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindEscape"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindStrings"/>+ <AnyChar context="#pop#pop#pop" String="&wordseps;" lookAhead="1"/>+ </context>+ <!-- $var:s/..'../..'.. $var:s/..'..'../..+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="VarNameModifier_s_StrSQ">+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ <LineContinue attribute="Escape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Rep!VarNameModifier_s_RepSQ" char="/"/>+ </context>+ <!-- $var:s'..'..+ ~~~~+ -->+ <context attribute="String SingleQ" name="VarNameModifier_s_StrSQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="'"/>+ <LineContinue attribute="Escape"/>+ </context>+ <!-- $var:s/.."../..".. $var:s/..".."../..+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarNameModifier_s_StrDQ">+ <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Rep!VarNameModifier_s_RepDQ" char="/"/>+ </context>+ <!-- $var:s".."..+ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarNameModifier_s_StrDQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char='"'/>+ <IncludeRules context="FindEscape"/>+ </context>+ <!-- $var:s/../....+ ~~..+ -->+ <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>+ <!-- FindWord with a search for '/' in single and double quoted string -->+ <DetectChar attribute="String SingleQ" context="VarNameModifier_s_RepSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_RepDQ" char="""/>+ <IncludeRules context="VarNameModifier_s_Rep_Common"/>+ </context>+ <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_C_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>+ <IncludeRules context="VarNameModifier_s_Rep_Common"/>+ </context>+ <context attribute="Replacement String" name="FindVarNameModifier_s_C_RepQ">+ <DetectChar attribute="String SingleQ" context="VarNameModifier_s_C_RepSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_C_RepDQ" char="""/>+ </context>+ <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep_Common">+ <IncludeRules context="FindVariable"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ <IncludeRules context="FindEscape"/>+ <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>+ </context>+ <!-- $var:s/../..'../'.. $var:s/../..'..'..+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="VarNameModifier_s_RepSQ">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop!StringSQ" char="/"/>+ <IncludeRules context="VarNameModifier_s_C_RepSQ"/>+ </context>+ <context attribute="String SingleQ" name="VarNameModifier_s_C_RepSQ">+ <IncludeRules context="StringSQ"/>+ <!-- When no HIST_SUBST_PATTERN -->+ <DetectChar attribute="Builtin" char="&"/>+ <StringDetect attribute="String Escape" String="\&"/>+ </context>+ <!-- $var:s/../.."../".. $var:s/../..".."..+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarNameModifier_s_RepDQ">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop!StringDQ" char="/"/>+ <IncludeRules context="VarNameModifier_s_C_RepDQ"/>+ </context>+ <context attribute="String DoubleQ" name="VarNameModifier_s_C_RepDQ">+ <!-- When no HIST_SUBST_PATTERN -->+ <StringDetect attribute="String Escape" String="\&"/>+ <IncludeRules context="StringDQ"/>+ <!-- When no HIST_SUBST_PATTERN -->+ <DetectChar attribute="Builtin" char="&"/>+ </context>+++ <!-- $var:fwh+ ~..+ -->+ <context attribute="Normal Text" name="VarNameModifier_fFwW_Check" fallthroughContext="#pop#pop#pop">+ <RegExpr attribute="Parameter Expansion" context="VarNameModifier_fFwW" String=":(?=(?:[fw]|[FW](?:&strings;|\([^&paren_close;&symbolseps;]*+\)|\{[^&brace_close;&wordseps;]*+\}|\[[^&bracket_close;&wordseps;]*+\]|([^&wordseps;{}])(?:[^"'`\s&wordseps;]|&strings;)*?\1))+(?:[aAcehlpPqQrstu]|gs))|"/>+ </context>+ <!-- $var:fW(2)h+ ~~ ~+ -->+ <context attribute="Normal Text" name="VarNameModifier_fFwW" lineEndContext="#pop#pop#pop#pop">+ <AnyChar attribute="Parameter Expansion" String="fw"/>+ <DetectChar attribute="Parameter Expansion" context="VarNameModifier_F" char="F"/>+ <DetectChar attribute="Parameter Expansion" context="VarNameModifier_W" char="W"/>+ <AnyChar attribute="Parameter Expansion" context="#pop#pop" String="aAcehlpPqQrtu"/>+ <StringDetect attribute="Parameter Expansion" context="#pop#pop!VarNameModifier_s" String=":s"/>+ <StringDetect attribute="Parameter Expansion" context="#pop#pop!VarNameModifier_s" String=":gs"/>+ </context>+ <!-- $var:F(expr)h+ ~~~~~~+ -->+ <context attribute="Normal Text" name="VarNameModifier_F" lineEndContext="#pop#pop#pop#pop#pop">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="ArithmeticParamDyn" String="(.)"/>+ </context>+ <context attribute="Normal Text" name="ArithmeticParamParen" lineEndContext="#pop#pop">+ <IncludeRules context="VerbatimParamParen"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="ArithmeticParamBracket" lineEndContext="#pop#pop">+ <IncludeRules context="VerbatimParamBracket"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="ArithmeticParamBrace" lineEndContext="#pop#pop">+ <IncludeRules context="VerbatimParamBrace"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="ArithmeticParamColon" lineEndContext="#pop#pop">+ <IncludeRules context="VerbatimParamColon"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="ArithmeticParamDyn" lineEndContext="#pop#pop">+ <IncludeRules context="VerbatimParamDyn"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <!-- $var:W(xxx)h+ ~~~~~+ -->+ <context attribute="Normal Text" name="VarNameModifier_W" lineEndContext="#pop#pop#pop#pop#pop">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="VerbatimParamDyn" String="(.)"/>+ </context>+ <context attribute="Verbatim String" name="VerbatimParamParen" lineEndContext="#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>+ </context>+ <context attribute="Verbatim String" name="VerbatimParamBracket" lineEndContext="#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>+ </context>+ <context attribute="Verbatim String" name="VerbatimParamBrace" lineEndContext="#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>+ </context>+ <context attribute="Verbatim String" name="VerbatimParamColon" lineEndContext="#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>+ </context>+ <context attribute="Verbatim String" name="VerbatimParamDyn" lineEndContext="#pop#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command">+ <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/>+ <DetectChar attribute="Comment" context="CommentBackq" char="#"/>+ <IncludeRules context="Start"/>+ </context>+ <!-- CommentBackq consumes shell comments till EOL or a backquote -->+ <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">+ <DetectChar context="#pop" char="`" lookAhead="1"/>+ <IncludeRules context="Comment"/>+ </context>++ <!-- CommandArgs matches the items after a command -->+ <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg">+ <DetectSpaces attribute="Normal Text" context="#stay"/>++ <!-- &> redirections -->+ <Detect2Chars attribute="Redirection" context="Prefix&>" char="&" char1=">"/>++ <!-- handle &, |, ;, ` -->+ <AnyChar context="#pop" String="&|;`" lookAhead="1"/>++ <!-- handle process subst -->+ <Detect2Chars attribute="Redirection" context="ProcessSubst" char="=" char1="("/>+ <!-- handle redirection -->+ <AnyChar context="CommandArgMaybeRedirection" String="><0123456789" lookAhead="1"/>++ <DetectChar context="#pop" char=")" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption">+ <!-- In command arguments, do not allow comments after escaped characters.+ This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->+ <DetectChar context="#pop#pop" char="#" lookAhead="1"/>+ <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/>+ <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>+ <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption">+ <IncludeRules context="FindRedirection"/>+ </context>++ <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">+ <DetectChar attribute="Path" context="PathThenPop" char="/"/>+ <IncludeRules context="LongOption"/>+ </context>+ <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">+ <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobAny"/>+ <AnyChar context="#pop!NormalOption" String="({}<" lookAhead="1"/>+ <RegExpr attribute="Option" context="#stay" String="&opt;"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">+ <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <DetectChar attribute="Glob" context="PathThenPop" char="[" lookAhead="1"/>+ <DetectChar context="ExprGlobParenThenPath" char="(" lookAhead="1"/>+ <IncludeRules context="FindPathThenPop"/>+ <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>+ <IncludeRules context="FindNormalTextOption"/>+ <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="NormalOptionRecBrace">+ <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobAny"/>+ <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar attribute="Normal Text" context="#pop" char="}"/>+ <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>+ <DetectIdentifier/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeGroupEnd">+ <IncludeRules context="FindNoGroupEndThenPop"/>+ <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="FindNoGroupEndThenPop">+ <RegExpr context="#pop" String="&nogroupend;"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption">+ <RegExpr attribute="Normal Text" context="#stay" String="([^[&wordseps;&substseps;]+|&nogroupend;)+"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Normal Text" context="#pop!NormalOptionRecBrace" char="{"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="FindEscape">+ <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape">+ <LineContinue attribute="Escape" context="#pop"/>+ <RegExpr attribute="Escape" context="#pop" String="\\."/>+ </context>++<!-- ====== The following rulessets are meant to be included ======== -->++ <!-- FindRedirection consumes shell redirection -->+ <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection">+ <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[<>])"/>+ <IncludeRules context="AssumeRedirection"/>+ </context>++ <!-- DispatchBraceExpansion consumes brace expansions -->+ <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion">+ <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>+ <IncludeRules context="IncBraceExpansion"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="DispatchPathBraceExpansion">+ <RegExpr context="#pop!PathBraceExpansion" String="&braceexpansion;" lookAhead="1"/>+ <IncludeRules context="IncBraceExpansion"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="IncBraceExpansion">+ <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="&bracerangeexpansion;"/>+ <RegExpr context="#pop" String="&nobraceexpansion;"/>+ </context>++ <!-- FindPathThenPop consumes path -->+ <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">+ <AnyChar attribute="Glob" context="PathThenPop" String="?*#^"/>+ <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>+ <DetectChar attribute="Glob" context="PathThenPop" char="~"/>+ </context>+ <context attribute="Path" lineEndContext="#pop#pop" name="IncPath">+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobAny"/>+ <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>+ <RegExpr attribute="Path" context="#stay" String="&path;"/>+ <DetectChar context="MaybeGlobRangeOrPop" char="<" lookAhead="1"/>+ <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>+ </context>+ <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">+ <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <IncludeRules context="IncPath"/>+ <DetectChar context="PathMaybeGroupEnd" char="}" lookAhead="1"/>+ <DetectIdentifier attribute="Path"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="PathRecBrace">+ <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <IncludeRules context="IncPath"/>+ <DetectChar attribute="Path" context="#pop" char="}"/>+ <DetectIdentifier attribute="Path"/>+ </context>+ <context attribute="Glob" lineEndContext="#stay" name="MaybeGlobRangeOrPop" fallthroughContext="#pop#pop">+ <IncludeRules context="FindGlobRangeThenPop"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion">+ <IncludeRules context="DispatchPathBraceExpansion"/>+ <DetectChar attribute="Path" context="#pop!PathRecBrace" char="{"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="PathMaybeGroupEnd">+ <IncludeRules context="FindNoGroupEndThenPop"/>+ <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>+ </context>+ <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeThenPop">+ <RegExpr attribute="Glob" context="#pop!InGlobRange" String="<(?=[0-9]*-[0-9]*>)"/>+ </context>+ <context attribute="Number" lineEndContext="#stay" name="InGlobRange">+ <IncludeRules context="FindDigit"/>+ <DetectChar attribute="Glob" context="#stay" char="-"/>+ <DetectChar attribute="Glob" context="#pop" char=">"/>+ </context>++ <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->+ <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">+ <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="&simpleglob;|"/>+ <Detect2Chars context="PathThenPopInAlternateValue" char="(" char1="#" lookAhead="1"/>+ <AnyChar context="PathThenPopInAlternateValue" String="[(" lookAhead="1"/>+ <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart;"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="PathThenPopInAlternateValue">+ <AnyChar context="#pop" String="&wordseps_or_extglog;}" lookAhead="1"/>+ <IncludeRules context="IncPath"/>+ <DetectIdentifier/>+ </context>++ <!-- [a-Z]+ ~+ -->+ <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny">+ <DetectChar attribute="Glob" context="GlobAnyFlag" char="["/>+ </context>+ <!-- [^a-Z]+ ~+ -->+ <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAnyNoClose">+ <AnyChar attribute="Glob Flag" context="#pop!GlobAnyNoClose" String="!^"/>+ </context>+ <!-- []a-Z] [^]a-Z] [-a-Z] [^-a-Z]+ ~ ~ ~ ~+ -->+ <context attribute="Glob" lineEndContext="#pop#pop" name="GlobAnyNoClose" fallthroughContext="#pop!GlobAny">+ <AnyChar attribute="String SingleQ" context="#pop!GlobAny" String="]-"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAny">+ <DetectIdentifier attribute="String SingleQ"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Glob Flag" context="#stay" char="-"/>+ <IncludeRules context="FindStrings"/>+ <DetectChar attribute="Glob" context="#pop" char="]"/>+ <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/>+ <IncludeRules context="FindVariableOrCurrentStyle"/>+ <DetectChar context="GlobAnyMaybeNumRange" char="<" lookAhead="1"/>+ <!-- some characters are prohibited, but it depends on the context of use+ ${s/[...]/}, [[ $foo = [...] ]], [[ $foo = ( [...] ) ]], etc+ -->+ </context>+ <!-- [abc<0-9>def<ghi]+ ~~~~~ ~+ -->+ <context attribute="String SingleQ" name="GlobAnyMaybeNumRange">+ <!-- [<0-9>] is quivalent to [-09\<\>], not [0-9\<\>]+ ~ not a Glob Flag+ -->+ <RegExpr attribute="String SingleQ" context="#pop" String="<[0-9]*-[0-9]*>"/>+ <DetectChar context="#pop" char="<"/>+ </context>+ <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass">+ <DetectIdentifier attribute="Pattern"/>+ <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/>+ <DetectChar attribute="Error" context="#pop" char="]"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindSingleGlob">+ <AnyChar attribute="Glob" context="#stay" String="&simpleglob;"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindGlobPattern">+ <AnyChar attribute="Glob" context="#stay" String="&simpleglob;|"/>+ <IncludeRules context="FindGlobAny"/>+ <IncludeRules context="FindGroupPattern"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindPattern">+ <IncludeRules context="FindGlobPattern"/>+ <IncludeRules context="FindGlobRangeOrError"/>+ </context>+ <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeOrError">+ <DetectChar context="GlobRangeOrError" char="<" lookAhead="1"/>+ </context>+ <context attribute="Glob" lineEndContext="#stay" name="GlobRangeOrError">+ <IncludeRules context="FindGlobRangeThenPop"/>+ <DetectChar attribute="Error" context="#pop" char="<"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindSubPattern">+ <IncludeRules context="FindGlobPattern"/>+ <DetectChar context="GlobRangeOrPattern" char="<" lookAhead="1"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="GlobRangeOrPattern">+ <IncludeRules context="FindGlobRangeThenPop"/>+ <DetectChar attribute="Pattern" context="#pop" char="<"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindStringDQPattern">+ <IncludeRules context="FindGlobPattern"/>+ <DetectChar context="GlobRangeOrStringDQ" char="<" lookAhead="1"/>+ </context>+ <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobRangeOrStringDQ">+ <IncludeRules context="FindGlobRangeThenPop"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="<"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#stay" name="FindGroupPattern">+ <Detect2Chars attribute="Glob Flag" context="GlobPatFlag" char="(" char1="#"/>+ <DetectChar attribute="Glob" context="ExtGlobPattern" char="("/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPattern">+ <DetectChar attribute="Glob" context="#pop" char=")"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSubPattern"/>+ <DetectIdentifier attribute="Pattern"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPatternThenPath">+ <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSubPattern"/>+ <DetectIdentifier attribute="Pattern"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">+ <IncludeRules context="FindSubscript"/>+ <DetectChar attribute="Operator" context="#pop!Assign" char="="/>+ <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">+ <!-- match do and if blocks -->+ <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>+ <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>+ <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>+ <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>+ <!-- handle while/until as a special case -->+ <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>+ <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>+ <!-- handle for as a special case -->+ <StringDetect attribute="Control Flow" context="#pop!Foreach" String="foreach"/>+ <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>+ <!-- handle select as a special case -->+ <StringDetect attribute="Control Flow" context="#pop!Select" String="select"/>+ <StringDetect attribute="Control Flow" context="#pop!Repeat" String="repeat"/>+ <!-- handle case as a special case -->+ <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/>+ <!-- handle functions with function keyword before keywords -->+ <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/>+ <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/>+ <!-- not a keyword in this context -->+ <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/>+ <StringDetect attribute="Error" context="#pop" String="esac"/>+ <!-- handle keywords -->+ <DetectIdentifier attribute="Control Flow" context="#pop"/>+ </context>++ <!-- if ! ... and while ! ... -->+ <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">+ <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">+ <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>+ <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>+ <LineContinue attribute="Expression" context="#pop" char="!"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="Foreach" fallthroughContext="#pop">+ <LineContinue attribute="Escape" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectIdentifier attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ForeachWord" fallthroughContext="NormalOption">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Control" context="#stay" char=";"/>+ <DetectChar attribute="Keyword" context="#pop" char=")"/>+ <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>+ <AnyChar attribute="Control" context="#stay" String="&symbolseps;"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">+ <LineContinue attribute="Escape" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>+ <DetectIdentifier attribute="Normal Text" context="#stay"/>+ <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/>+ <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Control" context="#stay" char=";"/>+ <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="Select" fallthroughContext="#pop">+ <LineContinue attribute="Escape" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectIdentifier attribute="Normal Text" context="#pop!SelectIn"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="SelectIn" fallthroughContext="#pop">+ <LineContinue attribute="Escape" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="Repeat" fallthroughContext="#pop!RepeatArithmeticExpr">+ <LineContinue attribute="Escape" context="#stay"/>+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="RepeatArithmeticExpr">+ <DetectSpaces attribute="Normal Text" context="#pop"/>+ <DetectChar attribute="Control" context="#pop" char=";"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>++ <!-- &> and &>> redirection -->+ <context attribute="Normal Text" lineEndContext="#pop" name="Prefix&>" fallthroughContext="#pop!FdRedirection">+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>+ <AnyChar attribute="Redirection" context="#pop!WordRedirection" String=">|!"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection">+ <!-- handle output redirection -->+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>|"/>+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>!"/>+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&|"/>+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&!"/>+ <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String=">>("/>+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&|"/>+ <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&!"/>+ <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&"/>+ <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>+ <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>+ <!-- handle input redirection -->+ <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="<" char1="("/>+ <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String="<<("/>+ <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="<<<"/>+ <!-- handle here document -->+ <Detect2Chars context="#pop!HereDoc" char="<" char1="<" lookAhead="1"/>+ <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="<" char1="&"/>+ <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="<" char1=">"/>+ <IncludeRules context="FindGlobRangeThenPop"/>+ <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="<"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">+ <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">+ <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">+ <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">+ <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">+ <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">+ <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <DetectIdentifier attribute="Normal Text"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">+ <DetectChar attribute="Keyword" context="#pop" char="-"/>+ </context>++ <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->+ <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">+ <RegExpr attribute="Redirection" context="HereDocIQ" String="<<-[&ws;]*&heredocq;(?=[&ws;]*$)"/>+ <RegExpr attribute="Redirection" context="HereDocINQ" String="<<-[&ws;]*([^&wordseps;]+)(?=[&ws;]*$)"/>+ <RegExpr attribute="Redirection" context="HereDocQ" String="<<[&ws;]*&heredocq;(?=[&ws;]*$)"/>+ <RegExpr attribute="Redirection" context="HereDocNQ" String="<<[&ws;]*([^&wordseps;]+)(?=[&ws;]*$)"/>++ <RegExpr context="HereDocIQCmd" String="(<<-[&ws;]*&heredocq;)" lookAhead="1"/>+ <RegExpr context="HereDocINQCmd" String="(<<-[&ws;]*([^&wordseps;]+))" lookAhead="1"/>+ <RegExpr context="HereDocQCmd" String="(<<[&ws;]*&heredocq;)" lookAhead="1"/>+ <RegExpr context="HereDocNQCmd" String="(<<[&ws;]*([^&wordseps;]+))" lookAhead="1"/>++ <Detect2Chars attribute="Redirection" context="#pop" char="<" char1="<"/><!-- always met -->+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">+ <AnyChar context="ZshOneLine" String="&|;`" lookAhead="1"/>+ <IncludeRules context="CommandArgs"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ZshOneLine" fallthroughContext="Command">+ <IncludeRules context="Start"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="1" fallthroughContext="HereDocText">+ <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions">+ <IncludeRules context="HereDocQ" />+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText">+ <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions">+ <IncludeRules context="HereDocIQ" />+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">+ <!-- Only if the redirect is before the command, but as this is too complicated,+ check if the redirect is at the beginning of the line. -->+ <StringDetect attribute="Redirection" context="ZshOneLine" String="%1" dynamic="true" firstNonSpace="1"/>+ <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText">+ <IncludeRules context="HereDocCmd"/>+ <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">+ <IncludeRules context="HereDocQCmd"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText">+ <IncludeRules context="HereDocCmd"/>+ <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">+ <IncludeRules context="HereDocIQCmd"/>+ </context>++ <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">+ </context>++ <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">+ <DetectSpaces attribute="Here Doc"/>+ <DetectIdentifier attribute="Here Doc"/>+ <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>+ <IncludeRules context="FindEscape"/>+ </context>+ <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables">+ <IncludeRules context="DispatchSubstVariables"/>+ <IncludeRules context="DispatchVarNameVariables"/>+ <DetectChar attribute="Here Doc" context="#pop" char="$"/>+ </context>++ <!-- VarName consumes spare variable names and assignments -->+ <context attribute="Normal Text" lineEndContext="#pop" name="VarName">+ <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/>+ <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/>+ <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/>+ <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:-"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs">+ <DetectSpaces attribute="Normal Text" context="VarNameArg"/>+ <LineContinue attribute="Escape" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2">+ <!-- In command arguments, do not allow comments after escaped characters.+ This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->+ <DetectChar context="#pop#pop" char="#" lookAhead="1"/>+ <AnyChar attribute="Option" context="#pop!ShortOption" String="-+"/>+ <DetectChar attribute="Keyword" context="#pop!VarNameArg2" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption">+ <DetectChar attribute="Variable" context="Subscript" char="["/>+ <DetectChar attribute="Operator" context="Assign" char="="/>+ <DetectChar attribute="Variable" context="AssignArray" char="("/>+ <DetectIdentifier attribute="Variable" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs">+ <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/>+ <LineContinue attribute="Escape" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2">+ <DetectChar context="#pop#pop" char="#" lookAhead="1"/>+ <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption">+ <DetectChar attribute="Operator" context="#stay" char=":"/>+ <DetectIdentifier attribute="Normal Text" context="#stay" />+ <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/>+ <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>+ <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs">+ <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs">+ <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/>+ <LineContinue attribute="Escape" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg">+ <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/>+ <IncludeRules context="CommandArgs"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg">+ <IncludeRules context="FindRedirection"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr">+ <DetectChar context="#pop#pop" char="#" lookAhead="1"/>+ <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption">+ <DetectIdentifier attribute="Variable"/>+ <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>+ <AnyChar attribute="Operator" context="#stay" String="+-!%=^:"/>+ <IncludeRules context="FindNumber"/>+ <IncludeRules context="FindSubscript"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindToNum"/>+ <DetectChar attribute="Control" char=","/>+ <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>+ </context>++ <!-- ProcessSubst handles <(command) and >(command) -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">+ <DetectChar attribute="Redirection" context="#pop" char=")"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- StringSQ consumes anything till ' -->+ <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">+ <DetectSpaces attribute="String SingleQ"/>+ <DetectIdentifier attribute="String SingleQ"/>+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ </context>++ <!-- StringDQ consumes anything till ", substitutes vars and expressions -->+ <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">+ <DetectSpaces attribute="String DoubleQ"/>+ <DetectIdentifier attribute="String DoubleQ"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="""/>+ <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>+ <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ </context>+ <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">+ <IncludeRules context="DispatchSubstVariables"/>+ <IncludeRules context="DispatchVarNameVariables"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>+ </context>+ <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">+ <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="""/>+ <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/>+ <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>+ <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>+ <LineContinue attribute="String Escape" context="#pop"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>+ </context>++ <!-- RegularBackq consumes anything till ` -->+ <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">+ <DetectChar attribute="Backquote" context="#pop" char="`"/>+ <DetectChar attribute="Comment" context="CommentBackq" char="#"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- StringEsc eats till ', but escaping many characters -->+ <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">+ <DetectSpaces attribute="String SingleQ"/>+ <DetectIdentifier attribute="String SingleQ"/>+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ <RegExpr attribute="String Escape" context="#stay" String="\\&escaped_ch;?"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="FindSpaceAndComment">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">+ <IncludeRules context="FindStrings"/>+ <IncludeRules context="FindVariable"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ <IncludeRules context="FindEscape"/>+ </context>++ <!-- $foo ${foo} $((...)) $(...) -->+ <context attribute="Command" lineEndContext="#pop" name="FindVariableOrCurrentStyle">+ <DetectChar context="VariableOrCurrentStyle" char="$" lookAhead="1"/>+ </context>+ <context attribute="Command" lineEndContext="#pop" name="VariableOrCurrentStyle">+ <IncludeRules context="DispatchVariables"/>+ <DetectChar context="#pop" char="$"/>+ </context>+ <!-- $foo ${foo} $((...)) $(...) -->+ <context attribute="Normal Text" lineEndContext="#pop" name="FindVariable">+ <DetectChar context="RegularVariable" char="$" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable">+ <IncludeRules context="DispatchVariables"/>+ <DetectChar attribute="Normal Text" context="#pop" char="$"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings">+ <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="FindStringsThenPop">+ <DetectChar attribute="String SingleQ" context="#pop!StringSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="#pop!StringDQ" char="""/>+ </context>++ <!-- SubstCommand is called after a $( is encountered -->+ <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command">+ <DetectChar attribute="Parameter Expansion" context="#pop" char=")" endRegion="subshell"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- VarBraceStart is called as soon as ${ is encoutered -->+ <context attribute="Variable" lineEndContext="#pop!VarCmd" name="VarBraceStart" fallthroughContext="#pop!CheckVarAlt">+ <DetectChar attribute="Parameter Expansion" context="#pop!VarFlags" char="("/>+ <AnyChar attribute="Parameter Expansion" context="#pop!VarCmd" String="&ws;|"/>+ <DetectChar attribute="Normal Text" context="#pop!VarCmdVar" char="{"/>+ <IncludeRules context="VarFlagsVar"/>+ </context>+ <context attribute="Variable" lineEndContext="#stay" name="VarBraceStartRecursive" fallthroughContext="#pop#pop!CheckVarAlt">+ <Detect2Chars attribute="Parameter Expansion" context="VarBraceStart" char="$" char1="{"/>+ <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>+ <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>+ <DetectChar attribute="Error" context="#pop" char="$"/>+ </context>+ <context attribute="Error" lineEndContext="#stay" name="VarError">+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>+ <IncludeRules context="FindSubscript"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="%" char1="%"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#" char1="#"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="#%"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValuePrefix" char=":"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/" char1="/"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#pop!VarSub" name="AlternateValuePrefix" fallthroughContext="#pop!VarSub">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?|*^"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>+ <IncludeRules context="VarBraceModifierOrArithmetic"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#pop!VarSub" name="VarBraceModifierOrArithmetic" fallthroughContext="#pop!VarSub">+ <AnyChar context="#pop!VarBraceModifiers" String="aAcehlpPqQrsg&tufFwW" lookAhead="1"/>+ <DetectIdentifier attribute="Error" context="#pop!VarBraceModifiers"/>+ </context>++ <!-- ${var:h:s/...}+ ~~~+ -->+ <context attribute="Error" lineEndContext="#stay" name="VarBraceModifiers" fallthroughContext="VarBraceModifierNext">+ <AnyChar attribute="Parameter Expansion" context="VarBraceModifierNext" String="aAcelpPqQr&u"/>+ <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>+ <AnyChar attribute="Parameter Expansion" String="fw"/>+ <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_s" String="s"/>+ <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_s" String="gs"/>+ <StringDetect attribute="Parameter Expansion" context="VarBraceModifierNext" String="g&"/>+ <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_W" String="W"/>+ <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_F" String="F"/>+ <!-- TODO ${a:2:2:a} VarSub amène à VarSub or VarBraceModifierNext quand : (pas plus de 2)-->+ </context>+ <context attribute="Error" lineEndContext="#stay" name="VarBraceModifierNext">+ <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="&brace_close;"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>+ <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>+ </context>++ <!-- ${var:h3} ${var:t11}+ ~ ~~+ -->+ <context attribute="Parameter Expansion" lineEndContext="#pop!VarBraceModifierNext" name="VarBraceModifier_h" fallthroughContext="#pop!VarBraceModifierNext">+ <IncludeRules context="FindDigit"/>+ </context>+++ <!-- ${var:s/../....}+ ~~~~~...+ -->+ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_s" fallthroughContext="#pop!VarBraceModifierNext">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Str" char="/"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_StrSQ_Sep" char="'"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_StrDQ_Sep" char='"'/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_C_Rep!VarBraceModifier_s_C_Str" String="([^&symbolseps;\[\]{}\\])"/>+ </context>+ <context attribute="Verbatim String" name="VarBraceModifier_End">+ <AnyChar context="#pop!VarBraceModifierNext" String="&symbolseps;&brace_close;" lookAhead="1"/>+ </context>+ <context attribute="Verbatim String" name="VarBraceModifier_End2">+ <AnyChar context="#pop#pop!VarBraceModifierNext" String="&symbolseps;&brace_close;" lookAhead="1"/>+ </context>+ <!-- By default the left-hand side of substitutions are character strings,+ but pattern with HIST_SUBST_PATTERN option. Assume no option. -->+ <!-- ${var:s/../....}+ ~~~+ -->+ <context attribute="Verbatim String" name="VarBraceModifier_s_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="/"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ" char='"'/>+ <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_StrSQ!VarBraceModifier_s_StrDQ_to_Rep!VarBraceModifier_s_Str_Recursive" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>+ </context>+ <context attribute="Verbatim String" name="VarBraceModifier_s_Str_Recursive">+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ_Recursive" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ_Recursive" char='"'/>+ <DetectChar attribute="Verbatim String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!VarBraceModifier_s_Str_Recursive" char="{"/>+ <DetectChar context="#pop#pop#pop" char="}"/>+ </context>+ <!-- #pop -> is VarBraceModifier_s_C_Rep -->+ <context attribute="Verbatim String" name="VarBraceModifier_s_C_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindEscape"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindStrings"/>+ <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_C_Str_Recursive" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop#pop#pop" char="}"/>+ </context>+ <context attribute="Verbatim String" name="VarBraceModifier_s_C_Str_Recursive">+ <IncludeRules context="FindEscape"/>+ <IncludeRules context="FindStrings"/>+ <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_C_Str_Recursive" char="{"/>+ <DetectChar context="#pop" char="}"/>+ </context>+ <!-- ${var:s/..'../..'..} ${var:s/..'..'../..}+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="VarBraceModifier_s_StrSQ">+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ <LineContinue attribute="Escape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepSQ" char="/"/>+ </context>+ <context attribute="Error" name="Modifier_s_Str_to_Parent">+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ </context>+ <context attribute="String SingleQ" name="VarBraceModifier_s_StrSQ_Recursive">+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ <LineContinue attribute="Escape"/>+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ </context>+ <!-- ${var:s'..'..}+ ~~~~+ -->+ <context attribute="Verbatim String" name="VarBraceModifier_s_StrSQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="'"/>+ <LineContinue attribute="Escape"/>+ </context>+ <!-- ${var:s/.."../.."..} ${var:s/..".."../..}+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ">+ <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepDQ" char="/"/>+ </context>+ <context attribute="Error" name="VarBraceModifier_s_StrDQ_to_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepDQ" char="/"/>+ </context>+ <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ_Recursive">+ <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>+ <IncludeRules context="FindEscape"/>+ <DetectChar context="#pop#pop" char="/" lookAhead="1"/>+ </context>+ <!-- ${var:s".."..}+ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char='"'/>+ <IncludeRules context="FindEscape"/>+ </context>+ <!-- ${var:s/../....}+ ~~..+ -->+ <context attribute="Replacement String" name="VarBraceModifier_s_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierNext" char="/"/>+ <!-- FindWord with a search for '/' in single and double quoted string -->+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ" char="""/>+ <DetectChar attribute="Replacement String" context="VarBraceModifier_s_RepSQ!VarBraceModifier_s_RepDQ_to_End!VarBraceModifier_s_Rep_Recursive" char="&brace_open;"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <IncludeRules context="VarBraceModifier_End"/>+ </context>+ <context attribute="Replacement String" name="VarBraceModifier_s_Rep_Recursive">+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ_Recursive" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ_Recursive" char='"'/>+ <DetectChar attribute="Replacement String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!VarBraceModifier_s_Rep_Recursive" char="{"/>+ <DetectChar context="#pop#pop#pop" char="}"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>+ </context>+ <context attribute="Replacement String" name="VarBraceModifier_s_C_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierNext" char="1" dynamic="1"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>+ <DetectChar attribute="Replacement String" context="VarBraceModifier_s_C_Rep_Recursive" char="&brace_open;"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <IncludeRules context="VarBraceModifier_End"/>+ </context>+ <context attribute="Replacement String" name="VarBraceModifier_s_C_Rep_Recursive">+ <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <DetectChar attribute="Replacement String" context="VarBraceModifier_s_C_Rep_Recursive" char="{"/>+ <DetectChar context="#pop" char="}"/>+ <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>+ </context>+ <context attribute="Replacement String" name="VarBraceModifier_s_Rep_Common">+ <IncludeRules context="FindVariable"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ <IncludeRules context="FindEscape"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobRangeOrError"/>+ </context>+ <!-- ${var:s/../..'../'..} ${var:s/../..'..'..}+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="VarBraceModifier_s_RepSQ">+ <IncludeRules context="VarNameModifier_s_C_RepSQ"/>+ <DetectChar attribute="Error" context="#pop#pop!VarBraceModifierNext!StringSQ" char="/"/>+ </context>+ <context attribute="String SingleQ" name="VarBraceModifier_s_RepSQ_Recursive">+ <IncludeRules context="VarNameModifier_s_C_RepSQ"/>+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ </context>+ <!-- ${var:s/../.."../"..} ${var:s/../..".."..}+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ">+ <IncludeRules context="VarNameModifier_s_C_RepDQ"/>+ <DetectChar attribute="Error" context="#pop#pop!VarBraceModifierNext!StringDQ" char="/"/>+ </context>+ <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ_Recursive">+ <IncludeRules context="VarNameModifier_s_C_RepDQ"/>+ <DetectChar context="#pop#pop" char="/" lookAhead="1"/>+ </context>+ <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ_to_End">+ <DetectChar attribute="Error" context="#pop#pop#pop!VarBraceModifierNext!StringDQ" char="/"/>+ </context>+++ <!-- ${var:F(expr)h}+ ~~~~~~+ -->+ <context attribute="Normal Text" name="VarBraceModifier_F" lineEndContext="BraceArithmeticParamNL" fallthroughContext="#pop!VarBraceModifierNext">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="BraceArithmeticParamDyn" String="([^&symbolseps;])"/>+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamParen">+ <IncludeRules context="BraceVerbatimParamParen"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamBracket">+ <IncludeRules context="BraceVerbatimParamBracket"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamBrace">+ <IncludeRules context="BraceVerbatimParamBrace"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamColon">+ <IncludeRules context="BraceVerbatimParamColon"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamDyn">+ <IncludeRules context="BraceVerbatimParamDyn"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <!-- ${var:F+ ^ new line -> BraceArithmeticParamNL+ arithmetic or empty line+ ^ new line -> BraceArithmeticParamNL2+ }+ -->+ <context attribute="Normal Text" name="BraceArithmeticParamNL" lineEmptyContext="#pop!BraceArithmeticParamNL2" fallthroughContext="#pop!BraceArithmeticParamNL2">+ </context>+ <context attribute="Normal Text" name="BraceArithmeticParamNL2" lineEndContext="#pop#pop">+ <IncludeRules context="BraceVerbatimParamNL2"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <!-- ${var:W(xxx)h}+ ~~~~~+ -->+ <context attribute="Normal Text" name="VarBraceModifier_W" lineEndContext="BraceVerbatimParamNL" fallthroughContext="#pop!VarBraceModifierNext">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="BraceVerbatimParamDyn" String="([^&symbolseps;])"/>+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamParen">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>+ <IncludeRules context="VarBraceModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamBracket">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>+ <IncludeRules context="VarBraceModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamBrace">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>+ <IncludeRules context="VarBraceModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamColon">+ <IncludeRules context="VarBraceModifier_End2"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamDyn">+ <IncludeRules context="VarBraceModifier_End2"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>+ </context>+ <!-- ${var:W+ ^ new line -> BraceVerbatimParamNL+ sep or empty line+ ^ new line -> BraceVerbatimParamNL2+ }+ -->+ <context attribute="Verbatim String" name="BraceVerbatimParamNL" lineEmptyContext="#pop!BraceVerbatimParamNL2" fallthroughContext="#pop!BraceVerbatimParamNL2">+ </context>+ <context attribute="Verbatim String" name="BraceVerbatimParamNL2" lineEndContext="#pop#pop">+ <IncludeRules context="VarBraceModifier_End2"/>+ </context>+++ <!-- called as soon as ${xxx: is encoutered and followed by a arithmetic context (not modifier, etc) -->+ <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierOrArithmetic" char=":"/>+ <IncludeRules context="FindArithmetic"/>+ </context>++ <!-- called as soon as ${xxx:-, etc are encoutered -->+ <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternateValue">+ <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindPathThenPopInAlternateValue"/>+ <DetectIdentifier attribute="String DoubleQ"/>+ </context>+ <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternateValue">+ <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindPathThenPopInAlternateValue"/>+ <DetectIdentifier attribute="String DoubleQ"/>+ </context>++ <!-- called as soon as ${xxx%, etc are encoutered -->+ <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternatePatternValue">+ <DetectChar attribute="String DoubleQ" context="RecursiveAlternatePatternValue" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindStringDQPattern"/>+ <DetectIdentifier attribute="String DoubleQ"/>+ </context>+ <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternatePatternValue">+ <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>+ <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindStringDQPattern"/>+ <DetectIdentifier attribute="String DoubleQ"/>+ </context>++ <!-- called as soon as ${xxx/ ${xxx// ${xxx:/ are encoutered -->+ <context attribute="Normal Text" lineEndContext="#stay" name="VarBraceSubst" fallthroughContext="#pop!VarBraceSubstPat">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" char="#" char1="%"/>+ <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" String="#%"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="VarBraceSubstPat">+ <DetectChar attribute="Parameter Expansion Operator" context="VarBraceSubstRep" char="/"/>+ <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSubPattern"/>+ <DetectIdentifier attribute="Pattern"/>+ </context>+ <!-- ${foo/.../...}+ ~~~~+ -->+ <context attribute="Replacement String" lineEndContext="#stay" name="VarBraceSubstRep">+ <DetectChar attribute="Replacement String" context="VarBraceSubstRepRec" char="{"/>+ <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ </context>+ <context attribute="Replacement String" lineEndContext="#stay" name="VarBraceSubstRepRec">+ <DetectChar attribute="Replacement String" context="VarBraceSubstRepRec" char="{"/>+ <DetectChar attribute="Replacement String" context="#pop" char="}"/>+ <IncludeRules context="FindWord"/>+ </context>++ <!-- called as soon as ${( is encoutered -->+ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlags">+ <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#%*q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNR"/>+ <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="sjgZ_"/>+ <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_l" String="lrI"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlagsSubs" char="p"/>++ <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>+ <DetectChar attribute="Error" context="#pop" char="}"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlagsSubs">+ <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNRp"/>+ <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="gZ"/>+ <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_ps" String="sj_"/>+ <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_pl" String="lrI"/>++ <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>+ <DetectChar attribute="Error" context="#pop" char="}"/>+ </context>+ <context attribute="Variable" lineEndContext="#stay" name="VarFlagsVar" fallthroughContext="#pop!CheckVarAlt">+ <DetectChar context="VarBraceStartRecursive" char="$" lookAhead="1"/>+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <DetectChar attribute="String DoubleQ" context="StringDQ" char="""/>+ <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#+^=~"/>+ <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>+ <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$-"/>+ <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator="#~=^+{}[]:-/$"/>+ <Detect2Chars context="#pop!VarSubShell" char="!" char1="}" lookAhead="1"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="!"/>+ </context>++ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarSubShell">+ <DetectChar attribute="Variable" context="#pop!CheckVarAlt" char="!"/>+ </context>++ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_s">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s[" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s<" char="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s{" char="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s(" char="("/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_sx" String="(.)"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s[">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s<">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s{">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s(">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_sx">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<" char="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{" char="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(" char="("/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lx" String="(.)"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l[">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[s" char="]" char1="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l<">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l<s" char=">" char1="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l{">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{s" char="}" char1="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l(">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(s" char=")" char1="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_lx">+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lxs" String="(%1)%1" dynamic="1"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l[s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l<s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l{s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l(s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_lxs">+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ </context>++ <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_ps">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps[" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps<" char="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps{" char="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps(" char="("/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_psx" String="(.)"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps[">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\])"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps<">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>+ <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=>)"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps{">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>+ <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=})"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps(">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>+ <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\))"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_psx">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <RegExpr attribute="Variable" context="#stay" String="\$(?!%1)(?:[A-Za-z_](?:(?!%1)[A-Za-z0-9_])*+|(?:(?!%1)[0-9])++)(?=%1)" dynamic="1"/>+ <RegExpr attribute="String SingleQ" context="#stay" String="[^%1]+" dynamic="1"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<" char="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{" char="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(" char="("/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plx" String="(.)"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl[">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[s" char="]" char1="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl<">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl<s" char=">" char1="<"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl{">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{s" char="}" char1="{"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl(">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(s" char=")" char1="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_plx">+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plxs" String="(%1)%1" dynamic="1"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl[s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>+ <IncludeRules context="VarFlag_ps["/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl<s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="<"/>+ <IncludeRules context="VarFlag_ps<"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl{s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>+ <IncludeRules context="VarFlag_ps{"/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl(s">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>+ <IncludeRules context="VarFlag_ps("/>+ </context>+ <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_plxs">+ <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>+ <IncludeRules context="VarFlag_psx"/>+ </context>++ <!-- brace command substitution:+ ${|cmd} ${ cmd }+ ~~~~ ~~~~~+ -->+ <context attribute="Normal Text" lineEndContext="#stay" name="VarCmd" fallthroughContext="Command">+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ <IncludeRules context="Start"/>+ </context>+ <!-- ${{param} cmd}+ ~~~~~~~+ -->+ <context attribute="Variable" lineEndContext="#stay" name="VarCmdVar">+ <DetectChar attribute="Normal Text" context="VarCmdCheckSpace" char="}"/>+ <AnyChar attribute="Error" context="#pop!VarCmd" String="&ws;"/>+ <IncludeRules context="FindSubscript"/>+ </context>+ <context attribute="Variable" lineEndContext="#pop#pop!VarCmd" name="VarCmdCheckSpace">+ <DetectChar attribute="Normal Text" context="#pop#pop!VarCmd" char=" "/>+ <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>+ <RegExpr attribute="Error" context="#pop#pop!VarCmd" String="."/>+ </context>++ <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">+ <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>+ </context>+ <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Escape" context="#pop" char="}"/>+ <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>+ <IncludeRules context="FindVariableOrCurrentStyle"/>+ <IncludeRules context="FindStrings"/>+ <IncludeRules context="FindPattern"/>+ <DetectIdentifier attribute="Escape"/>+ </context>+ <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>+ </context>++ <context attribute="Escape" lineEndContext="#pop" name="PathBraceExpansion">+ <DetectChar attribute="Escape" context="#pop!PathBraceExpansion2" char="{"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="PathBraceExpansion2">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Escape" context="#pop" char="}"/>+ <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindPattern"/>+ <DetectIdentifier attribute="Path"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">+ <AnyChar attribute="Number" context="#stay" String="0123456789-"/>+ <IncludeRules context="FindWord"/>+ <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>+ <DetectChar attribute="Escape" context="#pop" char="}"/>+ </context>++<!-- ====== These are the contexts that can be branched to ======= -->++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenOrSubShell">+ <RegExpr attribute="Keyword" context="#pop!SubShell" String="\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>+ <Detect2Chars attribute="Keyword" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>+ </context>+ <!-- ExprDblParen consumes an expression started in command mode till )) -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>+ <IncludeRules context="FindExprDblParen"/>+ <!-- ((cmd+ ) # jump to SubShell context -->+ <DetectChar attribute="Keyword" context="#pop!SubShell" char=")" endRegion="expression" beginRegion="subshell"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen">+ <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Normal Text" context="#pop" char=")"/>+ <IncludeRules context="FindExprDblParen"/>+ </context>+ <context attribute="Error" lineEndContext="#pop" name="MaybeArithmeticBrace">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Error" context="#pop" char="{"/>+ </context>++ <context attribute="Number" name="FindBranchCondition">+ <Detect2Chars attribute="Control" context="#stay" char="&" char1="&"/>+ <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>+ </context>++ <context attribute="Number" name="FindArithmetic">+ <IncludeRules context="FindBranchCondition"/>+ <AnyChar attribute="Operator" String="&arithmetic_op;"/>+ <IncludeRules context="FindNumber"/>+ <IncludeRules context="FindSubscript"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindToNum"/>+ <DetectChar attribute="Control" char=","/>+ <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>+ <DetectIdentifier attribute="Variable"/>+ </context>++ <context attribute="Number" name="FindToNum">+ <Detect2Chars attribute="Base" context="ChToNum" char="#" char1="#"/>+ <DetectChar attribute="Base" context="MaybeOutputBase" char="#"/>+ </context>+ <!-- ##c in ((##c)) -->+ <context attribute="Normal Text" lineEndContext="#pop" name="ChToNum" fallthroughContext="#pop">+ <LineContinue attribute="Escape"/>+ <!-- '##\)' is ok, but not '##\(' -->+ <RegExpr attribute="BaseN" context="#pop" String="[^\[\]()\\$^]|\$(?=$|\)|[^+=:#^~+$@*'?{(\w])|\^?\\(&escaped_ch;|[^\[\]\(])|\^[^\[\]()\\]|\^(?=[)])"/>+ </context>+ <!-- #n in ((#n)) -->+ <context attribute="Normal Text" lineEndContext="#pop" name="MaybeOutputBase" fallthroughContext="#pop">+ <AnyChar attribute="BaseN" String="0123456789_"/>+ </context>++ <context attribute="Number" name="FindDigit">+ <AnyChar attribute="Number" context="#stay" String="0123456789"/>+ </context>++ <context attribute="Number" name="FindNumber">+ <AnyChar context="Number" String="0123456789." lookAhead="1"/>+ </context>+ <context attribute="Number" lineEndContext="#pop" name="Number">+ <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>+ <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>+ <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9_]*+#"/>+ <RegExpr attribute="Number" context="#pop" String="∫(\._*+(∫&exp;?+|&exp;)?|&exp;)?|\._*+∫&exp;?"/>+ <DetectChar attribute="Operator" context="#pop" char="."/>+ </context>+ <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">+ <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F_]+"/>+ </context>+ <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">+ <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand">+ <RegExpr attribute="Parameter Expansion" context="#pop!SubstCommand" String="\$\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>+ <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/>+ </context>+ <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <Detect2Chars attribute="Parameter Expansion" context="#pop" char=")" char1=")" endRegion="expression"/>+ <IncludeRules context="FindExprDblParen"/>+ <!-- $((cmd+ ) # jump to SubstCommand context -->+ <DetectChar attribute="Parameter Expansion" context="#pop!SubstCommand" char=")" endRegion="expression" beginRegion="subshell"/>+ </context>++ <!-- ExprBracket consumes an expression till ] -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindExprBracketEnd"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/>+ <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1=" " lookAhead="1"/>+ <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1="&tab;" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot">+ <DetectChar attribute="Expression" context="#pop" char="!"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="ExprBracketValue">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/>+ <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>+ <IncludeRules context="FindExprBracketEnd"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValue">+ <AnyChar context="#pop" String="&ws;" lookAhead="1"/>+ <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindGlobAny"/>+ <IncludeRules context="FindPathThenPop"/>+ <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>+ <DetectIdentifier attribute="Normal Text"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueRecBrace">+ <AnyChar context="#pop#pop" String="&ws;" lookAhead="1"/>+ <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindGlobAny"/>+ <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar attribute="Normal Text" context="#pop" char="}"/>+ <DetectIdentifier attribute="Normal Text"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>+ <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>+ <IncludeRules context="FindExprBracketEnd"/>+ </context>++ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">+ <LineContinue attribute="Escape" context="SkipSpaces"/>+ </context>+ <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>+ <IncludeRules context="FindExprBracketEnd"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindExprBracketEnd"/>+ <RegExpr attribute="Expression" context="#pop!ExprBracket" String="-[ao]&eos;"/>+ <RegExpr attribute="Error" context="#pop" String="(?:[^]&ws;]++|\][^&ws;])++" endRegion="expression"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">+ <IncludeRules context="FindEscape"/>+ <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[&ws;;|&<>)]))" endRegion="expression"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">+ <RegExpr attribute="Expression" context="#pop#pop!ExprBracketParam2" String="&unary_operators;"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">+ <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">+ <DetectSpaces context="#pop"/>+ </context>+++ <!-- ExprDblBracket consumes an expression till ]] -->+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindExprDblBracketEnd"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">+ <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/> <IncludeRules context="FindSpaceAndComment"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">+ <RegExpr attribute="Expression" context="#pop" String="!(?=$|[&ws;(])"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValueText">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>+ <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>+ <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>+ <IncludeRules context="FindExprDblBracketEnd"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValueText">+ <RegExpr attribute="Expression" context="#pop!ExprDblBracketUnary" String="&unary_operators;(?!\s+(?:=~|&binary_operators;))"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketUnary" fallthroughContext="#pop!ExprDblBracketValueText">+ <IncludeRules context="FindSpaceAndComment"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">+ <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>+ <DetectChar attribute="Operator" context="#pop" char=")"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText" fallthroughContext="#pop!ExprDblBracketValueText2">+ <Detect2Chars context="#pop!ExprDblBracketValueTextMaybeEnd" char="]" char1="]" lookAhead="1"/>+ <IncludeRules context="FindExprDblBracketValueTextPath"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="FindExprDblBracketValueTextPath">+ <RegExpr context="#pop!ExprDblBracketValueTextPath" String="&path_with_sep;|" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeEnd">+ <RegExpr attribute="Keyword" context="#pop#pop" String="&dblbracket_close;" endRegion="expression"/>+ <IncludeRules context="FindExprDblBracketValueTextPath"/>+ <Detect2Chars context="#pop!ExprDblBracketValueText2" char="]" char1="]" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText2">+ <DetectIdentifier/>+ <AnyChar String="*?+@~^:%+-/,"/>+ <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/>+ <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>+ <AnyChar context="#pop" String="&ws;)" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindGroupPattern"/>+ <AnyChar attribute="Error" context="#stay" String="&;|"/>+ <DetectChar context="ExprDblBracketValueTextMaybeRange" char="<" lookAhead="1"/>+ <DetectChar attribute="Expression" context="#pop!ExprDblBracketValuePattern" char=">"/>+ </context>+ <context attribute="Path" lineEndContext="#pop" name="ExprDblBracketValueTextPath">+ <IncludeRules context="ExprDblBracketValueText2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeRange">+ <RegExpr context="#pop" String="&globrange;"/>+ <DetectChar attribute="Expression" context="#pop#pop!ExprDblBracketValuePattern" char="<"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern" fallthroughContext="#pop!ExprDblBracketValuePattern2">+ <RegExpr context="ExprDblBracketValuePatternPath" String="&path_with_sep;|" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePatternPath" fallthroughContext="#pop!PathThenPop">+ <DetectChar attribute="Path" context="#pop!PathThenPop" char="~"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern2">+ <DetectIdentifier attribute="Normal Text"/>+ <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&" char1="&"/>+ <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>+ <AnyChar context="#pop" String="&ws;)" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobAny"/>+ <IncludeRules context="FindGroupPattern"/>+ <IncludeRules context="FindGlobRangeOrError"/>+ <AnyChar attribute="Error" context="#stay" String=">&|;"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2">+ <IncludeRules context="FindSpaceAndComment"/>+ <LineContinue attribute="Escape"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValuePattern">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>+ <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>+ <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="<>"/>+ <IncludeRules context="FindExprDblBracketEnd"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValuePattern">+ <IncludeRules context="TestMaybeBinary"/>+ <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~&eos;"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">+ <IncludeRules context="ExprDblBracketParam2"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValuePattern">+ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>+ <IncludeRules context="FindExprDblBracketEnd"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValuePattern">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <IncludeRules context="FindExprDblBracketEnd"/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ <RegExpr attribute="Error" context="#pop" String="(?:[^]&ws;]++|\](?:[^]]|\][^&ws;]))++" endRegion="expression"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd">+ <IncludeRules context="FindEscape"/>+ <DetectChar context="#pop" char=")" lookAhead="1"/>+ <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&" char1="&"/>+ <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>+ <RegExpr attribute="Keyword" context="#pop" String="&dblbracket_close;" endRegion="expression"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!Regex">+ <IncludeRules context="FindSpaceAndComment"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="Regex">+ <DetectIdentifier attribute="Pattern"/>+ <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>+ <DetectChar attribute="Operator" context="#pop" char=")"/>+ <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>+ <DetectChar attribute="Operator" context="RegexChar" char="["/>+ <IncludeRules context="FindRegex"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">+ <DetectIdentifier attribute="Pattern"/>+ <DetectSpaces attribute="Pattern" context="#stay"/>+ <DetectChar attribute="Operator" context="#pop" char=")"/>+ <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>+ <DetectChar attribute="Operator" context="RegexSubChar" char="["/>+ <IncludeRules context="FindRegex"/>+ </context>++ <context attribute="Pattern" lineEndContext="#stay" name="FindRegex">+ <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/>+ <DetectChar attribute="Escape" context="RegexEscape" char="\"/>+ <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/>+ <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/>+ <IncludeRules context="FindStrings"/>+ <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">+ <IncludeRules context="DispatchVariables"/>+ <DetectChar attribute="Operator" context="#pop" char="$"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape">+ <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">+ <Int attribute="Number"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>+ <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>+ </context>++ <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar">+ <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/>+ </context>+ <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar">+ <DetectSpaces attribute="Pattern" context="#stay"/>+ <IncludeRules context="RegexInChar"/>+ </context>++ <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar">+ <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/>+ </context>+ <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar">+ <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/>+ <DetectChar attribute="Operator" context="#stay" char="-"/>+ <DetectChar attribute="Escape" context="RegexEscape" char="\"/>+ <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>+ <DetectChar attribute="Operator" context="#pop" char="]"/>+ <AnyChar context="#pop" String="()&ws;" lookAhead="1"/>+ <IncludeRules context="FindStrings"/>+ </context>+ <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">+ <DetectChar attribute="Pattern" context="#stay" char="-"/>+ <DetectChar attribute="Operator" context="#pop#pop" char="]"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect">+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/>+ <DetectChar attribute="Pattern" context="#pop" char="["/>+ </context>++ <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">+ <DetectIdentifier attribute="Parameter Expansion"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>+ <DetectChar attribute="Error" context="#pop" char="]"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">+ <DetectIdentifier attribute="Parameter Expansion"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>+ <DetectChar attribute="Error" context="#pop" char="]"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">+ <DetectIdentifier attribute="Parameter Expansion"/>+ <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>+ <DetectChar attribute="Error" context="#pop" char="]"/>+ </context>++ <!-- SubShell consumes shell input till ) -->+ <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">+ <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- Assign consumes an expression till EOL or whitespace -->+ <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!RegularAssign">+ <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="RegularAssign" fallthroughContext="#pop">+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ <IncludeRules context="NormalOption"/>+ </context>++ <!-- AssignArray consumes everything till ), marking assignments -->+ <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">+ <IncludeRules context="FindSpaceAndComment"/>+ <DetectChar attribute="Variable" context="#pop" char=")"/>+ <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>+ <DetectChar attribute="Control" context="#stay" char=";"/>+ <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop">+ <DetectChar attribute="Parameter Expansion Operator" context="AssignArrayKeySubscript" char="["/>+ <DetectChar attribute="Variable" context="#pop" char="="/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command">+ <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/>+ <DetectChar attribute="Comment" context="CommentBackq" char="#"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- arr=([...]=...)+ ~~~+ -->+ <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKeySubscript">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ <DetectChar attribute="Control" context="#pop#pop" char=";"/>+ <IncludeRules context="FindWord"/>+ <AnyChar attribute="Error" context="#pop" String="&symbolseps;"/>+ </context>++ <!-- Subscript consumes anything till ], marks as Variable -->+ <context attribute="Normal Text" name="FindSubscript">+ <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="SubscriptArithmetic">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>+ <IncludeRules context="InSubscript"/>+ </context>+ <context attribute="Normal Text" name="InSubscript">+ <DetectChar context="SubscriptMaybeFlag" char="(" lookAhead="1"/>+ <!-- so that '-1' in '$var[-1]' is a number rather than an operator -->+ <DetectChar attribute="Number" context="SubscriptArithmetic" char="-"/>+ <LineContinue attribute="Escape"/>+ </context>+ <!-- $var[(flag)...]+ ~+ -->+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptMaybeFlag" fallthroughContext="#pop!SubscriptArithmetic">+ <RegExpr attribute="Parameter Expansion" context="SubscriptFlag" String="\((?=(?:[wpfrRiIkKe]+|[snb](?::[^:]*:|\[[^&bracket_close;]*\]|\{[^&brace_close;]*\}|\([^&paren_close;]*\)|([^&paren_close;&brace_close;]).*?\1))+\))"/>+ </context>+ <context attribute="Parameter Expansion" lineEndContext="#stay" name="SubscriptFlag">+ <DetectChar attribute="Parameter Expansion" context="SubscriptPattern" char=")"/>+ <AnyChar attribute="Parameter Expansion" context="SubscriptFlagParam" String="snb"/>+ </context>+ <!-- $var[(s:flag:)...]+ ~+ -->+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParam">+ <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamReg" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamParen" char="&paren_open;"/>+ <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamBrace" char="&brace_open;"/>+ <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamBracket" char="&bracket_open;"/>+ <RegExpr attribute="Parameter Expansion Operator" context="SubscriptFlagParamAny" String="(.)"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamReg">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamParen">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&paren_close;"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamBrace">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&brace_close;"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamBracket">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&bracket_close;"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamAny">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <!-- $var[(flag)...]+ ~~~+ -->+ <context attribute="Pattern" lineEndContext="#stay" name="SubscriptPattern">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop" char="]"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop" char=","/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindSingleGlob"/>+ <IncludeRules context="FindGlobAny"/>+ <IncludeRules context="FindGroupPattern"/>+ </context>+ <!-- $var[...]+ ~~~ math+ Same as FindArithmetic, but with a difference for Operator, '$' and text+ which are not variables in this context.+ A text is a variable only with a non-associative array.+ -->+ <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptArithmetic">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>+ <IncludeRules context="FindBranchCondition"/>+ <AnyChar attribute="Operator" context="#pop" String="@&arithmetic_op;"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=","/>+ <IncludeRules context="FindNumber"/>+ <IncludeRules context="FindSubscript"/>+ <IncludeRules context="FindStrings"/>+ <DetectChar context="VariableOrSubscriptPos" char="$" lookAhead="1"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ <IncludeRules context="FindEscape"/>+ <IncludeRules context="FindToNum"/>+ <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#pop" name="VariableOrSubscriptPos">+ <IncludeRules context="DispatchVariables"/>+ <DetectChar attribute="Number" context="#pop" char="$"/>+ </context>++ <!-- FunctionDef consumes a name, possibly with (), marks as Function -->+ <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop">+ <Detect2Chars attribute="Operator" context="#pop" char="(" char1=")"/>+ <DetectSpaces attribute="Normal Text" context="FunctionNameStart"/>+ </context>+ <context attribute="Function" lineEndContext="#pop" name="FunctionNameStart" fallthroughContext="#pop!FunctionName">+ <AnyChar context="#pop#pop" String="&symbolseps;#" lookAhead="1"/>+ <DetectChar context="FunctionNameStartMaybeBraceExpansion" char="{" lookAhead="1"/>+ </context>+ <context attribute="Function" lineEndContext="#pop" name="FunctionName">+ <AnyChar context="#pop" String="&ws;(" lookAhead="1"/>+ <IncludeRules context="FindWord"/>+ <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>+ <DetectIdentifier attribute="Function"/>+ </context>+ <context attribute="Function" lineEndContext="#pop" name="FunctionNameRecBrace" fallthroughContext="#pop">+ <IncludeRules context="FindWord"/>+ <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>+ <DetectChar attribute="Function" context="#pop" char="}"/>+ <DetectIdentifier attribute="Function"/>+ </context>+ <context attribute="Function" lineEndContext="#pop" name="FunctionNameStartMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Keyword" context="#pop#pop#pop!Group" char="{" beginRegion="group"/>+ </context>+ <context attribute="Function" lineEndContext="#pop" name="FunctionNameMaybeBraceExpansion">+ <IncludeRules context="DispatchBraceExpansion"/>+ <DetectChar attribute="Function" context="#pop!FunctionNameRecBrace" char="{" beginRegion="group"/>+ </context>++ <!-- Case is called after the case keyword is encoutered. We handle this because of+ the lonely closing parentheses that would otherwise disturb the expr matching -->+ <context attribute="Normal Text" lineEndContext="#stay" name="Case">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Keyword" context="#pop!CaseAlt" char="{"/>+ <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/>+ <IncludeRules context="FindWord"/>+ <DetectIdentifier attribute="Normal Text" context="#stay"/>+ </context>++ <!-- CaseIn is called when the construct 'case ... in' has been found. -->+ <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Keyword" context="CaseClosedPattern" char="("/>+ <DetectChar attribute="Comment" context="Comment" char="#"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">+ <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/>+ <IncludeRules context="CaseClosedPattern"/>+ </context>+ <context attribute="Pattern" lineEndContext="#stay" name="CaseClosedPattern">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Keyword" context="#stay" char="|"/>+ <IncludeRules context="FindWord"/>+ <IncludeRules context="FindPattern"/>+ <DetectIdentifier attribute="Pattern" context="#stay"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#stay" name="CaseAlt" fallthroughContext="CasePattern">+ <DetectSpaces attribute="Normal Text" context="#stay"/>+ <DetectChar attribute="Keyword" context="CasePattern" char="("/>+ <DetectChar attribute="Keyword" context="#pop!CaseAltEnd" char="}" endRegion="caseexpr" lookAhead="1"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="CaseAltEnd">+ <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="case"/>+ </context>++ <!-- CaseExpr eats shell input till ;; / ;& / ;| -->+ <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command">+ <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="|" endRegion="caseexpr"/>+ <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/>+ <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&" endRegion="caseexpr"/>+ <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/>+ <DetectChar context="#pop" char="}" lookAhead="1"/>+ <IncludeRules context="Start"/>+ </context>++ <!-- ExprGlobParen is called after a ( is encountered in a argument -->+ <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParen" fallthroughContext="#pop">+ <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlag" char="(" char1="#"/>+ <RegExpr attribute="Glob" context="#pop!ExtGlobPattern" String="\((?=&ispattern;)"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>+ </context>+ <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParenThenPath" fallthroughContext="#pop">+ <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlagThenPath" char="(" char1="#"/>+ <RegExpr attribute="Glob" context="#pop!ExtGlobPatternThenPath" String="\((?=&ispattern;)"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>+ </context>+ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier">+ <AnyChar attribute="Glob Flag" context="#stay" String="/F.@=p*%bcrwxAIERWXsStUG^-MTNDn"/>+ <AnyChar attribute="Glob Flag" context="GlobQualifier_e" String="eP"/>+ <AnyChar attribute="Glob Flag" context="GlobQualifier_u" String="ug"/>+ <AnyChar attribute="Glob Flag" context="GlobQualifier_a" String="amc"/>+ <AnyChar attribute="Glob Flag" context="GlobQualifier_o" String="oO"/>+ <DetectChar attribute="Glob Flag" context="GlobQualifier_f" char="f"/>+ <DetectChar attribute="Glob Flag" context="GlobQualifier_+" char="+"/>+ <DetectChar attribute="Glob Flag" context="GlobQualifier_d" char="d"/>+ <DetectChar attribute="Glob Flag" context="GlobQualifier_L" char="L"/>+ <DetectChar attribute="Glob Flag" context="GlobQualifier_Y" char="Y"/>+ <IncludeRules context="FindSubscript"/>++ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifiers" char=":"/>+ <DetectChar attribute="Glob Flag" context="#pop" char=")"/>+ <IncludeRules context="FindWord"/>+ </context>++ <context attribute="Normal Text" lineEndContext="#pop" name="GlobQualifier_o" fallthroughContext="#pop">+ <AnyChar attribute="Normal Text" context="#stay" String="nLlamcdN"/>+ </context>++ <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_Y" fallthroughContext="#pop">+ <IncludeRules context="FindDigit"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_L" fallthroughContext="#pop">+ <AnyChar attribute="Normal Text" context="#stay" String="kKmMpPgGtT"/>+ <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_a" fallthroughContext="#pop">+ <AnyChar attribute="Normal Text" context="#stay" String="Mwhmsd"/>+ <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_+" fallthroughContext="#pop">+ <RegExpr attribute="Function" context="#pop" String="[^&_fragpathseps;=,\[]+"/>+ </context>++ <context attribute="Path" lineEndContext="#pop" name="GlobQualifier_d">+ <AnyChar context="#pop" String=")," lookAhead="1"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_u">+ <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="0123456789"/>+ <IncludeRules context="GlobQualifier_e"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_f" fallthroughContext="#pop">+ <AnyChar attribute="Number" context="#pop!GlobQualifier_fo" String="0123456789=+-"/>+ <DetectChar attribute="Glob" context="#pop!GlobQualifier_fo" char="?"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f[" char="["/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f<" char="<"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f{" char="{"/>+ <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_fx" String="(.)"/>+ </context>+ <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_fo" fallthroughContext="#pop">+ <IncludeRules context="FindDigit"/>+ <DetectChar attribute="Glob" context="#stay" char="?"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f[">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Glob Flag" context="#pop" char="]"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f<">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Glob Flag" context="#pop" char=">"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f{">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Glob Flag" context="#pop" char="}"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_fx">+ <DetectChar attribute="Operator" context="#stay" char=","/>+ <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>+ </context>++ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_e" fallthroughContext="#pop">+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e[" char="["/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e<" char="<"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e{" char="{"/>+ <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_ex" String="(.)"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="IncGlobQualifier_e">+ <IncludeRules context="FindStrings"/>+ <IncludeRules context="FindVariable"/>+ <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e[">+ <DetectChar attribute="Glob Flag" context="#pop" char="]"/>+ <IncludeRules context="IncGlobQualifier_e"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e<">+ <DetectChar attribute="Glob Flag" context="#pop" char=">"/>+ <IncludeRules context="IncGlobQualifier_e"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e{">+ <DetectChar attribute="Glob Flag" context="#pop" char="}"/>+ <IncludeRules context="IncGlobQualifier_e"/>+ </context>+ <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_ex">+ <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="IncGlobQualifier_e"/>+ </context>++ <!-- GlobPatFlag is called after a (# is encountered -->+ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlag" fallthroughContext="#pop">+ <IncludeRules context="IncGlobPatFlag"/>+ <DetectChar attribute="Glob Flag" context="#pop" char=")"/>+ </context>+ <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlagThenPath" fallthroughContext="#pop">+ <IncludeRules context="IncGlobPatFlag"/>+ <DetectChar attribute="Glob Flag" context="#pop!PathThenPop" char=")"/>+ </context>+ <context attribute="Glob Flag" lineEndContext="#pop" name="IncGlobPatFlag" fallthroughContext="#pop">+ <AnyChar attribute="Glob Flag" context="#stay" String="ilIbBcmMaseuU,"/>+ <IncludeRules context="FindDigit"/>+ <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="q"/>+ </context>++ <!-- GlobModifier is called after a : is encountered in a GlobQualifier -->+ <context attribute="Error" lineEndContext="#pop" name="GlobModifiers" fallthroughContext="GlobModifierNext">+ <AnyChar attribute="Parameter Expansion" context="GlobModifierNext" String="aAcelpPqQrux"/>+ <AnyChar attribute="Parameter Expansion" context="GlobModifier_h" String="ht"/>+ <AnyChar attribute="Parameter Expansion" String="fw"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifier_s" String="s"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifier_s" String="gs"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifierNext" String="\&"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifierNext" String="g\&"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifier_W" String="W"/>+ <StringDetect attribute="Parameter Expansion" context="GlobModifier_F" String="F"/>+ </context>+ <context attribute="Error" lineEndContext="#pop#pop" name="GlobModifierNext">+ <DetectChar attribute="Glob Flag" context="#pop#pop" char="&paren_close;"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>+ <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>+ </context>++ <!-- *(:h3) *(:t11)+ ~ ~~+ -->+ <context attribute="Parameter Expansion" lineEndContext="#pop#pop" name="GlobModifier_h" fallthroughContext="#pop!GlobModifierNext">+ <IncludeRules context="FindDigit"/>+ </context>+++ <!-- *(#q:s/../....}+ ~~~~~...+ -->+ <context attribute="Parameter Expansion" lineEndContext="#stay" name="GlobModifier_s" fallthroughContext="#pop!GlobModifierNext">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Str" char="/"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_StrSQ_Sep" char="'"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_StrDQ_Sep" char='"'/>+ <RegExpr attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_C_Rep!GlobModifier_s_C_Str" String="([^&symbolseps;\[\]{}\\])"/>+ </context>+ <context attribute="Verbatim String" name="GlobModifier_End">+ <AnyChar context="#pop!GlobModifierNext" String="&wordseps;&paren_close;" lookAhead="1"/>+ </context>+ <context attribute="Verbatim String" name="GlobModifier_End2">+ <AnyChar context="#pop#pop!GlobModifierNext" String="&wordseps;&paren_close;" lookAhead="1"/>+ </context>+ <!-- By default the left-hand side of substitutions are character strings,+ but pattern with HIST_SUBST_PATTERN option. Assume no option. -->+ <!-- *(#q:s/../....)+ ~~~+ -->+ <context attribute="Verbatim String" name="GlobModifier_s_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="/"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="String SingleQ" context="GlobModifier_s_StrSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="GlobModifier_s_StrDQ" char='"'/>+ <DetectChar attribute="Verbatim String" context="GlobModifier_s_StrSQ!GlobModifier_s_StrDQ_to_Rep!GlobModifier_s_Str_Recursive" char="("/>+ <DetectChar attribute="Glob Flag" context="#pop#pop" char=")"/>+ </context>+ <context attribute="Verbatim String" name="GlobModifier_s_Str_Recursive">+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ_Recursive" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ_Recursive" char='"'/>+ <DetectChar attribute="Verbatim String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!GlobModifier_s_Str_Recursive" char="("/>+ <DetectChar context="#pop#pop#pop" char=")"/>+ </context>+ <!-- #pop -> is GlobModifier_s_C_Rep -->+ <context attribute="Verbatim String" name="GlobModifier_s_C_Str">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>+ <IncludeRules context="FindEscape"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindStrings"/>+ <DetectChar attribute="Verbatim String" context="GlobModifier_s_C_Str_Recursive" char="("/>+ <DetectChar attribute="Glob Flag" context="#pop#pop#pop" char=")"/>+ </context>+ <context attribute="Verbatim String" name="GlobModifier_s_C_Str_Recursive">+ <IncludeRules context="FindEscape"/>+ <IncludeRules context="FindStrings"/>+ <DetectChar attribute="Verbatim String" context="GlobModifier_s_C_Str_Recursive" char="("/>+ <DetectChar context="#pop" char=")"/>+ </context>+ <!-- *(#q:s/..'../..'..} *(#q:s/..'..'../..}+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="GlobModifier_s_StrSQ">+ <DetectChar attribute="String SingleQ" context="#pop" char="'"/>+ <LineContinue attribute="Escape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepSQ" char="/"/>+ </context>+ <!-- *(#q:s'..'..}+ ~~~~+ -->+ <context attribute="Verbatim String" name="GlobModifier_s_StrSQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="'"/>+ <LineContinue attribute="Escape"/>+ </context>+ <!-- *(#q:s/.."../.."..} *(#q:s/..".."../..}+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="GlobModifier_s_StrDQ">+ <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>+ <IncludeRules context="FindEscape"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepDQ" char="/"/>+ </context>+ <context attribute="Error" name="GlobModifier_s_StrDQ_to_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepDQ" char="/"/>+ </context>+ <!-- *(#q:s".."..}+ ~~~~+ -->+ <context attribute="String DoubleQ" name="GlobModifier_s_StrDQ_Sep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char='"'/>+ <IncludeRules context="FindEscape"/>+ </context>+ <!-- *(#q:s/../....}+ ~~..+ -->+ <context attribute="Replacement String" name="GlobModifier_s_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifierNext" char="/"/>+ <!-- FindWord with a search for '/' in single and double quoted string -->+ <DetectChar attribute="String SingleQ" context="GlobModifier_s_RepSQ" char="'"/>+ <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RepDQ" char="""/>+ <DetectChar attribute="Replacement String" context="GlobModifier_s_RepSQ!GlobModifier_s_RepDQ_to_End!GlobModifier_s_Rep_Recursive" char="&paren_open;"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <IncludeRules context="GlobModifier_End"/>+ </context>+ <context attribute="Replacement String" name="GlobModifier_s_Rep_Recursive">+ <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>+ <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ_Recursive" char="'"/>+ <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ_Recursive" char='"'/>+ <DetectChar attribute="Replacement String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!GlobModifier_s_Rep_Recursive" char="("/>+ <DetectChar context="#pop#pop#pop" char=")"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>+ </context>+ <context attribute="Replacement String" name="GlobModifier_s_C_Rep">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifierNext" char="1" dynamic="1"/>+ <!-- The string should stop if capture $1 is found,+ but there is no way to propagate the capture. -->+ <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>+ <DetectChar attribute="Replacement String" context="GlobModifier_s_C_Rep_Recursive" char="&paren_open;"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <IncludeRules context="GlobModifier_End"/>+ </context>+ <context attribute="Replacement String" name="GlobModifier_s_C_Rep_Recursive">+ <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>+ <IncludeRules context="VarBraceModifier_s_Rep_Common"/>+ <DetectChar attribute="Replacement String" context="GlobModifier_s_C_Rep_Recursive" char="("/>+ <DetectChar context="#pop" char=")"/>+ <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>+ </context>+ <!-- *(#q:s/../..'../'..} *(#q:s/../..'..'..}+ ~~~~ ~~~~+ -->+ <context attribute="String SingleQ" name="GlobModifier_s_RepSQ">+ <IncludeRules context="VarNameModifier_s_C_RepSQ"/>+ <DetectChar attribute="Error" context="#pop#pop!GlobModifierNext!StringSQ" char="/"/>+ </context>+ <!-- *(#q:s/../.."../"..} *(#q:s/../..".."..}+ ~~~~ ~~~~+ -->+ <context attribute="String DoubleQ" name="GlobModifier_s_RepDQ">+ <IncludeRules context="VarNameModifier_s_C_RepDQ"/>+ <DetectChar attribute="Error" context="#pop#pop!GlobModifierNext!StringDQ" char="/"/>+ </context>+ <context attribute="String DoubleQ" name="GlobModifier_s_RepDQ_to_End">+ <DetectChar attribute="Error" context="#pop#pop#pop!GlobModifierNext!StringDQ" char="/"/>+ </context>+++ <!-- *(:F(expr)h)+ ~~~~~~+ -->+ <context attribute="Normal Text" name="GlobModifier_F" lineEndContext="#pop!GlobModifierNext" fallthroughContext="#pop!GlobModifierNext">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="GlobArithmeticParamDyn" String="([^&symbolseps;])"/>+ </context>+ <context attribute="Normal Text" name="GlobArithmeticParamParen">+ <IncludeRules context="GlobVerbatimParamParen"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="GlobArithmeticParamBracket">+ <IncludeRules context="GlobVerbatimParamBracket"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="GlobArithmeticParamBrace">+ <IncludeRules context="GlobVerbatimParamBrace"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="GlobArithmeticParamColon">+ <IncludeRules context="GlobVerbatimParamColon"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <context attribute="Normal Text" name="GlobArithmeticParamDyn">+ <IncludeRules context="GlobVerbatimParamDyn"/>+ <IncludeRules context="FindArithmetic"/>+ </context>+ <!-- *(:W(xxx)h)+ ~~~~~+ -->+ <context attribute="Normal Text" name="GlobModifier_W" lineEndContext="#pop!GlobModifierNext" fallthroughContext="#pop!GlobModifierNext">+ <IncludeRules context="FindStringsThenPop"/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamColon" char=":"/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamParen" char="("/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamBracket" char="["/>+ <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamBrace" char="{"/>+ <RegExpr attribute="Parameter Expansion Operator" context="GlobVerbatimParamDyn" String="([^&symbolseps;])"/>+ </context>+ <context attribute="Verbatim String" name="GlobVerbatimParamParen">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>+ <IncludeRules context="GlobModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="GlobVerbatimParamBracket">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>+ <IncludeRules context="GlobModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="GlobVerbatimParamBrace">+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>+ <IncludeRules context="GlobModifier_End2"/>+ </context>+ <context attribute="Verbatim String" name="GlobVerbatimParamColon">+ <IncludeRules context="GlobModifier_End2"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>+ </context>+ <context attribute="Verbatim String" name="GlobVerbatimParamDyn">+ <IncludeRules context="GlobModifier_End2"/>+ <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>+ </context>++ </contexts>++ <itemDatas>+ <itemData name="Normal Text" defStyleNum="dsNormal"/>+ <itemData name="Comment" defStyleNum="dsComment"/>+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Control" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>+ <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>+ <itemData name="Command" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="OtherCommand" defStyleNum="dsExtension" spellChecking="false"/>+ <itemData name="Redirection" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Escape" defStyleNum="dsDataType" spellChecking="false"/>+ <itemData name="String SingleQ" defStyleNum="dsString"/>+ <itemData name="String DoubleQ" defStyleNum="dsString"/>+ <itemData name="Verbatim String" defStyleNum="dsVerbatimString" spellChecking="false"/>+ <itemData name="Replacement String" defStyleNum="dsSpecialString" spellChecking="false"/>+ <itemData name="Here Doc" defStyleNum="dsString"/>+ <itemData name="Backquote" defStyleNum="dsKeyword" spellChecking="false"/>+ <itemData name="String Escape" defStyleNum="dsDataType"/>+ <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Dollar Prefix" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Expression" defStyleNum="dsOthers" spellChecking="false"/>+ <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>+ <itemData name="Pattern" defStyleNum="dsSpecialString" spellChecking="false"/>+ <itemData name="Path" defStyleNum="dsNormal" spellChecking="false"/>+ <itemData name="Glob" defStyleNum="dsPreprocessor" spellChecking="false"/>+ <itemData name="Glob Flag" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Option" defStyleNum="dsAttribute" spellChecking="false"/>+ <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Base" defStyleNum="dsPreprocessor" spellChecking="false"/>+ <itemData name="BaseN" defStyleNum="dsBaseN" spellChecking="false"/>+ <itemData name="File Descriptor" defStyleNum="dsDecVal" spellChecking="false"/>+ <itemData name="Parameter Expansion" defStyleNum="dsVariable" spellChecking="false"/>+ <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>+ <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>+ </itemDatas>+ </highlighting>+ <general>+ <comments>+ <comment name="singleLine" start="#" position="afterwhitespace"/> </comments> <keywords casesensitive="1" weakDeliminator="^%#[]$._:-/" additionalDeliminator="`"/> </general>