summaryrefslogtreecommitdiffstats
path: root/syntax/perl6.vim
diff options
context:
space:
mode:
Diffstat (limited to 'syntax/perl6.vim')
-rw-r--r--syntax/perl6.vim140
1 files changed, 71 insertions, 69 deletions
diff --git a/syntax/perl6.vim b/syntax/perl6.vim
index ed928852..1d6608d7 100644
--- a/syntax/perl6.vim
+++ b/syntax/perl6.vim
@@ -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