This commit is contained in:
Adam Stankiewicz
2015-05-11 15:05:13 +02:00
parent acd7ce5950
commit 271b63d717
33 changed files with 712 additions and 382 deletions

View File

@@ -186,7 +186,7 @@ syn match p6ReduceOp display "\%(^\|\s\|(\)\@1<=!*\%([RSXZ\[]\)*[&RSXZ]\?\[\+(\?
syn match p6SetOp display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"
" Reverse, cross, and zip metaoperators
exec "syn match p6RSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
exec "syn match p6RSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
syn match p6BlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="
@@ -202,7 +202,7 @@ syn match p6BinNumber display "[01][01_]*" contained
syn match p6HexNumber display "\x[[:xdigit:]_]*" contained
syn match p6DecNumber display "\d[[:digit:]_]*" contained
syn match p6Version display "\<v\d\+\%(\.[*[:digit:]]\+\)*+\?"
syn match p6Version display "\<v\d\+\%(\.\%(\*\|\d\+\)\)*+\?"
" Contextualizers
syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>"
@@ -350,7 +350,7 @@ syn region p6Adverb
" 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 "= "
" * It's preceded by "(\s*" or "=\s\+"
" * It's empty and terminated on the same line (e.g. <> and < >)
"
" It never matches when:
@@ -364,7 +364,7 @@ syn region p6StringAngle
\ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|[-=]\{1,2}\)\@!"
\ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
\ start="[<+~=!]\@1<!<\%(\s*$\)\@="
\ start="\%(=\s\+\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
\ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
\ start="<\%(\s*>\)\@="
\ skip="\\\@1<!\\>"
\ end=">"
@@ -392,7 +392,7 @@ syn region p6StringAngles
\ start="<<=\@!"
\ skip="\\\@1<!\\>"
\ end=">>"
\ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ
\ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6BracketComment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ
syn region p6InnerAnglesTwo
\ matchgroup=p6StringAngles
@@ -408,7 +408,7 @@ syn region p6StringFrench
\ start="«"
\ skip="\\\@1<!\\»"
\ end="»"
\ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ
\ contains=p6InnerFrench,@p6Interp_qq,p6Comment,p6BracketComment,p6EscHash,p6EscCloseFrench,p6Adverb,p6StringSQ,p6StringDQ
syn region p6InnerFrench
\ matchgroup=p6StringFrench
@@ -454,8 +454,8 @@ syn match p6QuoteQ_qww display "qww[A-Za-z(]\@!" nextgroup=p6PairsQ_qww skipwhi
syn match p6QuoteQ_qq display "qq[pwx]\?[A-Za-z(]\@!" nextgroup=p6PairsQ_qq skipwhite skipempty contained
syn match p6QuoteQ_qto display "qto[A-Za-z(]\@!" nextgroup=p6StringQ_qto skipwhite skipempty contained
syn match p6QuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=p6StringQ_qqto skipwhite skipempty contained
syn match p6QuoteQ_qto display "q\%(:\%(to\|heredoc\)[A-Za-z(]\@!\)\@=" nextgroup=p6PairsQ_qto skipwhite skipempty contained
syn match p6QuoteQ_qqto display "qq\%(:\%(to\|heredoc\)[A-Za-z(]\@!\)\@=" nextgroup=p6PairsQ_qqto skipwhite skipempty contained
syn match p6QuoteQ_qto display "q\_s*\%(:\%(to\|heredoc\)[A-Za-z(]\@!\)\@=" nextgroup=p6PairsQ_qto skipwhite skipempty contained
syn match p6QuoteQ_qqto display "qq\_s*\%(:\%(to\|heredoc\)[A-Za-z(]\@!\)\@=" nextgroup=p6PairsQ_qqto skipwhite skipempty contained
syn match p6PairsQ "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6StringQ
syn match p6PairsQ_q "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6StringQ_q
syn match p6PairsQ_qww "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6StringQ_qww
@@ -508,12 +508,6 @@ unlet s:plain_delims s:all_delims
syn match p6Operator display ":\@1<!::\@!!\?" nextgroup=p6Key,p6StringAngleFixed,p6StringAngles,p6StringFrench
syn match p6Key display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)" contained nextgroup=p6StringAngleFixed,p6StringAngles,p6StringFrench
" => and p5=> autoquoting
syn match p6StringP5Auto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+p5=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
" Regexes and grammars
syn match p6DeclareRegex display "\%(regex\|rule\|token\)" nextgroup=p6RegexName skipwhite skipempty
@@ -551,6 +545,7 @@ syn cluster p6Regexen
\ add=p6RxStringSQ
\ add=p6RxStringDQ
\ add=p6Comment
\ add=p6BracketComment
\ add=p6MatchVarSigil
syn match p6RxMeta display contained ".\%([A-Za-z_\xC0-\xFF0-9]\|\s\)\@1<!"
@@ -1007,100 +1002,106 @@ syn match p6Comment display "#`\@!.*" contains=p6Attention
" Multiline comments. Arbitrary numbers of opening brackets are allowed,
" but we only define regions for 1 to 3
syn region p6Comment
\ start="#`("
syn region p6BracketComment
\ start="#[`|=]("
\ skip="([^)]*)"
\ end=")"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ start="#`\["
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ start="#[`|=]\["
\ skip="\[[^\]]*]"
\ end="]"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ start="#`{"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ start="#[`|=]{"
\ skip="{[^}]*}"
\ end="}"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ start="#`<"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ start="#[`|=]<"
\ skip="<[^>]*>"
\ end=">"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ start="#`«"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ start="#[`|=]«"
\ skip="«[^»]*»"
\ end="»"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
" Comments with double and triple delimiters
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`(("
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=](("
\ skip="((\%([^)\|))\@!]\)*))"
\ end="))"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`((("
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]((("
\ skip="(((\%([^)]\|)\%())\)\@!\)*)))"
\ end=")))"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`\[\["
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]\[\["
\ skip="\[\[\%([^\]]\|]]\@!\)*]]"
\ end="]]"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`\[\[\["
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]\[\[\["
\ skip="\[\[\[\%([^\]]\|]\%(]]\)\@!\)*]]]"
\ end="]]]"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`{{"
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]{{"
\ skip="{{\%([^}]\|}}\@!\)*}}"
\ end="}}"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`{{{"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]{{{"
\ skip="{{{\%([^}]\|}\%(}}\)\@!\)*}}}"
\ end="}}}"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`<<"
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]<<"
\ skip="<<\%([^>]\|>>\@!\)*>>"
\ end=">>"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`<<<"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]<<<"
\ skip="<<<\%([^>]\|>\%(>>\)\@!\)*>>>"
\ end=">>>"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`««"
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]««"
\ skip="««\%([^»]\|»»\@!\)*»»"
\ end="»»"
\ contains=p6Attention,p6Comment
syn region p6Comment
\ matchgroup=p6Comment
\ start="#`«««"
\ contains=p6Attention,p6BracketComment
syn region p6BracketComment
\ matchgroup=p6BracketComment
\ start="#[`|=]«««"
\ skip="«««\%([^»]\|»\%(»»\)\@!\)*»»»"
\ end="»»»"
\ contains=p6Attention,p6Comment
\ contains=p6Attention,p6BracketComment
syn match p6Shebang display "\%^#!.*"
" => and p5=> autoquoting
syn match p6StringP5Auto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+p5=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
" Pod
" Abbreviated blocks (implicit code forbidden)
@@ -1884,6 +1885,7 @@ if version >= 508 || !exists("did_perl6_syntax_inits")
HiLink p6StringSpecial2 Special
HiLink p6Version Special
HiLink p6Comment Comment
HiLink p6BracketComment Comment
HiLink p6Include Include
HiLink p6Shebang PreProc
HiLink p6ClosureTrait PreProc