__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

www-data@216.73.216.10: ~ $
" Vim syntax file
" Language:      Raku
" Maintainer:    vim-perl <vim-perl@googlegroups.com>
" Homepage:      https://github.com/Raku/vim-raku
" Bugs/requests: https://github.com/Raku/vim-raku/issues
" Last Change:   2021-04-16

" Contributors:  Luke Palmer <fibonaci@babylonia.flatirons.org>
"                Moritz Lenz <moritz@faui2k3.org>
"                Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
"
" This is a big undertaking.
"
" The ftdetect/raku.vim file in this repository takes care of setting the
" right filetype for Raku files. To set it explicitly you can also add this
" line near the bottom of your source file:
"   # vim: filetype=raku

" TODO:
"   * Go over the list of keywords/types to see what's deprecated/missing
"   * Add more support for folding (:help syn-fold)
"
" If you want to have Pir code inside Q:PIR// strings highlighted, do:
"   let raku_embedded_pir=1
"
" The above requires pir.vim, which you can find in Parrot's repository:
" https://github.com/parrot/parrot/tree/master/editor
"
" To highlight Perl 5 regexes (m:P5//):
"   let raku_perl5_regexes=1
"
" To enable folding:
"   let raku_fold=1

if version < 704 | throw "raku.vim uses regex syntax which Vim <7.4 doesn't support. Try 'make fix_old_vim' in the vim-perl repository." | endif

" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
    syntax clear
elseif exists("b:current_syntax")
    finish
endif
let s:keepcpo= &cpo
set cpo&vim

" Patterns which will be interpolated by the preprocessor (tools/preproc.pl):
"
" @@IDENT_NONDIGIT@@     "[A-Za-z_\xC0-\xFF]"
" @@IDENT_CHAR@@         "[A-Za-z_\xC0-\xFF0-9]"
" @@IDENTIFIER@@         "\%(@@IDENT_NONDIGIT@@\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\@=\)*\)"
" @@IDENTIFIER_START@@   "@@IDENT_CHAR@@\@1<!\%(@@IDENT_NONDIGIT@@[-']\)\@2<!"
" @@IDENTIFIER_END@@     "\%(@@IDENT_CHAR@@\|[-']@@IDENT_NONDIGIT@@\)\@!"
" @@METAOP@@             #\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+#
" @@ADVERBS@@            "\%(\_s*:!\?@@IDENTIFIER@@\%(([^)]*)\)\?\)*"
"
" Same but escaped, for use in string eval
" @@IDENT_NONDIGIT_Q@@   "[A-Za-z_\\xC0-\\xFF]"
" @@IDENT_CHAR_Q@@       "[A-Za-z_\\xC0-\\xFF0-9]"
" @@IDENTIFIER_Q@@       "\\%(@@IDENT_NONDIGIT_Q@@\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\@=\\)*\\)"
" @@IDENTIFIER_START_Q@@ "@@IDENT_CHAR_Q@@\\@1<!\\%(@@IDENT_NONDIGIT_Q@@[-']\\)\\@2<!"
" @@IDENTIFIER_END_Q@@   "\\%(@@IDENT_CHAR_Q@@\\|[-']@@IDENT_NONDIGIT_Q@@\\)\\@!"

" Identifiers (subroutines, methods, constants, classes, roles, etc)
syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"

let s:keywords = {
 \ "rakuInclude": [
 \   "use require import unit",
 \ ],
 \ "rakuConditional": [
 \   "if else elsif unless with orwith without once",
 \ ],
 \ "rakuVarStorage": [
 \   "let my our state temp has constant",
 \ ],
 \ "rakuRepeat": [
 \   "for loop repeat while until gather given",
 \   "supply react race hyper lazy quietly",
 \ ],
 \ "rakuFlowControl": [
 \   "take take-rw do when next last redo return return-rw",
 \   "start default exit make continue break goto leave",
 \   "proceed succeed whenever emit done",
 \ ],
 \ "rakuClosureTrait": [
 \   "BEGIN CHECK INIT FIRST ENTER LEAVE KEEP",
 \   "UNDO NEXT LAST PRE POST END CATCH CONTROL",
 \   "DOC QUIT CLOSE COMPOSE",
 \ ],
 \ "rakuException": [
 \   "die fail try warn",
 \ ],
 \ "rakuPragma": [
 \   "MONKEY-GUTS MONKEY-SEE-NO-EVAL MONKEY-TYPING MONKEY",
 \   "experimental fatal isms lib newline nqp precompilation",
 \   "soft strict trace variables worries",
 \ ],
 \ "rakuOperator": [
 \   "div xx x mod also leg cmp before after eq ne le lt not",
 \   "gt ge eqv ff fff and andthen or xor orelse lcm gcd o",
 \   "unicmp notandthen minmax",
 \ ],
 \ "rakuType": [
 \   "int int1 int2 int4 int8 int16 int32 int64",
 \   "rat rat1 rat2 rat4 rat8 rat16 rat32 rat64",
 \   "buf buf1 buf2 buf4 buf8 buf16 buf32 buf64",
 \   "blob blob1 blob2 blob4 blob8 blob16 blob32 blob64",
 \   "uint uint1 uint2 uint4 uint8 uint16 uint32 bit bool",
 \   "uint64 utf8 utf16 utf32 bag set mix complex",
 \   "num num32 num64 long longlong Pointer size_t str void",
 \   "ulong ulonglong ssize_t atomicint",
 \ ],
\ }

" These can be immediately followed by parentheses
let s:types = [
 \ "Object Any Cool Junction Whatever Capture Match",
 \ "Signature Proxy Matcher Package Module Class",
 \ "Grammar Scalar Array Hash KeyHash KeySet KeyBag",
 \ "Pair List Seq Range Set Bag Map Mapping Void Undef",
 \ "Failure Exception Code Block Routine Sub Macro",
 \ "Method Submethod Regex Str Blob Char Byte Parcel",
 \ "Codepoint Grapheme StrPos StrLen Version Num",
 \ "Complex Bit True False Order Same Less More",
 \ "Increasing Decreasing Ordered Callable AnyChar",
 \ "Positional Associative Ordering KeyExtractor",
 \ "Comparator OrderingPair IO KitchenSink Role",
 \ "Int Rat Buf UInt Abstraction Numeric Real",
 \ "Nil Mu SeekFromBeginning SeekFromEnd SeekFromCurrent",
\ ]

" We explicitly enumerate the alphanumeric infix operators allowed after [RSXZ]
" to avoid matching package names that start with those letters.
let s:alpha_metaops = [
 \ "div mod gcd lcm xx x does but cmp leg eq ne gt ge lt le before after eqv",
 \ "min max not so andthen and or orelse unicmp coll minmax",
\ ]
let s:words_space = join(s:alpha_metaops, " ")
let s:temp = split(s:words_space)
let s:alpha_metaops_or = join(s:temp, "\\|")

" We don't use "syn keyword" here because that always has higher priority
" than matches/regions, which would prevent these words from matching as
" autoquoted strings before "=>".
syn match rakuKeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!"
    \ nextgroup=rakuAttention,rakuVariable,rakuInclude,rakuConditional,rakuVarStorage,rakuRepeat,rakuFlowControl,rakuClosureTrait,rakuException,rakuNumber,rakuPragma,rakuType,rakuOperator,rakuIdentifier

for [s:group, s:words_list] in items(s:keywords)
    let s:words_space = join(s:words_list, " ")
    let s:temp = split(s:words_space)
    let s:words = join(s:temp, "\\|")
    exec "syn match ". s:group ." display \"[.^]\\@1<!\\%(". s:words . "\\)(\\@!\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
endfor

let s:words_space = join(s:types, " ")
let s:temp = split(s:words_space)
let s:words = join(s:temp, "\\|")
exec "syn match rakuType display \"\\%(". s:words . "\\)\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
unlet s:group s:words_list s:keywords s:types s:words_space s:temp s:words

syn match rakuPreDeclare display "[.^]\@1<!\<\%(multi\|proto\|only\)\>" nextgroup=rakuDeclare,rakuIdentifier skipwhite skipempty
syn match rakuDeclare display "[.^]\@1<!\<\%(macro\|sub\|submethod\|method\|module\|class\|role\|package\|enum\|grammar\|slang\|subset\)\>" nextgroup=rakuIdentifier skipwhite skipempty
syn match rakuDeclareRegex display "[.^]\@1<!\<\%(regex\|rule\|token\)\>" nextgroup=rakuRegexName skipwhite skipempty

syn match rakuTypeConstraint  display "\%([.^]\|^\s*\)\@<!\a\@=\%(does\|as\|but\|trusts\|of\|returns\|handles\|where\|augment\|supersede\)\>"
syn match rakuTypeConstraint  display "\%([.^]\|^\s*\)\@<![A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!is\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuProperty
syn match rakuProperty        display "\a\@=\%(signature\|context\|also\|shape\|prec\|irs\|ofs\|ors\|export\|deep\|binary\|unary\|reparsed\|rw\|parsed\|cached\|readonly\|defequiv\|will\|ref\|copy\|inline\|tighter\|looser\|equiv\|assoc\|required\|DEPRECATED\|raw\|repr\|dynamic\|hidden-from-backtrace\|nodal\|pure\)" contained

" packages, must come after all the keywords
syn match rakuIdentifier display "\%(::\)\@2<=\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)*"
syn match rakuIdentifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(::\)\@="

" The sigil in ::*Package
syn match rakuPackageTwigil display "\%(::\)\@2<=\*"

" some standard packages
syn match rakuType display "\%(::\)\@2<!\%(SeekType\%(::SeekFromBeginning\|::SeekFromCurrent\|::SeekFromEnd\)\|Order\%(::Same\|::More\|::Less\)\?\|Bool\%(::True\|::False\)\?\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!"

" Don't put a "\+" at the end of the character class. That makes it so
" greedy that the "%" " in "+%foo" won't be allowed to match as a sigil,
" among other things
syn match rakuOperator display "[-+/*~?|=^!%&,<>».;\\∈∉∋∌∩∪≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖∅∘]"
syn match rakuOperator display "\%(:\@1<!::\@2!\|::=\|\.::\)"
" these require whitespace on the left side
syn match rakuOperator display "\%(\s\|^\)\@1<=\%(xx=\)"
" index overloading
syn match rakuOperator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)"

" Reduce metaoperators like [+]
syn match rakuReduceOp display "\%(^\|\s\|(\)\@1<=!*\%([RSXZ\[]\)*[&RSXZ]\?\[\+(\?\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+)\?]\+"
syn match rakuSetOp    display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"

" Reverse, cross, and zip metaoperators
exec "syn match rakuRSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:alnum:][:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""

syn match rakuBlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="

syn match rakuNumber     display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?Inf\|NaN\)"
syn match rakuNumber     display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?\%(\%(\d\|__\@!\)*[._]\@1<!\.\)\?_\@!\%(\d\|_\)\+_\@1<!\%([eE]-\?_\@!\%(\d\|_\)\+\)\?i\?"
syn match rakuNumber     display "[A-Za-z_\xC0-\xFF0-9]\@1<!\%(\%(\_^\|\s\|[^*\a]\)\@1<=[-+]\)\?0[obxd]\@="  nextgroup=rakuOctBase,rakuBinBase,rakuHexBase,rakuDecBase
syn match rakuOctBase    display "o" contained nextgroup=rakuOctNumber
syn match rakuBinBase    display "b" contained nextgroup=rakuBinNumber
syn match rakuHexBase    display "x" contained nextgroup=rakuHexNumber
syn match rakuDecBase    display "d" contained nextgroup=rakuDecNumber
syn match rakuOctNumber  display "[0-7][0-7_]*" contained
syn match rakuBinNumber  display "[01][01_]*" contained
syn match rakuHexNumber  display "\x[[:xdigit:]_]*" contained
syn match rakuDecNumber  display "\d[[:digit:]_]*" contained

syn match rakuVersion    display "\<v\d\+\%(\.\%(\*\|\d\+\)\)*+\?"

" Contextualizers
syn match rakuContext display "\<\%(item\|list\|slice\|hash\)\>"
syn match rakuContext display "\%(\$\|@\|%\|&\)(\@="

" Quoting

" one cluster for every quote adverb
syn cluster rakuInterp_scalar
    \ add=rakuInterpScalar

syn cluster rakuInterp_array
    \ add=rakuInterpArray

syn cluster rakuInterp_hash
    \ add=rakuInterpHash

syn cluster rakuInterp_function
    \ add=rakuInterpFunction

syn cluster rakuInterp_closure
    \ add=rakuInterpClosure

syn cluster rakuInterp_q
    \ add=rakuEscQQ
    \ add=rakuEscBackSlash

syn cluster rakuInterp_backslash
    \ add=@rakuInterp_q
    \ add=rakuEscape
    \ add=rakuEscOpenCurly
    \ add=rakuEscCodePoint
    \ add=rakuEscHex
    \ add=rakuEscOct
    \ add=rakuEscOctOld
    \ add=rakuEscNull

syn cluster rakuInterp_qq
    \ add=@rakuInterp_scalar
    \ add=@rakuInterp_array
    \ add=@rakuInterp_hash
    \ add=@rakuInterp_function
    \ add=@rakuInterp_closure
    \ add=@rakuInterp_backslash
    \ add=rakuMatchVarSigil

syn region rakuInterpScalar
    \ start="\ze\z(\$\%(\%(\%(\d\+\|!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
    \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\|\%(\d\+\|!\|/\|¢\)\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP

syn region rakuInterpScalar
    \ matchgroup=rakuContext
    \ start="\$\ze()\@!"
    \ skip="([^)]*)"
    \ end=")\zs"
    \ contained
    \ contains=TOP

syn region rakuInterpArray
    \ start="\ze\z(@\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP

syn region rakuInterpArray
    \ matchgroup=rakuContext
    \ start="@\ze()\@!"
    \ skip="([^)]*)"
    \ end=")\zs"
    \ contained
    \ contains=TOP

syn region rakuInterpHash
    \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP

syn region rakuInterpHash
    \ matchgroup=rakuContext
    \ start="%\ze()\@!"
    \ skip="([^)]*)"
    \ end=")\zs"
    \ contained
    \ contains=TOP

syn region rakuInterpFunction
    \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=\)\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(\.\^\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\|\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP

syn region rakuInterpFunction
    \ matchgroup=rakuContext
    \ start="&\ze()\@!"
    \ skip="([^)]*)"
    \ end=")\zs"
    \ contained
    \ contains=TOP

syn region rakuInterpClosure
    \ start="\\\@1<!{}\@!"
    \ skip="{[^}]*}"
    \ end="}"
    \ contained keepend
    \ contains=TOP

" generic escape
syn match rakuEscape          display "\\\S" contained

" escaped closing delimiters
syn match rakuEscQuote        display "\\'" contained
syn match rakuEscDoubleQuote  display "\\\"" contained
syn match rakuEscCloseAngle   display "\\>" contained
syn match rakuEscCloseFrench  display "\\»" contained
syn match rakuEscBackTick     display "\\`" contained
syn match rakuEscForwardSlash display "\\/" contained
syn match rakuEscVerticalBar  display "\\|" contained
syn match rakuEscExclamation  display "\\!" contained
syn match rakuEscComma        display "\\," contained
syn match rakuEscDollar       display "\\\$" contained
syn match rakuEscCloseCurly   display "\\}" contained
syn match rakuEscCloseBracket display "\\\]" contained

" matches :key, :!key, :$var, :key<var>, etc
" Since we don't know in advance how the adverb ends, we use a trick.
" Consume nothing with the start pattern (\ze at the beginning),
" while capturing the whole adverb into \z1 and then putting it before
" the match start (\zs) of the end pattern.
syn region rakuAdverb
    \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)"
    \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@1<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP

" <words>
" Distinguishing this from the "less than" operator is tricky. For now,
" it matches if any of the following is true:
"
" * There is whitespace missing on either side of the "<", since
"   people tend to put spaces around "less than". We make an exception
"   for " = < ... >" assignments though.
" * It comes after "enum", "for", "any", "all", or "none"
" * It's the first or last thing on a line (ignoring whitespace)
" * It's preceded by "(\s*" or "=\s\+"
" * It's empty and terminated on the same line (e.g. <> and < >)
"
" It never matches when:
"
" * Preceded by [<+~=!] (e.g. <<foo>>, =<$foo>, * !< 3)
" * Followed by [-=] (e.g. <--, <=, <==, <->)
syn region rakuStringAngle
    \ matchgroup=rakuQuote
    \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
    \ start="\%(\s\|[<+~=!]\)\@<!<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
    \ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|\%([=-]\{1,2}>\|[=-]\{1,2}\)\)\@!"
    \ start="\%(^\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
    \ start="[<+~=!]\@1<!<\%(\s*$\)\@="
    \ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
    \ start="<\%(\s*>\)\@="
    \ skip="\\\@1<!\\>"
    \ end=">"
    \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle

syn region rakuStringAngleFixed
    \ matchgroup=rakuQuote
    \ start="<"
    \ skip="\\\@1<!\\>"
    \ end=">"
    \ contains=rakuInnerAnglesOne,rakuEscBackSlash,rakuEscCloseAngle
    \ contained

syn region rakuInnerAnglesOne
    \ matchgroup=rakuStringAngle
    \ start="\\\@1<!<"
    \ skip="\\\@1<!\\>"
    \ end=">"
    \ transparent contained
    \ contains=rakuInnerAnglesOne

" <<words>>
syn region rakuStringAngles
    \ matchgroup=rakuQuote
    \ start="<<=\@!"
    \ skip="\\\@1<!\\>"
    \ end=">>"
    \ contains=rakuInnerAnglesTwo,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseAngle,rakuAdverb,rakuStringSQ,rakuStringDQ

syn region rakuInnerAnglesTwo
    \ matchgroup=rakuStringAngles
    \ start="<<"
    \ skip="\\\@1<!\\>"
    \ end=">>"
    \ transparent contained
    \ contains=rakuInnerAnglesTwo

" «words»
syn region rakuStringFrench
    \ matchgroup=rakuQuote
    \ start="«"
    \ skip="\\\@1<!\\»"
    \ end="»"
    \ contains=rakuInnerFrench,@rakuInterp_qq,rakuComment,rakuBracketComment,rakuEscHash,rakuEscCloseFrench,rakuAdverb,rakuStringSQ,rakuStringDQ

syn region rakuInnerFrench
    \ matchgroup=rakuStringFrench
    \ start="\\\@1<!«"
    \ skip="\\\@1<!\\»"
    \ end="»"
    \ transparent contained
    \ contains=rakuInnerFrench

" Hyperops. They need to come after "<>" and "«»" strings in order to override
" them, but before other types of strings, to avoid matching those delimiters
" as parts of hyperops.
syn match rakuHyperOp display #[^[:digit:][{('",:[:space:]][^[{('",:[:space:]]*\%(«\|<<\)#
syn match rakuHyperOp display "«\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+[«»]"
syn match rakuHyperOp display "»\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(«\|»\?\)"
syn match rakuHyperOp display "<<\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|>>\)"
syn match rakuHyperOp display ">>\%(\d\|[@%$][.?^=[:alpha:]]\)\@!\%(\.\|[^[{('".[:space:]]\)\+\%(<<\|\%(>>\)\?\)"

" 'string'
syn region rakuStringSQ
    \ matchgroup=rakuQuote
    \ start="'"
    \ skip="\\\@1<!\\'"
    \ end="'"
    \ contains=@rakuInterp_q,rakuEscQuote
    \ keepend extend

" "string"
syn region rakuStringDQ
    \ matchgroup=rakuQuote
    \ start=+"+
    \ skip=+\\\@1<!\\"+
    \ end=+"+
    \ contains=@rakuInterp_qq,rakuEscDoubleQuote
    \ keepend extend

" Q// and friends

syn match rakuQuoteQStart display "\%(:\|\%(sub\|role\)\s\)\@5<![Qq]\@=" nextgroup=rakuQuoteQ,rakuQuoteQ_q,rakuQuoteQ_qww,rakuQuoteQ_qq,rakuQuoteQ_to,rakuQuoteQ_qto,rakuQuoteQ_qqto,rakuIdentifier
syn match rakuQuoteQ      display "Q\%(qq\|ww\|[abcfhpsqvwx]\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ skipwhite skipempty contained
syn match rakuQuoteQ_q    display "q[abcfhpsvwx]\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_q skipwhite skipempty contained
syn match rakuQuoteQ_qww  display "qww[A-Za-z(]\@!" nextgroup=rakuPairsQ_qww skipwhite skipempty contained
syn match rakuQuoteQ_qq   display "qq\%([pwx]\|ww\)\?[A-Za-z(]\@!" nextgroup=rakuPairsQ_qq skipwhite skipempty contained
syn match rakuQuoteQ_to   display "Qto[A-Za-z(]\@!" nextgroup=rakuStringQ_to skipwhite skipempty contained
syn match rakuQuoteQ_qto  display "qto[A-Za-z(]\@!" nextgroup=rakuStringQ_qto skipwhite skipempty contained
syn match rakuQuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=rakuStringQ_qqto skipwhite skipempty contained
syn match rakuQuoteQ_qto  display "q\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qto skipwhite skipempty contained
syn match rakuQuoteQ_qqto display "qq\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=rakuPairsQ_qqto skipwhite skipempty contained
syn match rakuPairsQ      "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ
syn match rakuPairsQ_q    "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_q
syn match rakuPairsQ_qww  "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qww
syn match rakuPairsQ_qq   "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qq
syn match rakuPairsQ_qto  "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qto
syn match rakuPairsQ_qqto "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuStringQ_qqto


if exists("raku_embedded_pir") || exists("raku_extended_all")
    syn include @rakuPIR syntax/pir.vim
    syn match rakuQuote_QPIR display "Q[A-Za-z(]\@!\%(\_s*:PIR\)\@=" nextgroup=rakuPairsQ_PIR skipwhite skipempty
    syn match rakuPairs_QPIR contained "\_s*:PIR" transparent skipwhite skipempty nextgroup=rakuStringQ_PIR
endif

" hardcoded set of delimiters
let s:plain_delims = [
  \ ["DQ",          "\\\"",         "\\\"", "rakuEscDoubleQuote",  "\\\\\\@1<!\\\\\\\""],
  \ ["SQ",          "'",            "'",    "rakuEscQuote",        "\\\\\\@1<!\\\\'"],
  \ ["Slash",       "/",            "/",    "rakuEscForwardSlash", "\\\\\\@1<!\\\\/"],
  \ ["BackTick",    "`",            "`",    "rakuEscBackTick",     "\\\\\\@1<!\\\\`"],
  \ ["Bar",         "|",            "|",    "rakuEscVerticalBar",  "\\\\\\@1<!\\\\|"],
  \ ["Exclamation", "!",            "!",    "rakuEscExclamation",  "\\\\\\@1<!\\\\!"],
  \ ["Comma",       ",",            ",",    "rakuEscComma",        "\\\\\\@1<!\\\\,"],
  \ ["Dollar",      "\\$",          "\\$",  "rakuEscDollar",       "\\\\\\@1<!\\\\\\$"],
\ ]
let s:bracketing_delims = [
  \ ["Curly",   "{",            "}",    "rakuEscCloseCurly",   "\\%(\\\\\\@1<!\\\\}\\|{[^}]*}\\)"],
  \ ["Angle",   "<",            ">",    "rakuEscCloseAngle",   "\\%(\\\\\\@1<!\\\\>\\|<[^>]*>\\)"],
  \ ["French",  "«",            "»",    "rakuEscCloseFrench",  "\\%(\\\\\\@1<!\\\\»\\|«[^»]*»\\)"],
  \ ["Bracket", "\\\[",         "]",    "rakuEscCloseBracket", "\\%(\\\\\\@1<!\\\\]\\|\\[^\\]]*]\\)"],
  \ ["Paren",   "\\s\\@1<=(",   ")",    "rakuEscCloseParen",   "\\%(\\\\\\@1<!\\\\)\\|([^)]*)\\)"],
\ ]
let s:all_delims = s:plain_delims + s:bracketing_delims

for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:all_delims
    exec "syn region rakuStringQ matchgroup=rakuQuote start=\"".s:start_delim."\" end=\"".s:end_delim."\" contained"
    exec "syn region rakuStringQ_q matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,".s:end_group." contained"
    exec "syn region rakuStringQ_qww matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_q,rakuStringSQ,rakuStringDQ".s:end_group." contained"
    exec "syn region rakuStringQ_qq matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuInterp_qq,".s:end_group." contained"
    exec "syn region rakuStringQ_to matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" end=\"^\\s*\\z1$\" contained"
    exec "syn region rakuStringQ_qto matchgroup=rakuQuote start=\"".s:start_delim."\\z([^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_q,".s:end_group." contained"
    exec "syn region rakuStringQ_qqto matchgroup=rakuQuote start=\"".s:start_delim."\\z(\[^".s:end_delim."]\\+\\)".s:end_delim."\" skip=\"".s:skip."\" end=\"^\\s*\\z1$\" contains=@rakuInterp_qq,".s:end_group." contained"

    if exists("raku_embedded_pir") || exists("raku_extended_all")
        exec "syn region rakuStringQ_PIR matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contains=@rakuPIR,".s:end_group." contained"
    endif
endfor
unlet s:name s:start_delim s:end_delim s:end_group s:skip s:plain_delims s:all_delims

" :key
syn match rakuOperator display ":\@1<!::\@!!\?" nextgroup=rakuKey,rakuStringAngleFixed,rakuStringAngles,rakuStringFrench
syn match rakuKey display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" contained nextgroup=rakuStringAngleFixed,rakuStringAngles,rakuStringFrench

" Regexes and grammars

syn match rakuRegexName    display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?" nextgroup=rakuRegexBlockCrap skipwhite skipempty contained
syn match rakuRegexBlockCrap "[^{]*" nextgroup=rakuRegexBlock skipwhite skipempty transparent contained

syn region rakuRegexBlock
    \ matchgroup=rakuNormal
    \ start="{"
    \ end="}"
    \ contained
    \ contains=@rakuRegexen,@rakuVariables

" Perl 6 regex bits

syn cluster rakuRegexen
    \ add=rakuRxMeta
    \ add=rakuRxEscape
    \ add=rakuEscCodePoint
    \ add=rakuEscHex
    \ add=rakuEscOct
    \ add=rakuEscNull
    \ add=rakuRxAnchor
    \ add=rakuRxCapture
    \ add=rakuRxGroup
    \ add=rakuRxAlternation
    \ add=rakuRxBoundary
    \ add=rakuRxAdverb
    \ add=rakuRxAdverbArg
    \ add=rakuRxStorage
    \ add=rakuRxAssertion
    \ add=rakuRxAssertGroup
    \ add=rakuRxQuoteWords
    \ add=rakuRxClosure
    \ add=rakuRxStringSQ
    \ add=rakuRxStringDQ
    \ add=rakuComment
    \ add=rakuBracketComment
    \ add=rakuMatchVarSigil

syn match rakuRxMeta        display contained ".\%([A-Za-z_\xC0-\xFF0-9]\|\s\)\@1<!"
syn match rakuRxAnchor      display contained "[$^]"
syn match rakuRxEscape      display contained "\\\S"
syn match rakuRxCapture     display contained "[()]"
syn match rakuRxAlternation display contained "|"
syn match rakuRxRange       display contained "\.\."

" misc escapes
syn match rakuEscOctOld    display "\\[1-9]\d\{1,2}" contained
syn match rakuEscNull      display "\\0\d\@!" contained
syn match rakuEscCodePoint display "\\[cC]" contained nextgroup=rakuCodePoint
syn match rakuEscHex       display "\\[xX]" contained nextgroup=rakuHexSequence
syn match rakuEscOct       display "\\o" contained nextgroup=rakuOctSequence
syn match rakuEscQQ        display "\\qq" contained nextgroup=rakuQQSequence
syn match rakuEscOpenCurly display "\\{" contained
syn match rakuEscHash      display "\\#" contained
syn match rakuEscBackSlash display "\\\\" contained

syn region rakuQQSequence
    \ matchgroup=rakuEscape
    \ start="\["
    \ skip="\[[^\]]*]"
    \ end="]"
    \ contained transparent
    \ contains=@rakuInterp_qq

syn match rakuCodePoint   display "\%(\d\+\|\S\)" contained
syn region rakuCodePoint
    \ matchgroup=rakuEscape
    \ start="\["
    \ end="]"
    \ contained

syn match rakuHexSequence display "\x\+" contained
syn region rakuHexSequence
    \ matchgroup=rakuEscape
    \ start="\["
    \ end="]"
    \ contained

syn match rakuOctSequence display "\o\+" contained
syn region rakuOctSequence
    \ matchgroup=rakuEscape
    \ start="\["
    \ end="]"
    \ contained

" $<match>, @<match>
syn region rakuMatchVarSigil
    \ matchgroup=rakuVariable
    \ start="[$@]\%(<<\@!\)\@="
    \ end=">\@1<="
    \ contains=rakuMatchVar

syn region rakuMatchVar
    \ matchgroup=rakuTwigil
    \ start="<"
    \ end=">"
    \ contained

syn region rakuRxClosure
    \ matchgroup=rakuNormal
    \ start="{"
    \ end="}"
    \ contained
    \ containedin=rakuRxClosure
    \ contains=TOP
syn region rakuRxGroup
    \ matchgroup=rakuStringSpecial2
    \ start="\["
    \ end="]"
    \ contained
    \ contains=@rakuRegexen,@rakuVariables,rakuMatchVarSigil
syn region rakuRxAssertion
    \ matchgroup=rakuStringSpecial2
    \ start="<\%(?\?\%(before\|after\)\|\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\)\|[+?*]\)\?"
    \ end=">"
    \ contained
    \ contains=@rakuRegexen,rakuIdentifier,@rakuVariables,rakuRxCharClass,rakuRxAssertCall
syn region rakuRxAssertGroup
    \ matchgroup=rakuStringSpecial2
    \ start="<\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)=\["
    \ skip="\\\@1<!\\]"
    \ end="]"
    \ contained
syn match rakuRxAssertCall display "\%(::\|\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)" contained nextgroup=rakuRxAssertArgs
syn region rakuRxAssertArgs
    \ start="("
    \ end=")"
    \ contained keepend
    \ contains=TOP
syn region rakuRxAssertArgs
    \ start=":"
    \ end="\ze>"
    \ contained keepend
    \ contains=TOP
syn match rakuRxBoundary display contained "\%([«»]\|<<\|>>\)"
syn region rakuRxCharClass
    \ matchgroup=rakuStringSpecial2
    \ start="\%(<[-!+?]\?\)\@2<=\["
    \ skip="\\]"
    \ end="]"
    \ contained
    \ contains=rakuRxRange,rakuRxEscape,rakuEscHex,rakuEscOct,rakuEscCodePoint,rakuEscNull
syn region rakuRxQuoteWords
    \ matchgroup=rakuStringSpecial2
    \ start="<\s"
    \ end="\s\?>"
    \ contained
syn region rakuRxAdverb
    \ start="\ze\z(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)"
    \ end="\z1\zs"
    \ contained keepend
    \ contains=TOP
syn region rakuRxAdverbArg
    \ start="\%(:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\)\@<=("
    \ skip="([^)]\{-})"
    \ end=")"
    \ contained
    \ keepend
    \ contains=TOP
syn region rakuRxStorage
    \ matchgroup=rakuOperator
    \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@="
    \ end="$"
    \ contains=TOP
    \ contained
    \ keepend

" 'string' inside a regex
syn region rakuRxStringSQ
    \ matchgroup=rakuQuote
    \ start="'"
    \ skip="\\\@1<!\\'"
    \ end="'"
    \ contained
    \ contains=rakuEscQuote,rakuEscBackSlash

" "string" inside a regex
syn region rakuRxStringDQ
    \ matchgroup=rakuQuote
    \ start=+"+
    \ skip=+\\\@1<!\\"+
    \ end=+"+
    \ contained
    \ contains=rakuEscDoubleQuote,rakuEscBackSlash,@rakuInterp_qq

" $!, $var, $!var, $::var, $package::var $*::package::var, etc
" Thus must come after the matches for the "$" regex anchor, but before
" the match for the $ regex delimiter
syn cluster rakuVariables
    \ add=rakuVarSlash
    \ add=rakuVarExclam
    \ add=rakuVarMatch
    \ add=rakuVarNum
    \ add=rakuVariable

syn match rakuBareSigil    display "[@$%&]\%(\s*\%([,)}=]\|where\>\)\)\@="
syn match rakuVarSlash     display "\$/"
syn match rakuVarExclam    display "\$!"
syn match rakuVarMatch     display "\$¢"
syn match rakuVarNum       display "\$\d\+"
syn match rakuVariable     display "self"
syn match rakuVariable     display "[@$%&]\?[@&$%]\$*\%(::\|\%(\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\)\|[A-Za-z_\xC0-\xFF]\)\@=" nextgroup=rakuTwigil,rakuVarName,rakuPackageScope
syn match rakuVarName      display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" nextgroup=rakuPostHyperOp contained
syn match rakuClose        display "[\])]" transparent nextgroup=rakuPostHyperOp
syn match rakuPostHyperOp  display "\%(»\|>>\)" contained
syn match rakuTwigil       display "\%([.^*?=!~]\|:\@1<!::\@!\)[A-Za-z_\xC0-\xFF]\@=" nextgroup=rakuPackageScope,rakuVarName contained
syn match rakuPackageScope display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?::" nextgroup=rakuPackageScope,rakuVarName contained

" Perl 6 regex regions

syn match rakuMatchStart_m    display "\.\@1<!\<\%(mm\?\|rx\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_m
syn match rakuMatchStart_s    display "\.\@1<!\<[sS]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_s
syn match rakuMatchStart_tr   display "\.\@1<!\<tr\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=rakuMatchAdverbs_tr
syn match rakuMatchAdverbs_m  "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuMatch
syn match rakuMatchAdverbs_s  "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuSubstitution
syn match rakuMatchAdverbs_tr "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=rakuTransliteration

" /foo/
syn region rakuMatchBare
    \ matchgroup=rakuQuote
    \ start="/\@1<!\%(\%(\_^\|[!\[,=~|&/:({]\|\^\?fff\?\^\?\|=>\|\<\%(if\|unless\|while\|when\|where\|so\)\)\s*\)\@<=/[/=]\@!"
    \ skip="\\/"
    \ end="/"
    \ contains=@rakuRegexen,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum

" m/foo/, m$foo$, m!foo!, etc
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start=+\z([/!$,|`"]\)+
    \ skip="\\\z1"
    \ end="\z1"
    \ contained
    \ contains=@rakuRegexen,rakuVariable,rakuVarNum

" m<foo>, m«foo», m{foo}, etc
for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
    exec "syn region rakuMatch matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables"
endfor
unlet s:name s:start_delim s:end_delim s:end_group s:skip

" Substitutions

" s/foo//, s$foo$$, s!foo!!, etc
syn region rakuSubstitution
    \ matchgroup=rakuQuote
    \ start=+\z([/!$,|`"]\)+
    \ skip="\\\z1"
    \ end="\z1"me=e-1
    \ contained
    \ contains=@rakuRegexen,rakuVariable,rakuVarNum
    \ nextgroup=rakuReplacement

syn region rakuReplacement
    \ matchgroup=rakuQuote
    \ start="\z(.\)"
    \ skip="\\\z1"
    \ end="\z1"
    \ contained
    \ contains=@rakuInterp_qq

" s<foo><bar>, s«foo»«bar», s{foo}{bar}, etc
for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
    exec "syn region rakuSubstitution matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuRegexen,@rakuVariables nextgroup=rakuRepl".s:name
    exec "syn region rakuRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq"
endfor
unlet s:name s:start_delim s:end_delim s:end_group s:skip

" Transliteration

" tr/foo/bar/, tr|foo|bar, etc
syn region rakuTransliteration
    \ matchgroup=rakuQuote
    \ start=+\z([/!$,|`"]\)+
    \ skip="\\\z1"
    \ end="\z1"me=e-1
    \ contained
    \ contains=rakuRxRange
    \ nextgroup=rakuTransRepl

syn region rakuTransRepl
    \ matchgroup=rakuQuote
    \ start="\z(.\)"
    \ skip="\\\z1"
    \ end="\z1"
    \ contained
    \ contains=@rakuInterp_qq,rakuRxRange

" tr<foo><bar>, tr«foo»«bar», tr{foo}{bar}, etc
for [s:name, s:start_delim, s:end_delim, s:end_group, s:skip] in s:bracketing_delims
    exec "syn region rakuTransliteration matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=rakuRxRange nextgroup=rakuTransRepl".s:name
    exec "syn region rakuTransRepl".s:name." matchgroup=rakuQuote start=\"".s:start_delim."\" skip=\"".s:skip."\" end=\"".s:end_delim."\" contained keepend contains=@rakuInterp_qq,rakuRxRange"
endfor
unlet s:name s:start_delim s:end_delim s:end_group s:skip s:bracketing_delims

if exists("raku_perl5_regexes") || exists("raku_extended_all")

" Perl 5 regex regions

syn cluster rakuRegexP5Base
    \ add=rakuRxP5Escape
    \ add=rakuRxP5Oct
    \ add=rakuRxP5Hex
    \ add=rakuRxP5EscMeta
    \ add=rakuRxP5CodePoint
    \ add=rakuRxP5Prop

" normal regex stuff
syn cluster rakuRegexP5
    \ add=@rakuRegexP5Base
    \ add=rakuRxP5Quantifier
    \ add=rakuRxP5Meta
    \ add=rakuRxP5QuoteMeta
    \ add=rakuRxP5ParenMod
    \ add=rakuRxP5Verb
    \ add=rakuRxP5Count
    \ add=rakuRxP5Named
    \ add=rakuRxP5ReadRef
    \ add=rakuRxP5WriteRef
    \ add=rakuRxP5CharClass
    \ add=rakuRxP5Anchor

" inside character classes
syn cluster rakuRegexP5Class
    \ add=@rakuRegexP5Base
    \ add=rakuRxP5Posix
    \ add=rakuRxP5Range

syn match rakuRxP5Escape     display contained "\\\S"
syn match rakuRxP5CodePoint  display contained "\\c\S\@=" nextgroup=rakuRxP5CPId
syn match rakuRxP5CPId       display contained "\S"
syn match rakuRxP5Oct        display contained "\\\%(\o\{1,3}\)\@=" nextgroup=rakuRxP5OctSeq
syn match rakuRxP5OctSeq     display contained "\o\{1,3}"
syn match rakuRxP5Anchor     display contained "[\^$]"
syn match rakuRxP5Hex        display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=rakuRxP5HexSeq
syn match rakuRxP5HexSeq     display contained "\x\{1,2}"
syn region rakuRxP5HexSeq
    \ matchgroup=rakuRxP5Escape
    \ start="{"
    \ end="}"
    \ contained
syn region rakuRxP5Named
    \ matchgroup=rakuRxP5Escape
    \ start="\%(\\N\)\@2<={"
    \ end="}"
    \ contained
syn match rakuRxP5Quantifier display contained "\%([+*]\|(\@1<!?\)"
syn match rakuRxP5ReadRef    display contained "\\[1-9]\d\@!"
syn match rakuRxP5ReadRef    display contained "\[A-Za-z_\xC0-\xFF0-9]<\@=" nextgroup=rakuRxP5ReadRefId
syn region rakuRxP5ReadRefId
    \ matchgroup=rakuRxP5Escape
    \ start="<"
    \ end=">"
    \ contained
syn match rakuRxP5WriteRef   display contained "\\g\%(\d\|{\)\@=" nextgroup=rakuRxP5WriteRefId
syn match rakuRxP5WriteRefId display contained "\d\+"
syn region rakuRxP5WriteRefId
    \ matchgroup=rakuRxP5Escape
    \ start="{"
    \ end="}"
    \ contained
syn match rakuRxP5Prop       display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=rakuRxP5PropId
syn match rakuRxP5PropId     display contained "\a"
syn region rakuRxP5PropId
    \ matchgroup=rakuRxP5Escape
    \ start="{"
    \ end="}"
    \ contained
syn match rakuRxP5Meta       display contained "[(|).]"
syn match rakuRxP5ParenMod   display contained "(\@1<=?\@=" nextgroup=rakuRxP5Mod,rakuRxP5ModName,rakuRxP5Code
syn match rakuRxP5Mod        display contained "?\%(<\?=\|<\?!\|[#:|]\)"
syn match rakuRxP5Mod        display contained "?-\?[impsx]\+"
syn match rakuRxP5Mod        display contained "?\%([-+]\?\d\+\|R\)"
syn match rakuRxP5Mod        display contained "?(DEFINE)"
syn match rakuRxP5Mod        display contained "?\%(&\|P[>=]\)" nextgroup=rakuRxP5ModDef
syn match rakuRxP5ModDef     display contained "\h\w*"
syn region rakuRxP5ModName
    \ matchgroup=rakuStringSpecial
    \ start="?'"
    \ end="'"
    \ contained
syn region rakuRxP5ModName
    \ matchgroup=rakuStringSpecial
    \ start="?P\?<"
    \ end=">"
    \ contained
syn region rakuRxP5Code
    \ matchgroup=rakuStringSpecial
    \ start="??\?{"
    \ end="})\@="
    \ contained
    \ contains=TOP
syn match rakuRxP5EscMeta    display contained "\\[?*.{}()[\]|\^$]"
syn match rakuRxP5Count      display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=rakuRxP5CountId
syn region rakuRxP5CountId
    \ matchgroup=rakuRxP5Escape
    \ start="{"
    \ end="}"
    \ contained
syn match rakuRxP5Verb       display contained "(\@1<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)"
syn region rakuRxP5QuoteMeta
    \ matchgroup=rakuRxP5Escape
    \ start="\\Q"
    \ end="\\E"
    \ contained
    \ contains=@rakuVariables,rakuEscBackSlash
syn region rakuRxP5CharClass
    \ matchgroup=rakuStringSpecial
    \ start="\[\^\?"
    \ skip="\\]"
    \ end="]"
    \ contained
    \ contains=@rakuRegexP5Class
syn region rakuRxP5Posix
    \ matchgroup=rakuRxP5Escape
    \ start="\[:"
    \ end=":]"
    \ contained
syn match rakuRxP5Range      display contained "-"

" m:P5//
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=/"
    \ skip="\\/"
    \ end="/"
    \ contains=@rakuRegexP5,rakuVariable,rakuVarExclam,rakuVarMatch,rakuVarNum

" m:P5!!
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=!"
    \ skip="\\!"
    \ end="!"
    \ contains=@rakuRegexP5,rakuVariable,rakuVarSlash,rakuVarMatch,rakuVarNum

" m:P5$$, m:P5||, etc
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=\z([\"'`|,$]\)"
    \ skip="\\\z1"
    \ end="\z1"
    \ contains=@rakuRegexP5,@rakuVariables

" m:P5 ()
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s\+\)\@<=()\@!"
    \ skip="\\)"
    \ end=")"
    \ contains=@rakuRegexP5,@rakuVariables

" m:P5[]
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=[]\@!"
    \ skip="\\]"
    \ end="]"
    \ contains=@rakuRegexP5,@rakuVariables

" m:P5{}
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<={}\@!"
    \ skip="\\}"
    \ end="}"
    \ contains=@rakuRegexP5,rakuVariables

" m:P5<>
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=<>\@!"
    \ skip="\\>"
    \ end=">"
    \ contains=@rakuRegexP5,rakuVariables

" m:P5«»
syn region rakuMatch
    \ matchgroup=rakuQuote
    \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@2<!\<m\s*:P\%(erl\)\?5\s*\)\@<=«»\@!"
    \ skip="\\»"
    \ end="»"
    \ contains=@rakuRegexP5,rakuVariables

endif

" Comments

syn match rakuAttention display "\<\%(ACHTUNG\|ATTN\|ATTENTION\|FIXME\|NB\|TODO\|TBD\|WTF\|XXX\|NOTE\)" contained

" normal end-of-line comment
syn match rakuComment display "#.*" contains=rakuAttention

" Multiline comments. Arbitrary numbers of opening brackets are allowed,
" but we only define regions for 1 to 3
syn region rakuBracketComment
    \ start="#[`|=]("
    \ skip="([^)]*)"
    \ end=")"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ start="#[`|=]\["
    \ skip="\[[^\]]*]"
    \ end="]"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ start="#[`|=]{"
    \ skip="{[^}]*}"
    \ end="}"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ start="#[`|=]<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ start="#[`|=]«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contains=rakuAttention,rakuBracketComment

" Comments with double and triple delimiters
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=](("
    \ skip="((\%([^)\|))\@!]\)*))"
    \ end="))"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]((("
    \ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
    \ end=")))"
    \ contains=rakuAttention,rakuBracketComment

syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]\[\["
    \ skip="\[\[\%([^\]]\|]]\@!\)*]]"
    \ end="]]"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]\[\[\["
    \ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
    \ end="]]]"
    \ contains=rakuAttention,rakuBracketComment

syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]{{"
    \ skip="{{\%([^}]\|}}\@!\)*}}"
    \ end="}}"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]{{{"
    \ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
    \ end="}}}"
    \ contains=rakuAttention,rakuBracketComment

syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]<<"
    \ skip="<<\%([^>]\|>>\@!\)*>>"
    \ end=">>"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]<<<"
    \ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
    \ end=">>>"
    \ contains=rakuAttention,rakuBracketComment

syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]««"
    \ skip="««\%([^»]\|»»\@!\)*»»"
    \ end="»»"
    \ contains=rakuAttention,rakuBracketComment
syn region rakuBracketComment
    \ matchgroup=rakuBracketComment
    \ start="#[`|=]«««"
    \ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
    \ end="»»»"
    \ contains=rakuAttention,rakuBracketComment

syn match rakuShebang display "\%^#!.*"

" => autoquoting
syn match rakuStringAuto   display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
syn match rakuStringAuto   display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
syn match rakuStringAuto   display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"

" Pod

" Abbreviated blocks (implicit code forbidden)
syn region rakuPodAbbrRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\s*\zs=\ze\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodAbbrNoCodeType
    \ keepend

syn region rakuPodAbbrNoCodeType
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodName,rakuPodAbbrNoCode

syn match rakuPodName contained ".\+" contains=@rakuPodFormat
syn match rakuPodComment contained ".\+"

syn region rakuPodAbbrNoCode
    \ start="^"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=@rakuPodFormat

" Abbreviated blocks (everything is code)
syn region rakuPodAbbrRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\s*\zs=\zecode\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodAbbrCodeType
    \ keepend

syn region rakuPodAbbrCodeType
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodName,rakuPodAbbrCode

syn region rakuPodAbbrCode
    \ start="^"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained

" Abbreviated blocks (everything is a comment)
syn region rakuPodAbbrRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=\zecomment\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodAbbrCommentType
    \ keepend

syn region rakuPodAbbrCommentType
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodComment,rakuPodAbbrNoCode

" Abbreviated blocks (implicit code allowed)
syn region rakuPodAbbrRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodAbbrType
    \ keepend

syn region rakuPodAbbrType
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodName,rakuPodAbbr

syn region rakuPodAbbr
    \ start="^"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=@rakuPodFormat,rakuPodImplicitCode

" Abbreviated block to end-of-file
syn region rakuPodAbbrRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=\zeEND\>"
    \ end="\%$"
    \ contains=rakuPodAbbrEOFType
    \ keepend

syn region rakuPodAbbrEOFType
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="\%$"
    \ contained
    \ contains=rakuPodName,rakuPodAbbrEOF

syn region rakuPodAbbrEOF
    \ start="^"
    \ end="\%$"
    \ contained
    \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode

" Directives
syn region rakuPodDirectRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=\%(config\|use\)\>"
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contains=rakuPodDirectArgRegion
    \ keepend

syn region rakuPodDirectArgRegion
    \ matchgroup=rakuPodType
    \ start="\S\+"
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contained
    \ contains=rakuPodDirectConfigRegion

syn region rakuPodDirectConfigRegion
    \ start=""
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contained
    \ contains=@rakuPodConfig

" =encoding is a special directive
syn region rakuPodDirectRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=encoding\>"
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contains=rakuPodEncodingArgRegion
    \ keepend

syn region rakuPodEncodingArgRegion
    \ matchgroup=rakuPodName
    \ start="\S\+"
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contained

" Paragraph blocks (implicit code forbidden)
syn region rakuPodParaRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\s*\zs=for\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodParaNoCodeTypeRegion
    \ keepend extend

syn region rakuPodParaNoCodeTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodParaNoCode,rakuPodParaConfigRegion

syn region rakuPodParaConfigRegion
    \ start=""
    \ end="^\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\@1<!\)"
    \ contained
    \ contains=@rakuPodConfig

syn region rakuPodParaNoCode
    \ start="^[^=]"
    \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=@rakuPodFormat

" Paragraph blocks (everything is code)
syn region rakuPodParaRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\s*\zs=for\>\ze\s*code\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodParaCodeTypeRegion
    \ keepend extend

syn region rakuPodParaCodeTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodParaCode,rakuPodParaConfigRegion

syn region rakuPodParaCode
    \ start="^[^=]"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained

" Paragraph blocks (implicit code allowed)
syn region rakuPodParaRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\s*\zs=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
    \ end="^\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contains=rakuPodParaTypeRegion
    \ keepend extend

syn region rakuPodParaTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=rakuPodPara,rakuPodParaConfigRegion

syn region rakuPodPara
    \ start="^[^=]"
    \ end="^\s*\zs\ze\%(\s*$\|=[A-Za-z_\xC0-\xFF]\)"
    \ contained
    \ contains=@rakuPodFormat,rakuPodImplicitCode

" Paragraph block to end-of-file
syn region rakuPodParaRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=for\>\ze\s\+END\>"
    \ end="\%$"
    \ contains=rakuPodParaEOFTypeRegion
    \ keepend extend

syn region rakuPodParaEOFTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="\%$"
    \ contained
    \ contains=rakuPodParaEOF,rakuPodParaConfigRegion

syn region rakuPodParaEOF
    \ start="^[^=]"
    \ end="\%$"
    \ contained
    \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode

" Delimited blocks (implicit code forbidden)
syn region rakuPodDelimRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\z(\s*\)\zs=begin\>"
    \ end="^\z1\zs=end\>"
    \ contains=rakuPodDelimNoCodeTypeRegion
    \ keepend extend skipwhite
    \ nextgroup=rakuPodType

syn region rakuPodDelimNoCodeTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=rakuPodDelimNoCode,rakuPodDelimConfigRegion

syn region rakuPodDelimConfigRegion
    \ start=""
    \ end="^\s*\zs\ze\%([^=]\|=[A-Za-z_\xC0-\xFF]\|\s*$\)"
    \ contained
    \ contains=@rakuPodConfig

syn region rakuPodDelimNoCode
    \ start="^"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=@rakuPodNestedBlocks,@rakuPodFormat

" Delimited blocks (everything is code)
syn region rakuPodDelimRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\z(\s*\)\zs=begin\>\ze\s*code\>"
    \ end="^\z1\zs=end\>"
    \ contains=rakuPodDelimCodeTypeRegion
    \ keepend extend skipwhite
    \ nextgroup=rakuPodType

syn region rakuPodDelimCodeTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=rakuPodDelimCode,rakuPodDelimConfigRegion

syn region rakuPodDelimCode
    \ start="^"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=@rakuPodNestedBlocks

" Delimited blocks (implicit code allowed)
syn region rakuPodDelimRegion
    \ matchgroup=rakuPodPrefix
    \ start="^\z(\s*\)\zs=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>"
    \ end="^\z1\zs=end\>"
    \ contains=rakuPodDelimTypeRegion
    \ keepend extend skipwhite
    \ nextgroup=rakuPodType

syn region rakuPodDelimTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=rakuPodDelim,rakuPodDelimConfigRegion

syn region rakuPodDelim
    \ start="^"
    \ end="^\s*\zs\ze=end\>"
    \ contained
    \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode

" Delimited block to end-of-file
syn region rakuPodDelimRegion
    \ matchgroup=rakuPodPrefix
    \ start="^=begin\>\ze\s\+END\>"
    \ end="\%$"
    \ extend
    \ contains=rakuPodDelimEOFTypeRegion

syn region rakuPodDelimEOFTypeRegion
    \ matchgroup=rakuPodType
    \ start="\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
    \ end="\%$"
    \ contained
    \ contains=rakuPodDelimEOF,rakuPodDelimConfigRegion

syn region rakuPodDelimEOF
    \ start="^"
    \ end="\%$"
    \ contained
    \ contains=@rakuPodNestedBlocks,@rakuPodFormat,rakuPodImplicitCode

syn cluster rakuPodConfig
    \ add=rakuPodConfigOperator
    \ add=rakuPodExtraConfig
    \ add=rakuStringAuto
    \ add=rakuPodAutoQuote
    \ add=rakuStringSQ

syn region rakuPodParens
    \ start="("
    \ end=")"
    \ contained
    \ contains=rakuNumber,rakuStringSQ

syn match rakuPodAutoQuote      display contained "=>"
syn match rakuPodConfigOperator display contained ":!\?" nextgroup=rakuPodConfigOption
syn match rakuPodConfigOption   display contained "[^[:space:](<]\+" nextgroup=rakuPodParens,rakuStringAngle
syn match rakuPodExtraConfig    display contained "^="
syn match rakuPodVerticalBar    display contained "|"
syn match rakuPodColon          display contained ":"
syn match rakuPodSemicolon      display contained ";"
syn match rakuPodComma          display contained ","
syn match rakuPodImplicitCode   display contained "^\s.*"
syn match rakuPodType           display contained "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"

" These may appear inside delimited blocks
syn cluster rakuPodNestedBlocks
    \ add=rakuPodAbbrRegion
    \ add=rakuPodDirectRegion
    \ add=rakuPodParaRegion
    \ add=rakuPodDelimRegion

" Pod formatting codes

syn cluster rakuPodFormat
    \ add=rakuPodFormatOne
    \ add=rakuPodFormatTwo
    \ add=rakuPodFormatThree
    \ add=rakuPodFormatFrench

" Balanced angles found inside formatting codes. Ensures proper nesting.

syn region rakuPodFormatAnglesOne
    \ matchgroup=rakuPodFormat
    \ start="<"
    \ skip="<[^>]*>"
    \ end=">"
    \ transparent contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne

syn region rakuPodFormatAnglesTwo
    \ matchgroup=rakuPodFormat
    \ start="<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ transparent contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo

syn region rakuPodFormatAnglesThree
    \ matchgroup=rakuPodFormat
    \ start="<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ transparent contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree

syn region rakuPodFormatAnglesFrench
    \ matchgroup=rakuPodFormat
    \ start="«"
    \ skip="«[^»]*»"
    \ end="»"
    \ transparent contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatAnglesOne,rakuPodFormatAnglesTwo,rakuPodFormatAnglesThree

" All formatting codes

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="\u<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="\u<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="\u<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="\u«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree

" C<> and V<> don't allow nested formatting formatting codes

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="[CV]<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="[CV]<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="[CV]<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="[CV]«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench

" L<> can have a "|" separator

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="L<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="L<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="L<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="L«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar

" E<> can have a ";" separator

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="E<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodSemiColon

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="E<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodSemiColon

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="E<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="E«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodSemiColon

" M<> can have a ":" separator

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="M<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodColon

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="M<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodColon

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="M<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="M«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodColon

" D<> can have "|" and ";" separators

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="D<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="D<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAngleTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="D<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="D«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon

" X<> can have "|", "," and ";" separators

syn region rakuPodFormatOne
    \ matchgroup=rakuPodFormatCode
    \ start="X<"
    \ skip="<[^>]*>"
    \ end=">"
    \ contained
    \ contains=rakuPodFormatAnglesOne,rakuPodFormatFrench,rakuPodFormatOne,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma

syn region rakuPodFormatTwo
    \ matchgroup=rakuPodFormatCode
    \ start="X<<"
    \ skip="<<[^>]*>>"
    \ end=">>"
    \ contained
    \ contains=rakuPodFormatAnglesTwo,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma

syn region rakuPodFormatThree
    \ matchgroup=rakuPodFormatCode
    \ start="X<<<"
    \ skip="<<<[^>]*>>>"
    \ end=">>>"
    \ contained
    \ contains=rakuPodFormatAnglesThree,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma

syn region rakuPodFormatFrench
    \ matchgroup=rakuPodFormatCode
    \ start="X«"
    \ skip="«[^»]*»"
    \ end="»"
    \ contained
    \ contains=rakuPodFormatAnglesFrench,rakuPodFormatFrench,rakuPodFormatOne,rakuPodFormatTwo,rakuPodFormatThree,rakuPodVerticalBar,rakuPodSemiColon,rakuPodComma

" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_raku_syntax_inits")
    if version < 508
        let did_raku_syntax_inits = 1
        command -nargs=+ HiLink hi link <args>
    else
        command -nargs=+ HiLink hi def link <args>
    endif

    HiLink rakuEscOctOld        rakuError
    HiLink rakuPackageTwigil    rakuTwigil
    HiLink rakuStringAngle      rakuString
    HiLink rakuStringAngleFixed rakuString
    HiLink rakuStringFrench     rakuString
    HiLink rakuStringAngles     rakuString
    HiLink rakuStringSQ         rakuString
    HiLink rakuStringDQ         rakuString
    HiLink rakuStringQ          rakuString
    HiLink rakuStringQ_q        rakuString
    HiLink rakuStringQ_qww      rakuString
    HiLink rakuStringQ_qq       rakuString
    HiLink rakuStringQ_to       rakuString
    HiLink rakuStringQ_qto      rakuString
    HiLink rakuStringQ_qqto     rakuString
    HiLink rakuRxStringSQ       rakuString
    HiLink rakuRxStringDQ       rakuString
    HiLink rakuReplacement      rakuString
    HiLink rakuReplCurly        rakuString
    HiLink rakuReplAngle        rakuString
    HiLink rakuReplFrench       rakuString
    HiLink rakuReplBracket      rakuString
    HiLink rakuReplParen        rakuString
    HiLink rakuTransliteration  rakuString
    HiLink rakuTransRepl        rakuString
    HiLink rakuTransReplCurly   rakuString
    HiLink rakuTransReplAngle   rakuString
    HiLink rakuTransReplFrench  rakuString
    HiLink rakuTransReplBracket rakuString
    HiLink rakuTransReplParen   rakuString
    HiLink rakuStringAuto       rakuString
    HiLink rakuKey              rakuString
    HiLink rakuMatch            rakuString
    HiLink rakuSubstitution     rakuString
    HiLink rakuMatchBare        rakuString
    HiLink rakuRegexBlock       rakuString
    HiLink rakuRxP5CharClass    rakuString
    HiLink rakuRxP5QuoteMeta    rakuString
    HiLink rakuRxCharClass      rakuString
    HiLink rakuRxQuoteWords     rakuString
    HiLink rakuReduceOp         rakuOperator
    HiLink rakuSetOp            rakuOperator
    HiLink rakuRSXZOp           rakuOperator
    HiLink rakuHyperOp          rakuOperator
    HiLink rakuPostHyperOp      rakuOperator
    HiLink rakuQuoteQ           rakuQuote
    HiLink rakuQuoteQ_q         rakuQuote
    HiLink rakuQuoteQ_qww       rakuQuote
    HiLink rakuQuoteQ_qq        rakuQuote
    HiLink rakuQuoteQ_to        rakuQuote
    HiLink rakuQuoteQ_qto       rakuQuote
    HiLink rakuQuoteQ_qqto      rakuQuote
    HiLink rakuQuoteQ_PIR       rakuQuote
    HiLink rakuMatchStart_m     rakuQuote
    HiLink rakuMatchStart_s     rakuQuote
    HiLink rakuMatchStart_tr    rakuQuote
    HiLink rakuBareSigil        rakuVariable
    HiLink rakuRxRange          rakuStringSpecial
    HiLink rakuRxAnchor         rakuStringSpecial
    HiLink rakuRxBoundary       rakuStringSpecial
    HiLink rakuRxP5Anchor       rakuStringSpecial
    HiLink rakuCodePoint        rakuStringSpecial
    HiLink rakuRxMeta           rakuStringSpecial
    HiLink rakuRxP5Range        rakuStringSpecial
    HiLink rakuRxP5CPId         rakuStringSpecial
    HiLink rakuRxP5Posix        rakuStringSpecial
    HiLink rakuRxP5Mod          rakuStringSpecial
    HiLink rakuRxP5HexSeq       rakuStringSpecial
    HiLink rakuRxP5OctSeq       rakuStringSpecial
    HiLink rakuRxP5WriteRefId   rakuStringSpecial
    HiLink rakuHexSequence      rakuStringSpecial
    HiLink rakuOctSequence      rakuStringSpecial
    HiLink rakuRxP5Named        rakuStringSpecial
    HiLink rakuRxP5PropId       rakuStringSpecial
    HiLink rakuRxP5Quantifier   rakuStringSpecial
    HiLink rakuRxP5CountId      rakuStringSpecial
    HiLink rakuRxP5Verb         rakuStringSpecial
    HiLink rakuRxAssertGroup    rakuStringSpecial2
    HiLink rakuEscape           rakuStringSpecial2
    HiLink rakuEscNull          rakuStringSpecial2
    HiLink rakuEscHash          rakuStringSpecial2
    HiLink rakuEscQQ            rakuStringSpecial2
    HiLink rakuEscQuote         rakuStringSpecial2
    HiLink rakuEscDoubleQuote   rakuStringSpecial2
    HiLink rakuEscBackTick      rakuStringSpecial2
    HiLink rakuEscForwardSlash  rakuStringSpecial2
    HiLink rakuEscVerticalBar   rakuStringSpecial2
    HiLink rakuEscExclamation   rakuStringSpecial2
    HiLink rakuEscDollar        rakuStringSpecial2
    HiLink rakuEscOpenCurly     rakuStringSpecial2
    HiLink rakuEscCloseCurly    rakuStringSpecial2
    HiLink rakuEscCloseBracket  rakuStringSpecial2
    HiLink rakuEscCloseAngle    rakuStringSpecial2
    HiLink rakuEscCloseFrench   rakuStringSpecial2
    HiLink rakuEscBackSlash     rakuStringSpecial2
    HiLink rakuEscCodePoint     rakuStringSpecial2
    HiLink rakuEscOct           rakuStringSpecial2
    HiLink rakuEscHex           rakuStringSpecial2
    HiLink rakuRxEscape         rakuStringSpecial2
    HiLink rakuRxCapture        rakuStringSpecial2
    HiLink rakuRxAlternation    rakuStringSpecial2
    HiLink rakuRxP5             rakuStringSpecial2
    HiLink rakuRxP5ReadRef      rakuStringSpecial2
    HiLink rakuRxP5Oct          rakuStringSpecial2
    HiLink rakuRxP5Hex          rakuStringSpecial2
    HiLink rakuRxP5EscMeta      rakuStringSpecial2
    HiLink rakuRxP5Meta         rakuStringSpecial2
    HiLink rakuRxP5Escape       rakuStringSpecial2
    HiLink rakuRxP5CodePoint    rakuStringSpecial2
    HiLink rakuRxP5WriteRef     rakuStringSpecial2
    HiLink rakuRxP5Prop         rakuStringSpecial2

    HiLink rakuProperty       Tag
    HiLink rakuAttention      Todo
    HiLink rakuType           Type
    HiLink rakuError          Error
    HiLink rakuBlockLabel     Label
    HiLink rakuNormal         Normal
    HiLink rakuIdentifier     Normal
    HiLink rakuPackage        Normal
    HiLink rakuPackageScope   Normal
    HiLink rakuNumber         Number
    HiLink rakuOctNumber      Number
    HiLink rakuBinNumber      Number
    HiLink rakuHexNumber      Number
    HiLink rakuDecNumber      Number
    HiLink rakuString         String
    HiLink rakuRepeat         Repeat
    HiLink rakuPragma         Keyword
    HiLink rakuPreDeclare     Keyword
    HiLink rakuDeclare        Keyword
    HiLink rakuDeclareRegex   Keyword
    HiLink rakuVarStorage     Special
    HiLink rakuFlowControl    Special
    HiLink rakuOctBase        Special
    HiLink rakuBinBase        Special
    HiLink rakuHexBase        Special
    HiLink rakuDecBase        Special
    HiLink rakuTwigil         Special
    HiLink rakuStringSpecial2 Special
    HiLink rakuVersion        Special
    HiLink rakuComment        Comment
    HiLink rakuBracketComment Comment
    HiLink rakuInclude        Include
    HiLink rakuShebang        PreProc
    HiLink rakuClosureTrait   PreProc
    HiLink rakuOperator       Operator
    HiLink rakuContext        Operator
    HiLink rakuQuote          Delimiter
    HiLink rakuTypeConstraint PreCondit
    HiLink rakuException      Exception
    HiLink rakuVariable       Identifier
    HiLink rakuVarSlash       Identifier
    HiLink rakuVarNum         Identifier
    HiLink rakuVarExclam      Identifier
    HiLink rakuVarMatch       Identifier
    HiLink rakuVarName        Identifier
    HiLink rakuMatchVar       Identifier
    HiLink rakuRxP5ReadRefId  Identifier
    HiLink rakuRxP5ModDef     Identifier
    HiLink rakuRxP5ModName    Identifier
    HiLink rakuConditional    Conditional
    HiLink rakuStringSpecial  SpecialChar

    HiLink rakuPodAbbr         rakuPod
    HiLink rakuPodAbbrEOF      rakuPod
    HiLink rakuPodAbbrNoCode   rakuPod
    HiLink rakuPodAbbrCode     rakuPodCode
    HiLink rakuPodPara         rakuPod
    HiLink rakuPodParaEOF      rakuPod
    HiLink rakuPodParaNoCode   rakuPod
    HiLink rakuPodParaCode     rakuPodCode
    HiLink rakuPodDelim        rakuPod
    HiLink rakuPodDelimEOF     rakuPod
    HiLink rakuPodDelimNoCode  rakuPod
    HiLink rakuPodDelimCode    rakuPodCode
    HiLink rakuPodImplicitCode rakuPodCode
    HiLink rakuPodExtraConfig  rakuPodPrefix
    HiLink rakuPodVerticalBar  rakuPodFormatCode
    HiLink rakuPodColon        rakuPodFormatCode
    HiLink rakuPodSemicolon    rakuPodFormatCode
    HiLink rakuPodComma        rakuPodFormatCode
    HiLink rakuPodFormatOne    rakuPodFormat
    HiLink rakuPodFormatTwo    rakuPodFormat
    HiLink rakuPodFormatThree  rakuPodFormat
    HiLink rakuPodFormatFrench rakuPodFormat

    HiLink rakuPodType           Type
    HiLink rakuPodConfigOption   String
    HiLink rakuPodCode           PreProc
    HiLink rakuPod               Comment
    HiLink rakuPodComment        Comment
    HiLink rakuPodAutoQuote      Operator
    HiLink rakuPodConfigOperator Operator
    HiLink rakuPodPrefix         Statement
    HiLink rakuPodName           Identifier
    HiLink rakuPodFormatCode     SpecialChar
    HiLink rakuPodFormat         SpecialComment

    delcommand HiLink
endif

if exists("raku_fold") || exists("raku_extended_all")
    setl foldmethod=syntax
    syn region rakuBlockFold
        \ start="^\z(\s*\)\%(my\|our\|augment\|multi\|proto\|only\)\?\s*\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\s\+\)\?\<\%(CATCH\|try\|ENTER\|LEAVE\|CHECK\|INIT\|BEGIN\|END\|KEEP\|UNDO\|PRE\|POST\|module\|package\|enum\|subset\|class\|sub\%(method\)\?\|multi\|method\|slang\|grammar\|regex\|token\|rule\)\>[^{]\+\%({\s*\%(#.*\)\?\)\?$"
        \ end="^\z1}"
        \ transparent fold keepend extend
endif

let b:current_syntax = "raku"

let &cpo = s:keepcpo
unlet s:keepcpo

" vim:ts=8:sts=4:sw=4:expandtab:ft=vim

Filemanager

Name Type Size Permission Actions
modula2 Folder 0755
shared Folder 0755
2html.vim File 77.09 KB 0644
8th.vim File 40.42 KB 0644
a2ps.vim File 2.37 KB 0644
a65.vim File 6.24 KB 0644
aap.vim File 5.63 KB 0644
abap.vim File 8.94 KB 0644
abaqus.vim File 1.07 KB 0644
abc.vim File 1.8 KB 0644
abel.vim File 4.99 KB 0644
acedb.vim File 4.76 KB 0644
ada.vim File 12.75 KB 0644
aflex.vim File 4.27 KB 0644
ahdl.vim File 2.71 KB 0644
aidl.vim File 629 B 0644
alsaconf.vim File 1.51 KB 0644
amiga.vim File 2.9 KB 0644
aml.vim File 23.57 KB 0644
ampl.vim File 4.01 KB 0644
ant.vim File 5.68 KB 0644
antlr.vim File 1.75 KB 0644
apache.vim File 15.11 KB 0644
apachestyle.vim File 1.38 KB 0644
aptconf.vim File 21.92 KB 0644
arch.vim File 1.12 KB 0644
arduino.vim File 3.88 KB 0644
art.vim File 1.27 KB 0644
asciidoc.vim File 10.88 KB 0644
asm.vim File 5.9 KB 0644
asm68k.vim File 13.95 KB 0644
asmh8300.vim File 1.68 KB 0644
asn.vim File 2.52 KB 0644
aspperl.vim File 811 B 0644
aspvbs.vim File 8.88 KB 0644
asterisk.vim File 5.5 KB 0644
asteriskvm.vim File 2.28 KB 0644
atlas.vim File 2.54 KB 0644
autodoc.vim File 3.64 KB 0644
autohotkey.vim File 11.79 KB 0644
autoit.vim File 46.92 KB 0644
automake.vim File 3.84 KB 0644
ave.vim File 1.86 KB 0644
avra.vim File 2.62 KB 0644
awk.vim File 8 KB 0644
ayacc.vim File 2.52 KB 0644
b.vim File 4.79 KB 0644
baan.vim File 71.87 KB 0644
bash.vim File 411 B 0644
basic.vim File 9.19 KB 0644
bc.vim File 1.75 KB 0644
bdf.vim File 3.75 KB 0644
bib.vim File 5.86 KB 0644
bindzone.vim File 4.82 KB 0644
bitbake.vim File 5.79 KB 0644
blank.vim File 794 B 0644
bsdl.vim File 377 B 0644
bst.vim File 2.76 KB 0644
btm.vim File 9.07 KB 0644
bzl.vim File 374 B 0644
bzr.vim File 1.52 KB 0644
c.vim File 27.51 KB 0644
cabal.vim File 7.6 KB 0644
cabalconfig.vim File 1.15 KB 0644
cabalproject.vim File 944 B 0644
calendar.vim File 4.92 KB 0644
catalog.vim File 921 B 0644
cdl.vim File 3.02 KB 0644
cdrdaoconf.vim File 3.56 KB 0644
cdrtoc.vim File 22.22 KB 0644
cf.vim File 18.21 KB 0644
cfg.vim File 1.32 KB 0644
ch.vim File 922 B 0644
chaiscript.vim File 2.82 KB 0644
change.vim File 901 B 0644
changelog.vim File 2.05 KB 0644
chaskell.vim File 333 B 0644
chatito.vim File 1.81 KB 0644
cheetah.vim File 1.71 KB 0644
chicken.vim File 3.18 KB 0644
chill.vim File 7.84 KB 0644
chordpro.vim File 6.36 KB 0644
cl.vim File 3.81 KB 0644
clean.vim File 3.08 KB 0644
clipper.vim File 5.45 KB 0644
clojure.vim File 46.58 KB 0644
cmake.vim File 161.33 KB 0644
cmod.vim File 6.12 KB 0644
cmusrc.vim File 12.62 KB 0644
cobol.vim File 13.27 KB 0644
coco.vim File 1.3 KB 0644
colortest.vim File 3.19 KB 0644
conaryrecipe.vim File 7.85 KB 0644
conf.vim File 879 B 0644
config.vim File 2.03 KB 0644
confini.vim File 230 B 0644
context.vim File 6.25 KB 0644
cpp.vim File 5.86 KB 0644
crm.vim File 1.17 KB 0644
crontab.vim File 2.2 KB 0644
cs.vim File 14.14 KB 0644
csc.vim File 8.25 KB 0644
csdl.vim File 23.2 KB 0644
csh.vim File 6.31 KB 0644
csp.vim File 6.98 KB 0644
css.vim File 33.07 KB 0644
cterm.vim File 6.26 KB 0644
ctrlh.vim File 754 B 0644
cucumber.vim File 51.37 KB 0644
cuda.vim File 2.63 KB 0644
cupl.vim File 3.78 KB 0644
cuplsim.vim File 1.87 KB 0644
cvs.vim File 882 B 0644
cvsrc.vim File 1.22 KB 0644
cweb.vim File 2.82 KB 0644
cynlib.vim File 2.49 KB 0644
cynpp.vim File 1.23 KB 0644
d.vim File 27.96 KB 0644
dart.vim File 3.21 KB 0644
datascript.vim File 3.72 KB 0644
dcd.vim File 1.76 KB 0644
dcl.vim File 6.23 KB 0644
deb822sources.vim File 3.16 KB 0644
debchangelog.vim File 2.78 KB 0644
debcontrol.vim File 8.58 KB 0644
debcopyright.vim File 1.11 KB 0644
debsources.vim File 1.93 KB 0644
def.vim File 1.07 KB 0644
denyhosts.vim File 7.19 KB 0644
dep3patch.vim File 2.93 KB 0644
desc.vim File 3 KB 0644
desktop.vim File 9.16 KB 0644
dictconf.vim File 3.04 KB 0644
dictdconf.vim File 6.31 KB 0644
diff.vim File 17.06 KB 0644
dircolors.vim File 6.78 KB 0644
dirpager.vim File 1.75 KB 0644
diva.vim File 4.63 KB 0644
django.vim File 3.92 KB 0644
dns.vim File 132 B 0644
dnsmasq.vim File 9.83 KB 0644
docbk.vim File 10.08 KB 0644
docbksgml.vim File 193 B 0644
docbkxml.vim File 191 B 0644
dockerfile.vim File 2.42 KB 0644
dosbatch.vim File 6.25 KB 0644
dosini.vim File 1.5 KB 0644
dot.vim File 4.39 KB 0644
doxygen.vim File 38.17 KB 0644
dracula.vim File 2.61 KB 0644
dsl.vim File 1.28 KB 0644
dtd.vim File 4.87 KB 0644
dtml.vim File 16.22 KB 0644
dtrace.vim File 6.29 KB 0644
dts.vim File 5.15 KB 0644
dune.vim File 1.9 KB 0644
dylan.vim File 3.33 KB 0644
dylanintr.vim File 1.05 KB 0644
dylanlid.vim File 664 B 0644
ecd.vim File 1.2 KB 0644
edif.vim File 1.25 KB 0644
editorconfig.vim File 613 B 0644
eiffel.vim File 6.76 KB 0644
elf.vim File 2.29 KB 0644
elinks.vim File 10.25 KB 0644
elm.vim File 3.57 KB 0644
elmfilt.vim File 2.83 KB 0644
erlang.vim File 11.13 KB 0644
eruby.vim File 3.06 KB 0644
esmtprc.vim File 938 B 0644
esqlc.vim File 2.04 KB 0644
esterel.vim File 2.98 KB 0644
eterm.vim File 18.72 KB 0644
euphoria3.vim File 5.96 KB 0644
euphoria4.vim File 14.2 KB 0644
eviews.vim File 4.89 KB 0644
exim.vim File 17.66 KB 0644
expect.vim File 3.65 KB 0644
exports.vim File 1.71 KB 0644
falcon.vim File 11.73 KB 0644
fan.vim File 5.32 KB 0644
fasm.vim File 8.55 KB 0644
fdcc.vim File 5.52 KB 0644
fetchmail.vim File 2.93 KB 0644
fgl.vim File 7.1 KB 0644
fish.vim File 9.21 KB 0644
flexwiki.vim File 5.31 KB 0644
focexec.vim File 3.44 KB 0644
form.vim File 6.24 KB 0644
forth.vim File 16.24 KB 0644
fortran.vim File 33.3 KB 0644
foxpro.vim File 32.09 KB 0644
fpcmake.vim File 2 KB 0644
framescript.vim File 11.41 KB 0644
freebasic.vim File 26 KB 0644
fstab.vim File 29.05 KB 0644
fvwm.vim File 24.44 KB 0644
fvwm2m4.vim File 711 B 0644
gdb.vim File 4.31 KB 0644
gdmo.vim File 3.22 KB 0644
gdresource.vim File 2.24 KB 0644
gdscript.vim File 3.79 KB 0644
gdshader.vim File 1.97 KB 0644
gedcom.vim File 2.22 KB 0644
gemtext.vim File 682 B 0644
gift.vim File 10 KB 0644
git.vim File 7.29 KB 0644
gitattributes.vim File 2.38 KB 0644
gitcommit.vim File 6.46 KB 0644
gitconfig.vim File 1.56 KB 0644
gitignore.vim File 905 B 0644
gitolite.vim File 4.35 KB 0644
gitrebase.vim File 3.13 KB 0644
gitsendemail.vim File 580 B 0644
gkrellmrc.vim File 4.02 KB 0644
gnash.vim File 3.38 KB 0644
gnuplot.vim File 23.27 KB 0644
go.vim File 24.21 KB 0644
godoc.vim File 352 B 0644
gp.vim File 3.3 KB 0644
gpg.vim File 7.92 KB 0644
gprof.vim File 2.09 KB 0644
grads.vim File 1.7 KB 0644
gretl.vim File 3.64 KB 0644
groff.vim File 321 B 0644
groovy.vim File 21.96 KB 0644
group.vim File 1.68 KB 0644
grub.vim File 3.8 KB 0644
gsp.vim File 1.98 KB 0644
gtkrc.vim File 9.1 KB 0644
gvpr.vim File 3.3 KB 0644
gyp.vim File 1.62 KB 0644
haml.vim File 6.91 KB 0644
hamster.vim File 13.52 KB 0644
hare.vim File 4.19 KB 0644
haskell.vim File 9.08 KB 0644
haste.vim File 4.88 KB 0644
hastepreproc.vim File 1.39 KB 0644
hb.vim File 3.08 KB 0644
help.vim File 8.75 KB 0644
help_ru.vim File 3.44 KB 0644
hercules.vim File 5.59 KB 0644
hex.vim File 3.92 KB 0644
hgcommit.vim File 1.38 KB 0644
hitest.vim File 275 B 0644
hlsplaylist.vim File 7.44 KB 0644
hog.vim File 11.83 KB 0644
hollywood.vim File 48.99 KB 0644
hostconf.vim File 3.78 KB 0644
hostsaccess.vim File 549 B 0644
html.vim File 19.04 KB 0644
htmlcheetah.vim File 488 B 0644
htmldjango.vim File 1011 B 0644
htmlm4.vim File 670 B 0644
htmlos.vim File 8.12 KB 0644
i3config.vim File 21.81 KB 0644
ia64.vim File 10.23 KB 0644
ibasic.vim File 6.87 KB 0644
icemenu.vim File 824 B 0644
icon.vim File 8.72 KB 0644
idl.vim File 19.43 KB 0644
idlang.vim File 13.15 KB 0644
indent.vim File 7.03 KB 0644
inform.vim File 19.03 KB 0644
initex.vim File 18.77 KB 0644
initng.vim File 3.3 KB 0644
inittab.vim File 2.48 KB 0644
ipfilter.vim File 1.62 KB 0644
ishd.vim File 26.42 KB 0644
iss.vim File 4.89 KB 0644
ist.vim File 1.95 KB 0644
j.vim File 9.22 KB 0644
jal.vim File 8.75 KB 0644
jam.vim File 26.08 KB 0644
jargon.vim File 740 B 0644
java.vim File 18.96 KB 0644
javacc.vim File 2.2 KB 0644
javascript.vim File 6.15 KB 0644
javascriptreact.vim File 133 B 0644
jess.vim File 6.08 KB 0644
jgraph.vim File 1.18 KB 0644
jovial.vim File 4.01 KB 0644
jproperties.vim File 5.37 KB 0644
json.vim File 6.11 KB 0644
json5.vim File 2.5 KB 0644
jsonc.vim File 1.69 KB 0644
jsp.vim File 2.62 KB 0644
julia.vim File 37.02 KB 0644
kconfig.vim File 35.45 KB 0644
kivy.vim File 986 B 0644
kix.vim File 6.18 KB 0644
kotlin.vim File 9.21 KB 0644
krl.vim File 18.01 KB 0644
kscript.vim File 1.94 KB 0644
kwt.vim File 2.4 KB 0644
lace.vim File 3.98 KB 0644
latte.vim File 3.43 KB 0644
lc.vim File 724 B 0644
ld.vim File 2.88 KB 0644
ldapconf.vim File 12.99 KB 0644
ldif.vim File 1014 B 0644
less.vim File 4.1 KB 0644
lex.vim File 8.45 KB 0644
lftp.vim File 7.3 KB 0644
lhaskell.vim File 4.82 KB 0644
libao.vim File 636 B 0644
lifelines.vim File 6.48 KB 0644
lilo.vim File 10.18 KB 0644
limits.vim File 1.29 KB 0644
liquid.vim File 6.31 KB 0644
lisp.vim File 35.18 KB 0644
lite.vim File 4.73 KB 0644
litestep.vim File 6.52 KB 0644
livebook.vim File 154 B 0644
loginaccess.vim File 4.1 KB 0644
logindefs.vim File 7.36 KB 0644
logtalk.vim File 16.67 KB 0644
lotos.vim File 2.31 KB 0644
lout.vim File 4.22 KB 0644
lpc.vim File 22.6 KB 0644
lprolog.vim File 3.89 KB 0644
lscript.vim File 11.82 KB 0644
lsl.vim File 15.43 KB 0644
lss.vim File 4.75 KB 0644
lua.vim File 15.64 KB 0644
luau.vim File 252 B 0644
lynx.vim File 7.06 KB 0644
lyrics.vim File 1.14 KB 0644
m3build.vim File 5.64 KB 0644
m3quake.vim File 2.57 KB 0644
m4.vim File 2.66 KB 0644
mail.vim File 5.93 KB 0644
mailaliases.vim File 2.7 KB 0644
mailcap.vim File 1.11 KB 0644
make.vim File 6.08 KB 0644
mallard.vim File 1.69 KB 0644
man.vim File 1.76 KB 0644
manconf.vim File 4.24 KB 0644
manual.vim File 975 B 0644
maple.vim File 27.9 KB 0644
markdown.vim File 10.34 KB 0644
masm.vim File 27.96 KB 0644
mason.vim File 3.8 KB 0644
master.vim File 1022 B 0644
matlab.vim File 4.21 KB 0644
maxima.vim File 18.36 KB 0644
mel.vim File 3.33 KB 0644
mermaid.vim File 2.8 KB 0644
meson.vim File 3.96 KB 0644
messages.vim File 2.65 KB 0644
mf.vim File 15.56 KB 0644
mgl.vim File 3.64 KB 0644
mgp.vim File 1.95 KB 0644
mib.vim File 2.63 KB 0644
mix.vim File 2.87 KB 0644
mma.vim File 11.52 KB 0644
mmix.vim File 4.85 KB 0644
mmp.vim File 1.45 KB 0644
modconf.vim File 1.39 KB 0644
model.vim File 1.49 KB 0644
modsim3.vim File 3.54 KB 0644
modula2.vim File 383 B 0644
modula3.vim File 4.43 KB 0644
mojo.vim File 12.35 KB 0644
monk.vim File 9.98 KB 0644
moo.vim File 9.02 KB 0644
mp.vim File 12.21 KB 0644
mplayerconf.vim File 7.31 KB 0644
mrxvtrc.vim File 9.38 KB 0644
msidl.vim File 3.38 KB 0644
msmessages.vim File 6.17 KB 0644
msql.vim File 2.33 KB 0644
mupad.vim File 15.14 KB 0644
murphi.vim File 4.47 KB 0644
mush.vim File 12.88 KB 0644
muttrc.vim File 67.86 KB 0644
mysql.vim File 17.2 KB 0644
n1ql.vim File 12.6 KB 0644
named.vim File 9.77 KB 0644
nanorc.vim File 10.37 KB 0644
nasm.vim File 29.64 KB 0644
nastran.vim File 8.3 KB 0644
natural.vim File 6.81 KB 0644
ncf.vim File 13.1 KB 0644
neomuttrc.vim File 66.12 KB 0644
netrc.vim File 2 KB 0644
netrw.vim File 7.03 KB 0644
nginx.vim File 115.45 KB 0644
ninja.vim File 2.82 KB 0644
nix.vim File 11.55 KB 0644
nosyntax.vim File 821 B 0644
nqc.vim File 13.74 KB 0644
nroff.vim File 7.61 KB 0644
nsis.vim File 36.49 KB 0644
obj.vim File 2.72 KB 0644
objc.vim File 40.79 KB 0644
objcpp.vim File 600 B 0644
obse.vim File 84.45 KB 0644
ocaml.vim File 16.56 KB 0644
occam.vim File 4.21 KB 0644
omnimark.vim File 6.23 KB 0644
opam.vim File 1.37 KB 0644
openroad.vim File 13.65 KB 0644
openscad.vim File 4.82 KB 0644
openvpn.vim File 2.25 KB 0644
opl.vim File 4.03 KB 0644
ora.vim File 26.5 KB 0644
pacmanlog.vim File 1.83 KB 0644
pamconf.vim File 5.81 KB 0644
pamenv.vim File 1.11 KB 0644
papp.vim File 3.7 KB 0644
pascal.vim File 15.61 KB 0644
passwd.vim File 2.39 KB 0644
pbtxt.vim File 1.34 KB 0644
pcap.vim File 1.46 KB 0644
pccts.vim File 4 KB 0644
pdf.vim File 3.46 KB 0644
perl.vim File 44.09 KB 0644
pf.vim File 10.13 KB 0644
pfmain.vim File 90.56 KB 0644
php.vim File 111.88 KB 0644
phtml.vim File 151 B 0644
pic.vim File 3.25 KB 0644
pike.vim File 21.3 KB 0644
pilrc.vim File 5.19 KB 0644
pine.vim File 15.05 KB 0644
pinfo.vim File 5.17 KB 0644
plaintex.vim File 10.06 KB 0644
pli.vim File 12.91 KB 0644
plm.vim File 5.24 KB 0644
plp.vim File 1.24 KB 0644
plsql.vim File 61.42 KB 0644
po.vim File 6.24 KB 0644
pod.vim File 10.6 KB 0644
poefilter.vim File 5.65 KB 0644
poke.vim File 5.07 KB 0644
postscr.vim File 45.05 KB 0644
pov.vim File 8.84 KB 0644
povini.vim File 3.41 KB 0644
ppd.vim File 870 B 0644
ppwiz.vim File 2.71 KB 0644
prescribe.vim File 2.33 KB 0644
privoxy.vim File 3.5 KB 0644
procmail.vim File 1.97 KB 0644
progress.vim File 31 KB 0644
prolog.vim File 4.39 KB 0644
promela.vim File 1.69 KB 0644
proto.vim File 3.46 KB 0644
protocols.vim File 1.4 KB 0644
ps1.vim File 7.33 KB 0644
ps1xml.vim File 1.25 KB 0644
psf.vim File 4.19 KB 0644
psl.vim File 2.47 KB 0644
ptcap.vim File 4.03 KB 0644
purifylog.vim File 3.28 KB 0644
pymanifest.vim File 1.05 KB 0644
pyrex.vim File 1.62 KB 0644
python.vim File 13.61 KB 0644
python2.vim File 14.36 KB 0644
qb64.vim File 7.78 KB 0644
qf.vim File 662 B 0644
qml.vim File 52.41 KB 0644
quake.vim File 8.35 KB 0644
quarto.vim File 742 B 0644
r.vim File 14.62 KB 0644
racc.vim File 5.49 KB 0644
racket.vim File 33.78 KB 0644
radiance.vim File 6.99 KB 0644
raku.vim File 73.89 KB 0644
raml.vim File 4.35 KB 0644
rapid.vim File 45.54 KB 0644
ratpoison.vim File 17.61 KB 0644
rc.vim File 9.79 KB 0644
rcs.vim File 2.08 KB 0644
rcslog.vim File 557 B 0644
readline.vim File 17.08 KB 0644
rebol.vim File 7 KB 0644
redif.vim File 85.88 KB 0644
registry.vim File 3.28 KB 0644
rego.vim File 5.55 KB 0644
remind.vim File 2.65 KB 0644
resolv.vim File 6.21 KB 0644
reva.vim File 7.41 KB 0644
rexx.vim File 14.97 KB 0644
rhelp.vim File 11.85 KB 0644
rib.vim File 2.14 KB 0644
rmd.vim File 10.51 KB 0644
rnc.vim File 2.21 KB 0644
rng.vim File 817 B 0644
rnoweb.vim File 1.87 KB 0644
robots.vim File 1.49 KB 0644
routeros.vim File 3.28 KB 0644
rpcgen.vim File 1.63 KB 0644
rpl.vim File 25.1 KB 0644
rrst.vim File 1.28 KB 0644
rst.vim File 11.5 KB 0644
rtf.vim File 2.28 KB 0644
ruby.vim File 40.92 KB 0644
rust.vim File 22.25 KB 0644
samba.vim File 5.99 KB 0644
sas.vim File 33.29 KB 0644
sass.vim File 6.26 KB 0644
sather.vim File 3.41 KB 0644
sbt.vim File 880 B 0644
scala.vim File 11.41 KB 0644
scdoc.vim File 2.68 KB 0644
scheme.vim File 18.98 KB 0644
scilab.vim File 3.13 KB 0644
screen.vim File 8.89 KB 0644
scss.vim File 526 B 0644
sd.vim File 2.17 KB 0644
sdc.vim File 1.36 KB 0644
sdl.vim File 6.41 KB 0644
sed.vim File 5.27 KB 0644
sendpr.vim File 938 B 0644
sensors.vim File 1.48 KB 0644
services.vim File 1.78 KB 0644
setserial.vim File 5.11 KB 0644
sexplib.vim File 3.6 KB 0644
sgml.vim File 8.66 KB 0644
sgmldecl.vim File 1.99 KB 0644
sgmllnx.vim File 1.81 KB 0644
sh.vim File 45.2 KB 0644
sicad.vim File 18.04 KB 0644
sieve.vim File 1.63 KB 0644
sil.vim File 8.34 KB 0644
simula.vim File 3.29 KB 0644
sinda.vim File 3.58 KB 0644
sindacmp.vim File 1.24 KB 0644
sindaout.vim File 1.92 KB 0644
sisu.vim File 21.66 KB 0644
skill.vim File 25.17 KB 0644
sl.vim File 3.99 KB 0644
slang.vim File 3.22 KB 0644
slice.vim File 2.86 KB 0644
slpconf.vim File 11.51 KB 0644
slpreg.vim File 5.22 KB 0644
slpspi.vim File 1.15 KB 0644
slrnrc.vim File 12.51 KB 0644
slrnsc.vim File 3.03 KB 0644
sm.vim File 2.78 KB 0644
smarty.vim File 2.82 KB 0644
smcl.vim File 11.76 KB 0644
smil.vim File 5.48 KB 0644
smith.vim File 793 B 0644
sml.vim File 9.25 KB 0644
snnsnet.vim File 2.42 KB 0644
snnspat.vim File 2.18 KB 0644
snnsres.vim File 1.89 KB 0644
snobol4.vim File 5.21 KB 0644
solidity.vim File 21.55 KB 0644
spec.vim File 12.41 KB 0644
specman.vim File 7.17 KB 0644
spice.vim File 2.19 KB 0644
splint.vim File 15.42 KB 0644
spup.vim File 13.6 KB 0644
spyce.vim File 4.35 KB 0644
sql.vim File 1.09 KB 0644
sqlanywhere.vim File 40.95 KB 0644
sqlforms.vim File 6.58 KB 0644
sqlhana.vim File 10.77 KB 0644
sqlinformix.vim File 5.76 KB 0644
sqlj.vim File 2.9 KB 0644
sqloracle.vim File 7.47 KB 0644
sqr.vim File 12.71 KB 0644
squid.vim File 6.77 KB 0644
squirrel.vim File 1.46 KB 0644
srec.vim File 3.73 KB 0644
srt.vim File 2.09 KB 0644
ssa.vim File 2.15 KB 0644
sshconfig.vim File 12.19 KB 0644
sshdconfig.vim File 13.05 KB 0644
st.vim File 2.69 KB 0644
stata.vim File 26.42 KB 0644
stp.vim File 5.3 KB 0644
strace.vim File 1.85 KB 0644
structurizr.vim File 2.3 KB 0644
sudoers.vim File 23.96 KB 0644
svg.vim File 436 B 0644
svn.vim File 1.81 KB 0644
swayconfig.vim File 12.24 KB 0644
swift.vim File 8.62 KB 0644
swiftgyb.vim File 822 B 0644
swig.vim File 4.41 KB 0644
syncolor.vim File 4.69 KB 0644
synload.vim File 2.06 KB 0644
syntax.vim File 1.34 KB 0644
sysctl.vim File 1.13 KB 0644
systemd.vim File 184 B 0644
systemverilog.vim File 3.46 KB 0644
tads.vim File 6.7 KB 0644
tags.vim File 1.13 KB 0644
tak.vim File 2.85 KB 0644
takcmp.vim File 1.56 KB 0644
takout.vim File 1.95 KB 0644
tap.vim File 4.04 KB 0644
tar.vim File 403 B 0644
taskdata.vim File 1.18 KB 0644
taskedit.vim File 1.1 KB 0644
tasm.vim File 5.56 KB 0644
tcl.vim File 16.87 KB 0644
tcsh.vim File 13.36 KB 0644
template.vim File 515 B 0644
teraterm.vim File 4.86 KB 0644
terminfo.vim File 4.69 KB 0644
tex.vim File 65.84 KB 0644
texinfo.vim File 1.55 KB 0644
texmf.vim File 2.23 KB 0644
tf.vim File 6.74 KB 0644
tidy.vim File 13.24 KB 0644
tilde.vim File 1.5 KB 0644
tli.vim File 1.62 KB 0644
tmux.vim File 9.36 KB 0644
toml.vim File 3.02 KB 0644
tpp.vim File 3.34 KB 0644
trasys.vim File 4.92 KB 0644
treetop.vim File 3.58 KB 0644
trustees.vim File 1.54 KB 0644
tsalt.vim File 8.13 KB 0644
tsscl.vim File 5 KB 0644
tssgm.vim File 2.72 KB 0644
tssop.vim File 1.74 KB 0644
tt2.vim File 7.74 KB 0644
tt2html.vim File 586 B 0644
tt2js.vim File 592 B 0644
typescript.vim File 1.38 KB 0644
typescriptreact.vim File 3.87 KB 0644
uc.vim File 6.48 KB 0644
udevconf.vim File 1.2 KB 0644
udevperm.vim File 2.35 KB 0644
udevrules.vim File 6.8 KB 0644
uil.vim File 2.75 KB 0644
unison.vim File 5.6 KB 0644
updatedb.vim File 1.19 KB 0644
upstart.vim File 3.08 KB 0644
upstreamdat.vim File 13.72 KB 0644
upstreaminstalllog.vim File 971 B 0644
upstreamlog.vim File 2.56 KB 0644
upstreamrpt.vim File 13.86 KB 0644
urlshortcut.vim File 348 B 0644
usserverlog.vim File 3.04 KB 0644
usw2kagtlog.vim File 2.64 KB 0644
valgrind.vim File 3.14 KB 0644
vb.vim File 20.63 KB 0644
vdf.vim File 1.37 KB 0644
vera.vim File 19.09 KB 0644
verilog.vim File 4.94 KB 0644
verilogams.vim File 5.94 KB 0644
vgrindefs.vim File 1.25 KB 0644
vhdl.vim File 9.43 KB 0644
vim.vim File 78.81 KB 0644
viminfo.vim File 1.28 KB 0644
virata.vim File 11.34 KB 0644
vmasm.vim File 8.31 KB 0644
voscm.vim File 6.81 KB 0644
vrml.vim File 12.49 KB 0644
vroom.vim File 3.41 KB 0644
vsejcl.vim File 1004 B 0644
vue.vim File 433 B 0644
wat.vim File 4.75 KB 0644
wdiff.vim File 716 B 0644
wdl.vim File 1.61 KB 0644
web.vim File 1.09 KB 0644
webmacro.vim File 3.01 KB 0644
wget.vim File 4.13 KB 0644
wget2.vim File 4.34 KB 0644
whitespace.vim File 357 B 0644
winbatch.vim File 11.87 KB 0644
wml.vim File 5.6 KB 0644
wsh.vim File 1.21 KB 0644
wsml.vim File 5.27 KB 0644
wvdial.vim File 1.07 KB 0644
xbl.vim File 568 B 0644
xcompose.vim File 1.25 KB 0644
xdefaults.vim File 5.75 KB 0644
xf86conf.vim File 14.66 KB 0644
xhtml.vim File 186 B 0644
xinetd.vim File 13.88 KB 0644
xkb.vim File 3.24 KB 0644
xmath.vim File 10.58 KB 0644
xml.vim File 9.12 KB 0644
xmodmap.vim File 45.42 KB 0644
xpm.vim File 4.8 KB 0644
xpm2.vim File 4.59 KB 0644
xquery.vim File 7.02 KB 0644
xs.vim File 241.13 KB 0644
xsd.vim File 2.08 KB 0644
xslt.vim File 2.59 KB 0644
xxd.vim File 767 B 0644
yacc.vim File 5.52 KB 0644
yaml.vim File 12.57 KB 0644
z8a.vim File 2.83 KB 0644
zig.vim File 10.77 KB 0644
zimbu.vim File 6.36 KB 0644
zir.vim File 1.57 KB 0644
zserio.vim File 4.29 KB 0644
zsh.vim File 22.96 KB 0644
Filemanager