/usr/share/vim/vim74/syntax
NameSizeModeActions
2html.vim690560644editdlrm
a2ps.vim24140644editdlrm
a65.vim67790644editdlrm
aap.vim56970644editdlrm
abap.vim94620644editdlrm
abaqus.vim14810644editdlrm
abc.vim22250644editdlrm
abel.vim54440644editdlrm
acedb.vim52370644editdlrm
ada.vim130500644editdlrm
aflex.vim48230644editdlrm
ahdl.vim31580644editdlrm
alsaconf.vim15340644editdlrm
amiga.vim33540644editdlrm
aml.vim245020644editdlrm
ampl.vim42930644editdlrm
ant.vim58160644editdlrm
antlr.vim21950644editdlrm
apache.vim151380644editdlrm
apachestyle.vim17380644editdlrm
aptconf.vim195870644editdlrm
arch.vim11370644editdlrm
art.vim12970644editdlrm
asciidoc.vim108580644editdlrm
asm.vim44260644editdlrm
asm68k.vim146420644editdlrm
asmh8300.vim24770644editdlrm
asn.vim29370644editdlrm
aspperl.vim10160644editdlrm
aspvbs.vim94770644editdlrm
asterisk.vim55850644editdlrm
asteriskvm.vim26200644editdlrm
atlas.vim29680644editdlrm
autohotkey.vim99880644editdlrm
autoit.vim480140644editdlrm
automake.vim43540644editdlrm
ave.vim22670644editdlrm
awk.vim77210644editdlrm
ayacc.vim29540644editdlrm
b.vim52150644editdlrm
baan.vim739980644editdlrm
basic.vim85080644editdlrm
bc.vim21810644editdlrm
bdf.vim38290644editdlrm
bib.vim38510644editdlrm
bindzone.vim52100644editdlrm
blank.vim12050644editdlrm
bst.vim33850644editdlrm
btm.vim96310644editdlrm
bzr.vim19550644editdlrm
c.vim248310644editdlrm
cabal.vim46970644editdlrm
calendar.vim50300644editdlrm
catalog.vim9210644editdlrm
cdl.vim33450644editdlrm
cdrdaoconf.vim36350644editdlrm
cdrtoc.vim227440644editdlrm
cf.vim295950644editdlrm
cfg.vim17530644editdlrm
ch.vim12900644editdlrm
chaiscript.vim28870644editdlrm
change.vim13140644editdlrm
changelog.vim28600644editdlrm
chaskell.vim3960644editdlrm
cheetah.vim21350644editdlrm
chill.vim82770644editdlrm
chordpro.vim25210644editdlrm
cl.vim42810644editdlrm
clean.vim33620644editdlrm
clipper.vim59610644editdlrm
clojure.vim233710644editdlrm
cmake.vim44570644editdlrm
cmusrc.vim129130644editdlrm
cobol.vim103100644editdlrm
coco.vim12900644editdlrm
colortest.vim32010644editdlrm
conaryrecipe.vim80360644editdlrm
conf.vim7990644editdlrm
config.vim18470644editdlrm
context.vim41830644editdlrm
cpp.vim26420644editdlrm
crm.vim11850644editdlrm
crontab.vim25660644editdlrm
cs.vim60900644editdlrm
csc.vim87890644editdlrm
csdl.vim237550644editdlrm
csh.vim70010644editdlrm
csp.vim75010644editdlrm
css.vim236390644editdlrm
cterm.vim67400644editdlrm
ctrlh.vim6880644editdlrm
cucumber.vim318870644editdlrm
cuda.vim28390644editdlrm
cupl.vim42300644editdlrm
cuplsim.vim23790644editdlrm
cvs.vim13040644editdlrm
cvsrc.vim12420644editdlrm
cweb.vim33680644editdlrm
cynlib.vim30140644editdlrm
cynpp.vim17840644editdlrm
d.vim280180644editdlrm
datascript.vim34740644editdlrm
dcd.vim21980644editdlrm
dcl.vim66250644editdlrm
debchangelog.vim25300644editdlrm
debcontrol.vim72420644editdlrm
debsources.vim13480644editdlrm
def.vim14950644editdlrm
denyhosts.vim73530644editdlrm
desc.vim34940644editdlrm
desktop.vim44460644editdlrm
dictconf.vim31060644editdlrm
dictdconf.vim64530644editdlrm
diff.vim168910644editdlrm
dircolors.vim420540644editdlrm
dirpager.vim17870644editdlrm
diva.vim50710644editdlrm
django.vim43050644editdlrm
dns.vim1320644editdlrm
dnsmasq.vim91880644editdlrm
docbk.vim107710644editdlrm
docbksgml.vim1930644editdlrm
docbkxml.vim1910644editdlrm
dosbatch.vim66170644editdlrm
dosini.vim15480644editdlrm
dot.vim33950644editdlrm
doxygen.vim360460644editdlrm
dracula.vim30710644editdlrm
dsl.vim13120644editdlrm
dtd.vim52330644editdlrm
dtml.vim170730644editdlrm
dtrace.vim64880644editdlrm
dts.vim11240644editdlrm
dylan.vim38060644editdlrm
dylanintr.vim14870644editdlrm
dylanlid.vim10860644editdlrm
ecd.vim15590644editdlrm
edif.vim16480644editdlrm
eiffel.vim72340644editdlrm
elf.vim27160644editdlrm
elinks.vim104820644editdlrm
elmfilt.vim32640644editdlrm
erlang.vim108870644editdlrm
eruby.vim28930644editdlrm
esmtprc.vim10330644editdlrm
esqlc.vim25580644editdlrm
esterel.vim33520644editdlrm
eterm.vim191600644editdlrm
eviews.vim54150644editdlrm
exim.vim182700644editdlrm
expect.vim41140644editdlrm
exports.vim21340644editdlrm
falcon.vim119570644editdlrm
fan.vim54450644editdlrm
fasm.vim87480644editdlrm
fdcc.vim59610644editdlrm
fetchmail.vim32960644editdlrm
fgl.vim76630644editdlrm
flexwiki.vim54680644editdlrm
focexec.vim39100644editdlrm
form.vim68130644editdlrm
forth.vim135180644editdlrm
fortran.vim265450644editdlrm
foxpro.vim331500644editdlrm
framescript.vim116670644editdlrm
freebasic.vim105120644editdlrm
fstab.vim155520644editdlrm
fvwm.vim250260644editdlrm
fvwm2m4.vim8280644editdlrm
gdb.vim47460644editdlrm
gdmo.vim36780644editdlrm
gedcom.vim26730644editdlrm
git.vim41560644editdlrm
gitcommit.vim48360644editdlrm
gitconfig.vim16160644editdlrm
gitolite.vim35860644editdlrm
gitrebase.vim17270644editdlrm
gitsendemail.vim4370644editdlrm
gkrellmrc.vim43420644editdlrm
gnash.vim35590644editdlrm
gnuplot.vim96360644editdlrm
gp.vim31380644editdlrm
gpg.vim55790644editdlrm
gprof.vim21170644editdlrm
grads.vim21080644editdlrm
gretl.vim41440644editdlrm
groff.vim2920644editdlrm
groovy.vim228800644editdlrm
group.vim17070644editdlrm
grub.vim38700644editdlrm
gsp.vim22600644editdlrm
gtkrc.vim94760644editdlrm
haml.vim70240644editdlrm
hamster.vim142330644editdlrm
haskell.vim87330644editdlrm
haste.vim50890644editdlrm
hastepreproc.vim16330644editdlrm
hb.vim35490644editdlrm
help.vim79480644editdlrm
hercules.vim61500644editdlrm
hex.vim16920644editdlrm
hgcommit.vim11140644editdlrm
hitest.vim36850644editdlrm
hog.vim181610644editdlrm
hostconf.vim38580644editdlrm
hostsaccess.vim6070644editdlrm
html.vim158390644editdlrm
htmlcheetah.vim6720644editdlrm
htmldjango.vim11820644editdlrm
htmlm4.vim8740644editdlrm
htmlos.vim87430644editdlrm
ia64.vim109380644editdlrm
ibasic.vim70360644editdlrm
icemenu.vim8380644editdlrm
icon.vim72940644editdlrm
idl.vim195860644editdlrm
idlang.vim138260644editdlrm
indent.vim71510644editdlrm
inform.vim197660644editdlrm
initex.vim192110644editdlrm
initng.vim33980644editdlrm
inittab.vim28290644editdlrm
ipfilter.vim17170644editdlrm
ishd.vim274230644editdlrm
iss.vim53610644editdlrm
ist.vim24460644editdlrm
jal.vim92020644editdlrm
jam.vim271130644editdlrm
jargon.vim10060644editdlrm
java.vim175200644editdlrm
javacc.vim27110644editdlrm
javascript.vim54700644editdlrm
jess.vim66820644editdlrm
jgraph.vim16160644editdlrm
jovial.vim41070644editdlrm
jproperties.vim58920644editdlrm
jsp.vim31220644editdlrm
kconfig.vim361370644editdlrm
kix.vim65790644editdlrm
kscript.vim23670644editdlrm
kwt.vim29180644editdlrm
lace.vim44180644editdlrm
latte.vim39890644editdlrm
ld.vim28900644editdlrm
ldapconf.vim132900644editdlrm
ldif.vim12160644editdlrm
lex.vim67700644editdlrm
lftp.vim74590644editdlrm
lhaskell.vim49970644editdlrm
libao.vim6240644editdlrm
lifelines.vim69110644editdlrm
lilo.vim106720644editdlrm
limits.vim13050644editdlrm
liquid.vim61840644editdlrm
lisp.vim364160644editdlrm
lite.vim51970644editdlrm
litestep.vim66640644editdlrm
loginaccess.vim41850644editdlrm
logindefs.vim75250644editdlrm
logtalk.vim162910644editdlrm
lotos.vim27600644editdlrm
lout.vim47970644editdlrm
lpc.vim233870644editdlrm
lprolog.vim43520644editdlrm
lscript.vim124860644editdlrm
lsl.vim158000644editdlrm
lss.vim52620644editdlrm
lua.vim144050644editdlrm
lynx.vim65790644editdlrm
m4.vim30630644editdlrm
mail.vim60610644editdlrm
mailaliases.vim27550644editdlrm
mailcap.vim11350644editdlrm
make.vim64930644editdlrm
mallard.vim17260644editdlrm
man.vim20390644editdlrm
manconf.vim43320644editdlrm
manual.vim8030644editdlrm
maple.vim286250644editdlrm
markdown.vim72800644editdlrm
masm.vim160750644editdlrm
mason.vim34700644editdlrm
master.vim14350644editdlrm
matlab.vim43290644editdlrm
maxima.vim191630644editdlrm
mel.vim37410644editdlrm
messages.vim25490644editdlrm
mf.vim82440644editdlrm
mgl.vim39580644editdlrm
mgp.vim23990644editdlrm
mib.vim26960644editdlrm
mma.vim119670644editdlrm
mmix.vim52470644editdlrm
mmp.vim16660644editdlrm
modconf.vim14070644editdlrm
model.vim14690644editdlrm
modsim3.vim39560644editdlrm
modula2.vim36200644editdlrm
modula3.vim24260644editdlrm
monk.vim106930644editdlrm
moo.vim92510644editdlrm
mp.vim57570644editdlrm
mplayerconf.vim43910644editdlrm
mrxvtrc.vim96030644editdlrm
msidl.vim38300644editdlrm
msmessages.vim64130644editdlrm
msql.vim28000644editdlrm
mupad.vim157750644editdlrm
mush.vim134660644editdlrm
muttrc.vim810750644editdlrm
mysql.vim178740644editdlrm
named.vim104170644editdlrm
nanorc.vim106080644editdlrm
nasm.vim255820644editdlrm
nastran.vim87330644editdlrm
natural.vim72830644editdlrm
ncf.vim136660644editdlrm
netrc.vim19220644editdlrm
netrw.vim58450644editdlrm
ninja.vim25550644editdlrm
nosyntax.vim7550644editdlrm
nqc.vim143840644editdlrm
nroff.vim80400644editdlrm
nsis.vim98760644editdlrm
obj.vim31610644editdlrm
objc.vim304350644editdlrm
objcpp.vim7860644editdlrm
ocaml.vim138260644editdlrm
occam.vim44720644editdlrm
omnimark.vim68540644editdlrm
openroad.vim143440644editdlrm
opl.vim45240644editdlrm
ora.vim274630644editdlrm
pamconf.vim55340644editdlrm
papp.vim41260644editdlrm
pascal.vim153250644editdlrm
passwd.vim24310644editdlrm
pcap.vim19690644editdlrm
pccts.vim45450644editdlrm
pdf.vim35390644editdlrm
perl.vim365700644editdlrm
perl6.vim744150644editdlrm
pf.vim27730644editdlrm
pfmain.vim828330644editdlrm
php.vim805090644editdlrm
phtml.vim1510644editdlrm
pic.vim37140644editdlrm
pike.vim67030644editdlrm
pilrc.vim55050644editdlrm
pine.vim158890644editdlrm
pinfo.vim52840644editdlrm
plaintex.vim102890644editdlrm
pli.vim135150644editdlrm
plm.vim57030644editdlrm
plp.vim14660644editdlrm
plsql.vim132300644editdlrm
po.vim63630644editdlrm
pod.vim76740644editdlrm
postscr.vim465410644editdlrm
pov.vim93520644editdlrm
povini.vim37820644editdlrm
ppd.vim12590644editdlrm
ppwiz.vim31790644editdlrm
prescribe.vim27870644editdlrm
privoxy.vim35790644editdlrm
procmail.vim24090644editdlrm
progress.vim321340644editdlrm
prolog.vim45540644editdlrm
promela.vim18230644editdlrm
proto.vim29240644editdlrm
protocols.vim14170644editdlrm
psf.vim46250644editdlrm
ptcap.vim44590644editdlrm
purifylog.vim36280644editdlrm
pyrex.vim20450644editdlrm
python.vim118860644editdlrm
qf.vim5960644editdlrm
quake.vim85380644editdlrm
r.vim76280644editdlrm
racc.vim56070644editdlrm
radiance.vim75930644editdlrm
ratpoison.vim176010644editdlrm
rc.vim104350644editdlrm
rcs.vim25250644editdlrm
rcslog.vim9700644editdlrm
readline.vim166300644editdlrm
README.txt14030644editdlrm
rebol.vim75490644editdlrm
redif.vim879700644editdlrm
registry.vim35650644editdlrm
remind.vim27770644editdlrm
resolv.vim31710644editdlrm
reva.vim77640644editdlrm
rexx.vim155980644editdlrm
rhelp.vim100770644editdlrm
rib.vim24380644editdlrm
rnc.vim22510644editdlrm
rng.vim8170644editdlrm
rnoweb.vim20580644editdlrm
robots.vim18400644editdlrm
rpcgen.vim21590644editdlrm
rpl.vim259850644editdlrm
rst.vim82550644editdlrm
rtf.vim27400644editdlrm
ruby.vim284220644editdlrm
samba.vim65240644editdlrm
sas.vim120190644editdlrm
sass.vim57350644editdlrm
sather.vim38280644editdlrm
scheme.vim176670644editdlrm
scilab.vim35220644editdlrm
screen.vim85210644editdlrm
scss.vim4090644editdlrm
sd.vim25520644editdlrm
sdc.vim13910644editdlrm
sdl.vim70300644editdlrm
sed.vim53520644editdlrm
sendpr.vim10000644editdlrm
sensors.vim15010644editdlrm
services.vim18110644editdlrm
setserial.vim52170644editdlrm
sgml.vim89610644editdlrm
sgmldecl.vim24730644editdlrm
sgmllnx.vim22330644editdlrm
sh.vim390610644editdlrm
sicad.vim189410644editdlrm
sieve.vim16590644editdlrm
simula.vim36810644editdlrm
sinda.vim41010644editdlrm
sindacmp.vim16820644editdlrm
sindaout.vim24200644editdlrm
sisu.vim203880644editdlrm
skill.vim261160644editdlrm
sl.vim44200644editdlrm
slang.vim36380644editdlrm
slice.vim33000644editdlrm
slpconf.vim117790644editdlrm
slpreg.vim53340644editdlrm
slpspi.vim11690644editdlrm
slrnrc.vim131580644editdlrm
slrnsc.vim35310644editdlrm
sm.vim32850644editdlrm
smarty.vim30910644editdlrm
smcl.vim120330644editdlrm
smil.vim59800644editdlrm
smith.vim11950644editdlrm
sml.vim96390644editdlrm
snnsnet.vim26930644editdlrm
snnspat.vim24300644editdlrm
snnsres.vim21440644editdlrm
snobol4.vim56090644editdlrm
spec.vim126850644editdlrm
specman.vim76480644editdlrm
spice.vim26360644editdlrm
splint.vim161350644editdlrm
spup.vim142860644editdlrm
spyce.vim46100644editdlrm
sql.vim12170644editdlrm
sqlanywhere.vim420260644editdlrm
sqlforms.vim71360644editdlrm
sqlhana.vim111240644editdlrm
sqlinformix.vim62840644editdlrm
sqlj.vim32160644editdlrm
sqloracle.vim29700644editdlrm
sqr.vim141930644editdlrm
squid.vim73180644editdlrm
sshconfig.vim89020644editdlrm
sshdconfig.vim86550644editdlrm
st.vim31330644editdlrm
stata.vim270460644editdlrm
stp.vim57890644editdlrm
strace.vim21990644editdlrm
sudoers.vim220410644editdlrm
svg.vim4360644editdlrm
svn.vim16780644editdlrm
syncolor.vim40930644editdlrm
synload.vim19010644editdlrm
syntax.vim12280644editdlrm
sysctl.vim11410644editdlrm
tads.vim71800644editdlrm
tags.vim15750644editdlrm
tak.vim33480644editdlrm
takcmp.vim19910644editdlrm
takout.vim24510644editdlrm
tar.vim3730644editdlrm
taskdata.vim13030644editdlrm
taskedit.vim12260644editdlrm
tasm.vim60510644editdlrm
tcl.vim174140644editdlrm
tcsh.vim132690644editdlrm
terminfo.vim47910644editdlrm
tex.vim627620644editdlrm
texinfo.vim258560644editdlrm
texmf.vim24690644editdlrm
tf.vim72370644editdlrm
tidy.vim65300644editdlrm
tilde.vim15380644editdlrm
tli.vim20500644editdlrm
tpp.vim39250644editdlrm
trasys.vim54640644editdlrm
treetop.vim36560644editdlrm
trustees.vim15370644editdlrm
tsalt.vim86370644editdlrm
tsscl.vim54920644editdlrm
tssgm.vim31650644editdlrm
tssop.vim21780644editdlrm
tt2.vim79200644editdlrm
tt2html.vim5160644editdlrm
tt2js.vim5220644editdlrm
uc.vim69250644editdlrm
udevconf.vim12150644editdlrm
udevperm.vim23970644editdlrm
udevrules.vim69480644editdlrm
uil.vim29990644editdlrm
updatedb.vim12080644editdlrm
upstart.vim31410644editdlrm
upstreamdat.vim138280644editdlrm
upstreaminstalllog.vim9710644editdlrm
upstreamlog.vim25320644editdlrm
usserverlog.vim30300644editdlrm
usw2kagtlog.vim21840644editdlrm
valgrind.vim30590644editdlrm
vb.vim206220644editdlrm
vera.vim198020644editdlrm
verilog.vim55290644editdlrm
verilogams.vim65560644editdlrm
vgrindefs.vim12140644editdlrm
vhdl.vim67520644editdlrm
vim.vim640520644editdlrm
viminfo.vim11240644editdlrm
virata.vim118740644editdlrm
vmasm.vim88910644editdlrm
voscm.vim69750644editdlrm
vrml.vim132170644editdlrm
vsejcl.vim13930644editdlrm
wdiff.vim11510644editdlrm
web.vim12710644editdlrm
webmacro.vim34710644editdlrm
wget.vim39610644editdlrm
whitespace.vim3570644editdlrm
winbatch.vim125480644editdlrm
wml.vim62660644editdlrm
wsh.vim12420644editdlrm
wsml.vim57250644editdlrm
wvdial.vim10930644editdlrm
xbl.vim5680644editdlrm
xdefaults.vim62610644editdlrm
xf86conf.vim149250644editdlrm
xhtml.vim1860644editdlrm
xinetd.vim141960644editdlrm
xkb.vim34630644editdlrm
xmath.vim111070644editdlrm
xml.vim86090644editdlrm
xmodmap.vim464990644editdlrm
xpm.vim46550644editdlrm
xpm2.vim49870644editdlrm
xquery.vim71910644editdlrm
xs.vim2197470644editdlrm
xsd.vim21250644editdlrm
xslt.vim21660644editdlrm
xxd.vim11910644editdlrm
yacc.vim55390644editdlrm
yaml.vim89680644editdlrm
z8a.vim32770644editdlrm
zimbu.vim48010644editdlrm
zsh.vim89230644editdlrm
Edit: /usr/share/vim/vim74/syntax/perl6.vim (74415B)
" Vim syntax file " Language: Perl 6 " Maintainer: vim-perl " Homepage: http://github.com/vim-perl/vim-perl/tree/master " Bugs/requests: http://github.com/vim-perl/vim-perl/issues " Last Change: 2013-07-21 " Contributors: Luke Palmer " Moritz Lenz " Hinrik Örn Sigurðsson " " This is a big undertaking. Perl 6 is the sort of language that only Perl " can parse. But I'll do my best to get vim to. " " You can associate the extension ".pl" with the filetype "perl6" by setting " autocmd BufNewFile,BufRead *.pl setf perl6 " in your ~/.vimrc. But that will infringe on Perl 5, so you might want to " put a modeline near the beginning or end of your Perl 6 files instead: " # vim: filetype=perl6 " TODO: " * Deal with s:Perl5// " * m:s// is a match, not a substitution " * Make these highlight as strings, not operators: " <==> <=:=> <===> <=~> <« »> «>» «<» " * Allow more keywords to match as function calls(leave() is export(), etc) " * Optimization: use nextgroup instead of lookaround (:help syn-nextgroup) " * Fix s''' substitutions being matched as package names " * Match s/// and m/// better, so things like "$s/" won't match " * Add more support for folding (:help syn-fold) " * Add more syntax syncing hooks (:help syn-sync) " * Q//: " :to, :heredoc " interpolate \q:s{$scalar} (though the spec isn't very clear on it) " " Impossible TODO?: " * Unspace " * Unicode bracketing characters for quoting (there are so many) " * Various tricks depending on context. I.e. we can't know when Perl " expects «*» to be a string or a hyperoperator. The latter is presumably " more common, so that's what we assume. " * Selective highlighting of Pod formatting codes with the :allow option " * Arbitrary number, order, and negation of adverbs to Q//, q//, qq//. " Currently only the first adverb is considered significant. Anything " more would require an exponential amount of regexes, making this " already slow syntax file even slower. " " If you want to have Pir code inside Q:PIR// strings highlighted, do: " let perl6_embedded_pir=1 " " The above requires pir.vim, which you can find in Parrot's repository: " https://svn.parrot.org/parrot/trunk/editor/ " " Some less than crucial things have been made optional to speed things up. " Look at the comments near the if/else branches in this file to see exactly " which features are affected. "perl6_extended_all" enables everything. " " The defaults are: " " unlet perl6_extended_comments " unlet perl6_extended_q " unlet perl6_extended_all " 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 " identifiers syn match p6Normal display "\K\%(\k\|[-']\K\@=\)*" " This is used in the for loops below " Don't use the "syn keyword" construct because that always has higher " priority than matches/regions, so the words can't be autoquoted with " the "=>" and "p5=>" operators. All the lookaround stuff is to make sure " we don't match them as part of some other identifier. let s:before_keyword = " display \"\\%(\\k\\|\\K\\@<=[-']\\)\\@.;\\]" syn match p6Operator display "\%(:\@\)" " "i" requires a digit to the left, and no keyword char to the right syn match p6Operator display "\d\@<=i\k\@!" " index overloading syn match p6Operator display "\%(&\.(\@=\|@\.\[\@=\|%\.{\@=\)" " all infix operators except nonassocative ones let s:infix_a = [ \ "div % mod +& +< +> \\~& ?& \\~< \\~> +| +\\^ \\~| \\~\\^ ?| ?\\^ xx x", \ "\\~ && & also <== ==> <<== ==>> == != < <= > >= \\~\\~ eq ne lt le gt", \ "ge =:= === eqv before after \\^\\^ min max \\^ff ff\\^ \\^ff\\^", \ "\\^fff fff\\^ \\^fff\\^ fff ff ::= := \\.= => , : p5=> Z minmax", \ "\\.\\.\\. and andthen or orelse xor \\^ += -= /= \\*= \\~= //= ||=", \ "+ - \\*\\* \\* // / \\~ || |", \ ] " nonassociative infix operators let s:infix_n = "but does <=> leg cmp \\.\\. \\.\\.\\^\\^ \\^\\.\\. \\^\\.\\.\\^" let s:infix_a_long = join(s:infix_a, " ") let s:infix_a_words = split(s:infix_a_long) let s:infix_a_pattern = join(s:infix_a_words, "\\|") let s:infix_n_words = split(s:infix_n) let s:infix_n_pattern = join(s:infix_n_words, "\\|") let s:both = [s:infix_a_pattern, s:infix_n_pattern] let s:infix = join(s:both, "\\|") let s:infix_assoc = "!\\?\\%(" . s:infix_a_pattern . "\\)" let s:infix = "!\\?\\%(" . s:infix . "\\)" unlet s:infix_a s:infix_a_long s:infix_a_words s:infix_a_pattern unlet s:infix_n s:infix_n_pattern s:both " [+] reduce exec "syn match p6ReduceOp display \"\\k\\@" " does is a type constraint sometimes syn match p6TypeConstraint display "does\%(\s*\%(\k\|[-']\K\@=\)\)\@=" " int is a type sometimes syn match p6Type display "\\%(\s*(\|\s\+\d\)\@!" " these Routine names are also Properties, if preceded by "is" syn match p6Property display "\%(is\s\+\)\@<=\%(signature\|context\|also\|shape\)" " The sigil in ::*Package syn match p6PackageTwigil display "\%(::\)\@<=\*" " $ syn region p6MatchVarSigil \ matchgroup=p6Variable \ start="\$\%(<<\@!\)\@=" \ end=">\@<=" \ contains=p6MatchVar syn region p6MatchVar \ matchgroup=p6Twigil \ start="<" \ end=">" \ contained " Contextualizers syn match p6Context display "\<\%(item\|list\|slice\|hash\)\>" syn match p6Context display "\%(\$\|@\|%\|&\|@@\)(\@=" " the "$" placeholder in "$var1, $, var2 = @list" syn match p6Placeholder display "\%(,\s*\)\@<=\$\%(\K\|\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ start="\ze\z(\$\%(\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpArray \ matchgroup=p6Context \ start="@\ze()\@!" \ start="@@\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpHash \ start="\ze\z(%\$*\%(\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpHash \ matchgroup=p6Context \ start="%\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpFunction \ start="\ze\z(&\%(\%(!\|/\|¢\)\|\%(\%(\%([.^*?=!~]\|:\@]*>\|«[^»]*»\|{[^}]*}\)\)*\)\.\?\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\)\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6InterpFunction \ matchgroup=p6Context \ start="&\ze()\@!" \ skip="([^)]*)" \ end=")\zs" \ contained \ contains=TOP syn region p6InterpClosure \ start="\\\@" contained syn match p6EscCloseFrench display "\\»" contained syn match p6EscBackTick display "\\`" contained syn match p6EscForwardSlash display "\\/" contained syn match p6EscVerticalBar display "\\|" contained syn match p6EscExclamation display "\\!" contained syn match p6EscComma display "\\," contained syn match p6EscDollar display "\\\$" contained syn match p6EscCloseCurly display "\\}" contained syn match p6EscCloseBracket display "\\\]" contained " misc escapes syn match p6EscOctOld display "\\\d\{1,3}" contained syn match p6EscNull display "\\0\d\@!" contained syn match p6EscCodePoint display "\%(\\c\)\@<=\%(\d\|\S\|\[\)\@=" contained nextgroup=p6CodePoint syn match p6EscHex display "\%(\\x\)\@<=\%(\x\|\[\)\@=" contained nextgroup=p6HexSequence syn match p6EscOct display "\%(\\o\)\@<=\%(\o\|\[\)\@=" contained nextgroup=p6OctSequence syn match p6EscQQ display "\\qq" contained nextgroup=p6QQSequence syn match p6EscOpenCurly display "\\{" contained syn match p6EscHash display "\\#" contained syn match p6EscBackSlash display "\\\\" contained syn region p6QQSequence \ matchgroup=p6Escape \ start="\[" \ skip="\[[^\]]*]" \ end="]" \ contained \ transparent \ contains=@p6Interp_qq syn match p6CodePoint display "\%(\d\+\|\S\)" contained syn region p6CodePoint \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6HexSequence display "\x\+" contained syn region p6HexSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained syn match p6OctSequence display "\o\+" contained syn region p6OctSequence \ matchgroup=p6Escape \ start="\[" \ end="]" \ contained " matches :key, :!key, :$var, :key, 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 p6Adverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)" \ start="\ze\z(:!\?[@$%]\$*\%(::\|\%(\$\@<=\d\+\|!\|/\|¢\)\|\%(\%([.^*?=!~]\|:\@ " FIXME: not sure how to distinguish this from the "less than" operator " in all cases. 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" " * 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 never matches when: " " * Preceded by [<+~=] (e.g. <>, =<$foo>) " * Followed by [-=] (e.g. <--, <=, <==) syn region p6StringAngle \ matchgroup=p6Quote \ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="\%(\s\|[<+~=]\)\@\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!" \ start="[<+~=]\@\|[-=]\{1,2}>\@!\)\@!" \ skip="\\\@" \ end=">" \ contains=p6InnerAnglesOne,p6EscBackSlash,p6EscCloseAngle syn region p6InnerAnglesOne \ matchgroup=p6StringAngle \ start="<" \ skip="\\\@" \ end=">" \ transparent \ contained \ contains=p6InnerAnglesOne " <> syn region p6StringAngles \ matchgroup=p6Quote \ start="<<=\@!" \ skip="\\\@" \ end=">>" \ contains=p6InnerAnglesTwo,@p6Interp_qq,p6Comment,p6EscHash,p6EscCloseAngle,p6Adverb,p6StringSQ,p6StringDQ syn region p6InnerAnglesTwo \ matchgroup=p6StringAngles \ start="<<" \ skip="\\\@" \ end=">>" \ transparent \ contained \ contains=p6InnerAnglesTwo " «words» syn region p6StringFrench \ matchgroup=p6Quote \ start="«" \ skip="\\\@" nextgroup=p6QPairs skipwhite skipempty syn match p6QPairs contained transparent skipwhite skipempty nextgroup=p6StringQ,p6StringQ_PIR "\%(\_s*:!\?\K\%(\k\|[-']\K\@=\)*\%(([^)]*)\|\[[^\]]*]\|<[^>]*>\|«[^»]*»\|{[^}]*}\)\?\)*" if exists("perl6_embedded_pir") syn include @p6PIR syntax/pir.vim endif " hardcoded set of delimiters let s:delims = [ \ ["\\\"", "\\\"", "p6EscDoubleQuote", "\\\\\\@", "p6EscCloseAngle", "\\%(\\\\\\@\\|<[^>]*>\\)"], \ ["«", "»", "p6EscCloseFrench", "\\%(\\\\\\@>", "p6EscCloseAngle", "\\%(\\\\\\@>\\|<<\\%([^>]\\|>>\\@!\\)*>>\\)"]) call add(s:delims, ["\\s\\@<=<<<", ">>>", "p6EscCloseAngle", "\\%(\\\\\\@>>\\|<<<\\%([^>]\\|>\\%(>>\\)\\@!\\)*>>>\\)"]) endif if !exists("perl6_extended_q") && !exists("perl6_extended_all") " simple version, no special highlighting within the string for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained" endfor if exists("perl6_embedded_pir") " highlight embedded PIR code for [start_delim, end_delim, end_group, skip] in s:delims exec "syn region p6StringQ_PIR matchgroup=p6Quote start=\"\\%(Q\\s*:PIR\\s*\\)\\@<=".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6PIR,".end_group." contained" endfor endif else let s:before = "syn region p6StringQ matchgroup=p6Quote start=\"\\%(" let s:after = "\\%(\\_s*:!\\?\\K\\%(\\k\\|[-']\\K\\@=\\)*\\%(([^)]*)\\|\\[[^\\]]*]\\|<[^>]*>\\|«[^»]*»\\|{[^}]*}\\)\\?\\)*\\_s*\\)\\@<=" let s:adverbs = [ \ ["s", "scalar"], \ ["a", "array"], \ ["h", "hash"], \ ["f", "function"], \ ["c", "closure"], \ ["b", "backslash"], \ ["w", "words"], \ ["ww", "quotewords"], \ ["x", "exec"], \ ] " these can't be conjoined with q and qq (e.g. as qqq and qqqq) let s:q_adverbs = [ \ ["q", "single"], \ ["qq", "double"], \ ] for [start_delim, end_delim, end_group, skip] in s:delims " Q, q, and qq with any number of (ignored) adverbs exec s:before ."Q". s:after .start_delim."\" end=\"". end_delim ."\""." contained" exec s:before ."q". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q"." contained" exec s:before ."qq". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq"." contained" for [short, long] in s:adverbs " Qs, qs, qqs, Qa, qa, qqa, etc, with ignored adverbs exec s:before ."Q".short. s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" exec s:before ."q".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq".short. s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" " Q, q, and qq, with one significant adverb exec s:before ."Q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long." contained" for [q_short, q_long] in s:q_adverbs exec s:before ."Q\\s*:\\%(".q_short."\\|".q_long."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".q_long." contained" endfor exec s:before ."q\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long." contained" exec s:before ."qq\\s*:\\%(".short."\\|".long."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long." contained" for [short2, long2] in s:adverbs " Qs, qs, qqs, Qa, qa, qqa, etc, with one significant adverb exec s:before ."Q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".long2." contained" for [q_short2, q_long2] in s:q_adverbs exec s:before ."Q".short."\\s*:\\%(".q_short2."\\|".q_long2."\\)". s:after .start_delim ."\" end=\"". end_delim ."\" contains=@p6Interp_".long.",@p6Interp_".q_long2." contained" endfor exec s:before ."q".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_q,@p6Interp_".long.",@p6Interp_".long2." contained" exec s:before ."qq".short."\\s*:\\%(".short2."\\|".long2."\\)". s:after .start_delim ."\" skip=\"". skip ."\" end=\"". end_delim ."\" contains=". end_group .",@p6Interp_qq,@p6Interp_".long.",@p6Interp_".long2." contained" endfor endfor endfor unlet s:before s:after s:adverbs s:q_adverbs endif unlet s:delims " Match these so something else above can't. E.g. the "q" in "role q { }" " should not be considered a string syn match p6Normal display "\%(\<\%(role\|grammar\|slang\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" " :key syn match p6Operator display ":\@ and p5=> autoquoting syn match p6StringP5Auto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+p5=>" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\%(p5\)\@" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*\ze\s\+=>" syn match p6StringAuto display "\K\%(\k\|[-']\K\@=\)*p5\ze=>" " Hyperoperators. Needs to come after the quoting operators (<>, «», etc) exec "syn match p6HyperOp display \"»" .s:infix."»\\?\"" exec "syn match p6HyperOp display \"«\\?".s:infix."«\"" exec "syn match p6HyperOp display \"»" .s:infix."«\"" exec "syn match p6HyperOp display \"«" .s:infix. "»\"" exec "syn match p6HyperOp display \">>" .s:infix."\\%(>>\\)\\?\"" exec "syn match p6HyperOp display \"\\%(<<\\)\\?".s:infix."<<\"" exec "syn match p6HyperOp display \">>" .s:infix."<<\"" exec "syn match p6HyperOp display \"<<" .s:infix.">>\"" unlet s:infix " Regexes and grammars syn match p6RegexName display "\%(\<\%(regex\|rule\|token\)\s\+\)\@<=\K\%(\k\|[-']\K\@=\)*" nextgroup=p6RegexBlockCrap skipwhite skipempty syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained syn region p6RegexBlock \ matchgroup=p6Normal \ start="{" \ end="}" \ contained \ contains=@p6Regexen,@p6Variables " Perl 6 regex bits syn cluster p6Regexen \ add=p6RxMeta \ add=p6RxEscape \ add=p6EscHex \ add=p6EscOct \ add=p6EscNull \ add=p6RxAnchor \ add=p6RxCapture \ add=p6RxGroup \ add=p6RxAlternation \ add=p6RxAdverb \ add=p6RxAdverbArg \ add=p6RxStorage \ add=p6RxAssertion \ add=p6RxQuoteWords \ add=p6RxClosure \ add=p6RxStringSQ \ add=p6RxStringDQ \ add=p6Comment syn match p6RxMeta display contained ".\%(\k\|\s\)\@" \ contained \ contains=@p6Regexen,@p6Variables,p6RxCharClass,p6RxAssertCall syn region p6RxAssertCall \ matchgroup=p6Normal \ start="\%(::\|\%(\K\%(\k\|[-']\K\@=\)*\)\)\@<=(\@=" \ end=")\@<=" \ contained \ contains=TOP syn region p6RxCharClass \ matchgroup=p6StringSpecial2 \ start="\%(<[-!+?]\?\)\@<=\[" \ skip="\\]" \ end="]" \ contained \ contains=p6RxRange,p6RxEscape,p6EscHex,p6EscOct,p6EscNull syn region p6RxQuoteWords \ matchgroup=p6StringSpecial2 \ start="< " \ end=">" \ contained syn region p6RxAdverb \ start="\ze\z(:!\?\K\%(\k\|[-']\K\@=\)*\)" \ end="\z1\zs" \ contained \ contains=TOP \ keepend syn region p6RxAdverbArg \ start="\%(:!\?\K\%(\k\|[-']\K\@=\)*\)\@<=(" \ skip="([^)]*)" \ end=")" \ contained \ contains=TOP syn region p6RxStorage \ matchgroup=p6Operator \ start="\%(^\s*\)\@<=:\%(my\>\|temp\>\)\@=" \ end="$" \ contains=TOP \ contained " Perl 5 regex bits syn cluster p6RegexP5Base \ add=p6RxP5Escape \ add=p6RxP5Oct \ add=p6RxP5Hex \ add=p6RxP5EscMeta \ add=p6RxP5CodePoint \ add=p6RxP5Prop " normal regex stuff syn cluster p6RegexP5 \ add=@p6RegexP5Base \ add=p6RxP5Quantifier \ add=p6RxP5Meta \ add=p6RxP5QuoteMeta \ add=p6RxP5ParenMod \ add=p6RxP5Verb \ add=p6RxP5Count \ add=p6RxP5Named \ add=p6RxP5ReadRef \ add=p6RxP5WriteRef \ add=p6RxP5CharClass \ add=p6RxP5Anchor " inside character classes syn cluster p6RegexP5Class \ add=@p6RegexP5Base \ add=p6RxP5Posix \ add=p6RxP5Range syn match p6RxP5Escape display contained "\\\S" syn match p6RxP5CodePoint display contained "\\c\S\@=" nextgroup=p6RxP5CPId syn match p6RxP5CPId display contained "\S" syn match p6RxP5Oct display contained "\\\%(\o\{1,3}\)\@=" nextgroup=p6RxP5OctSeq syn match p6RxP5OctSeq display contained "\o\{1,3}" syn match p6RxP5Anchor display contained "[\^$]" syn match p6RxP5Hex display contained "\\x\%({\x\+}\|\x\{1,2}\)\@=" nextgroup=p6RxP5HexSeq syn match p6RxP5HexSeq display contained "\x\{1,2}" syn region p6RxP5HexSeq \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn region p6RxP5Named \ matchgroup=p6RxP5Escape \ start="\%(\\N\)\@<={" \ end="}" \ contained syn match p6RxP5Quantifier display contained "\%([+*]\|(\@" \ contained syn match p6RxP5WriteRef display contained "\\g\%(\d\|{\)\@=" nextgroup=p6RxP5WriteRefId syn match p6RxP5WriteRefId display contained "\d\+" syn region p6RxP5WriteRefId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Prop display contained "\\[pP]\%(\a\|{\)\@=" nextgroup=p6RxP5PropId syn match p6RxP5PropId display contained "\a" syn region p6RxP5PropId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Meta display contained "[(|).]" syn match p6RxP5ParenMod display contained "(\@<=?\@=" nextgroup=p6RxP5Mod,p6RxP5ModName,p6RxP5Code syn match p6RxP5Mod display contained "?\%(<\?=\|<\?!\|[#:|]\)" syn match p6RxP5Mod display contained "?-\?[impsx]\+" syn match p6RxP5Mod display contained "?\%([-+]\?\d\+\|R\)" syn match p6RxP5Mod display contained "?(DEFINE)" syn match p6RxP5Mod display contained "?\%(&\|P[>=]\)" nextgroup=p6RxP5ModDef syn match p6RxP5ModDef display contained "\h\w*" syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?'" \ end="'" \ contained syn region p6RxP5ModName \ matchgroup=p6StringSpecial \ start="?P\?<" \ end=">" \ contained syn region p6RxP5Code \ matchgroup=p6StringSpecial \ start="??\?{" \ end="})\@=" \ contained \ contains=TOP syn match p6RxP5EscMeta display contained "\\[?*.{}()[\]|\^$]" syn match p6RxP5Count display contained "\%({\d\+\%(,\%(\d\+\)\?\)\?}\)\@=" nextgroup=p6RxP5CountId syn region p6RxP5CountId \ matchgroup=p6RxP5Escape \ start="{" \ end="}" \ contained syn match p6RxP5Verb display contained "(\@<=\*\%(\%(PRUNE\|SKIP\|THEN\)\%(:[^)]*\)\?\|\%(MARK\|\):[^)]*\|COMMIT\|F\%(AIL\)\?\|ACCEPT\)" syn region p6RxP5QuoteMeta \ matchgroup=p6RxP5Escape \ start="\\Q" \ end="\\E" \ contained \ contains=@p6Variables,p6EscBackSlash syn region p6RxP5CharClass \ matchgroup=p6StringSpecial \ start="\[\^\?" \ skip="\\]" \ end="]" \ contained \ contains=@p6RegexP5Class syn region p6RxP5Posix \ matchgroup=p6RxP5Escape \ start="\[:" \ end=":]" \ contained syn match p6RxP5Range display contained "-" " 'string' inside a regex syn region p6RxStringSQ \ matchgroup=p6Quote \ start="'" \ skip="\\\@, mm, rx syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!>\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables " m«foo», mm«foo», rx«foo» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6Regexen,@p6Variables " s«foo» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@ syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@\@!" \ skip="\\>" \ end=">" \ contains=@p6RegexP5,p6Variables " m:P5«» syn region p6Match \ matchgroup=p6Quote \ start="\%(\%(::\|[$@%&][.!^:*?]\?\|\.\)\@]*>" \ end=">" \ matchgroup=p6Error \ start="^#<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>>\@!\)*>>" \ end=">>" \ matchgroup=p6Error \ start="^#<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@]\|>\%(>>\)\@!\)*>>>" \ end=">>>" \ matchgroup=p6Error \ start="^#<<<" \ contains=p6Attention,p6Comment syn region p6Comment \ matchgroup=p6Comment \ start="^\@" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCodeType \ keepend syn region p6PodAbbrCodeType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbrCode syn region p6PodAbbrCode \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained " Abbreviated blocks (everything is a comment) syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zecomment\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrCommentType \ keepend syn region p6PodAbbrCommentType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodComment,p6PodAbbrNoCode " Abbreviated blocks (implicit code allowed) syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\ze\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodAbbrType \ keepend syn region p6PodAbbrType \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodName,p6PodAbbr syn region p6PodAbbr \ start="^" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode " Abbreviated block to end-of-file syn region p6PodAbbrRegion \ matchgroup=p6PodPrefix \ start="^=\zeEND\>" \ end="\%$" \ contains=p6PodAbbrEOFType \ keepend syn region p6PodAbbrEOFType \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodName,p6PodAbbrEOF syn region p6PodAbbrEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Directives syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=\%(config\|use\)\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodDirectArgRegion \ keepend syn region p6PodDirectArgRegion \ matchgroup=p6PodType \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=p6PodDirectConfigRegion syn region p6PodDirectConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig " =encoding is a special directive syn region p6PodDirectRegion \ matchgroup=p6PodPrefix \ start="^=encoding\>" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contains=p6PodEncodingArgRegion \ keepend syn region p6PodEncodingArgRegion \ matchgroup=p6PodName \ start="\S\+" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained " Paragraph blocks (implicit code forbidden) syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaNoCodeTypeRegion \ keepend \ extend syn region p6PodParaNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaNoCode,p6PodParaConfigRegion syn region p6PodParaConfigRegion \ start="" \ end="^\ze\%([^=]\|=\k\@\ze\s*code\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaCodeTypeRegion \ keepend \ extend syn region p6PodParaCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodParaCode,p6PodParaConfigRegion syn region p6PodParaCode \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained " Paragraph blocks (implicit code allowed) syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^\ze\%(\s*$\|=\K\)" \ contains=p6PodParaTypeRegion \ keepend \ extend syn region p6PodParaTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=p6PodPara,p6PodParaConfigRegion syn region p6PodPara \ start="^[^=]" \ end="^\ze\%(\s*$\|=\K\)" \ contained \ contains=@p6PodFormat,p6PodImplicitCode " Paragraph block to end-of-file syn region p6PodParaRegion \ matchgroup=p6PodPrefix \ start="^=for\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodParaEOFTypeRegion \ keepend \ extend syn region p6PodParaEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodParaEOF,p6PodParaConfigRegion syn region p6PodParaEOF \ start="^[^=]" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Delimited blocks (implicit code forbidden) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>" \ end="^=end\>" \ contains=p6PodDelimNoCodeTypeRegion \ keepend \ extend syn region p6PodDelimNoCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimNoCode,p6PodDelimConfigRegion syn region p6PodDelimConfigRegion \ start="" \ end="^\ze\%([^=]\|=\K\|\s*$\)" \ contained \ contains=@p6PodConfig syn region p6PodDelimNoCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat " Delimited blocks (everything is code) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*code\>" \ end="^=end\>" \ contains=p6PodDelimCodeTypeRegion \ keepend \ extend syn region p6PodDelimCodeTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelimCode,p6PodDelimConfigRegion syn region p6PodDelimCode \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks " Delimited blocks (implicit code allowed) syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s*\%(pod\|item\|nested\|\u\+\)\>" \ end="^=end\>" \ contains=p6PodDelimTypeRegion \ keepend \ extend syn region p6PodDelimTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="^\ze=end\>" \ contained \ contains=p6PodDelim,p6PodDelimConfigRegion syn region p6PodDelim \ start="^" \ end="^\ze=end\>" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode " Delimited block to end-of-file syn region p6PodDelimRegion \ matchgroup=p6PodPrefix \ start="^=begin\>\ze\s\+END\>" \ end="\%$" \ contains=p6PodDelimEOFTypeRegion \ extend syn region p6PodDelimEOFTypeRegion \ matchgroup=p6PodType \ start="\K\k*" \ end="\%$" \ contained \ contains=p6PodDelimEOF,p6PodDelimConfigRegion syn region p6PodDelimEOF \ start="^" \ end="\%$" \ contained \ contains=@p6PodNestedBlocks,@p6PodFormat,p6PodImplicitCode syn cluster p6PodConfig \ add=p6PodConfigOperator \ add=p6PodExtraConfig \ add=p6StringAuto \ add=p6PodAutoQuote \ add=p6StringSQ syn region p6PodParens \ start="(" \ end=")" \ contained \ contains=p6Number,p6StringSQ syn match p6PodAutoQuote display contained "=>" syn match p6PodConfigOperator display contained ":!\?" nextgroup=p6PodConfigOption syn match p6PodConfigOption display contained "[^[:space:](<]\+" nextgroup=p6PodParens,p6StringAngle syn match p6PodExtraConfig display contained "^=" syn match p6PodVerticalBar display contained "|" syn match p6PodColon display contained ":" syn match p6PodSemicolon display contained ";" syn match p6PodComma display contained "," syn match p6PodImplicitCode display contained "^\s.*" syn region p6PodDelimEndRegion \ matchgroup=p6PodType \ start="\%(^=end\>\)\@<=" \ end="\K\k*" " These may appear inside delimited blocks syn cluster p6PodNestedBlocks \ add=p6PodAbbrRegion \ add=p6PodDirectRegion \ add=p6PodParaRegion \ add=p6PodDelimRegion \ add=p6PodDelimEndRegion " Pod formatting codes syn cluster p6PodFormat \ add=p6PodFormatOne \ add=p6PodFormatTwo \ add=p6PodFormatThree \ add=p6PodFormatFrench " Balanced angles found inside formatting codes. Ensures proper nesting. syn region p6PodFormatAnglesOne \ matchgroup=p6PodFormat \ start="<" \ skip="<[^>]*>" \ end=">" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne syn region p6PodFormatAnglesTwo \ matchgroup=p6PodFormat \ start="<<" \ skip="<<[^>]*>>" \ end=">>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo syn region p6PodFormatAnglesThree \ matchgroup=p6PodFormat \ start="<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree syn region p6PodFormatAnglesFrench \ matchgroup=p6PodFormat \ start="«" \ skip="«[^»]*»" \ end="»" \ transparent \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatAnglesOne,p6PodFormatAnglesTwo,p6PodFormatAnglesThree " All formatting codes syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="\u<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="\u<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="\u<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="\u«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree " C<> and V<> don't allow nested formatting formatting codes syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="[CV]<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="[CV]<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="[CV]<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="[CV]«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench " L<> can have a "|" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="L<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="L<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="L<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="L«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar " E<> can have a ";" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="E<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="E<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="E<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="E«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodSemiColon " M<> can have a ":" separator syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="M<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="M<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="M<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="M«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodColon " D<> can have "|" and ";" separators syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="D<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="D<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAngleTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="D<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="D«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon " X<> can have "|", "," and ";" separators syn region p6PodFormatOne \ matchgroup=p6PodFormatCode \ start="X<" \ skip="<[^>]*>" \ end=">" \ contained \ contains=p6PodFormatAnglesOne,p6PodFormatFrench,p6PodFormatOne,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatTwo \ matchgroup=p6PodFormatCode \ start="X<<" \ skip="<<[^>]*>>" \ end=">>" \ contained \ contains=p6PodFormatAnglesTwo,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatThree \ matchgroup=p6PodFormatCode \ start="X<<<" \ skip="<<<[^>]*>>>" \ end=">>>" \ contained \ contains=p6PodFormatAnglesThree,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma syn region p6PodFormatFrench \ matchgroup=p6PodFormatCode \ start="X«" \ skip="«[^»]*»" \ end="»" \ contained \ contains=p6PodFormatAnglesFrench,p6PodFormatFrench,p6PodFormatOne,p6PodFormatTwo,p6PodFormatThree,p6PodVerticalBar,p6PodSemiColon,p6PodComma " 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_perl6_syntax_inits") if version < 508 let did_perl6_syntax_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink p6EscOctOld p6Error HiLink p6PackageTwigil p6Twigil HiLink p6StringAngle p6String HiLink p6StringFrench p6String HiLink p6StringAngles p6String HiLink p6StringSQ p6String HiLink p6StringDQ p6String HiLink p6StringQ p6String HiLink p6RxStringSQ p6String HiLink p6RxStringDQ p6String HiLink p6Substitution p6String HiLink p6Transliteration p6String HiLink p6StringAuto p6String HiLink p6StringP5Auto p6String HiLink p6Key p6String HiLink p6Match p6String HiLink p6RegexBlock p6String HiLink p6RxP5CharClass p6String HiLink p6RxP5QuoteMeta p6String HiLink p6RxCharClass p6String HiLink p6RxQuoteWords p6String HiLink p6ReduceOp p6Operator HiLink p6ReverseCrossOp p6Operator HiLink p6HyperOp p6Operator HiLink p6QuoteQ p6Operator HiLink p6RxRange p6StringSpecial HiLink p6RxAnchor p6StringSpecial HiLink p6RxP5Anchor p6StringSpecial HiLink p6CodePoint p6StringSpecial HiLink p6RxMeta p6StringSpecial HiLink p6RxP5Range p6StringSpecial HiLink p6RxP5CPId p6StringSpecial HiLink p6RxP5Posix p6StringSpecial HiLink p6RxP5Mod p6StringSpecial HiLink p6RxP5HexSeq p6StringSpecial HiLink p6RxP5OctSeq p6StringSpecial HiLink p6RxP5WriteRefId p6StringSpecial HiLink p6HexSequence p6StringSpecial HiLink p6OctSequence p6StringSpecial HiLink p6RxP5Named p6StringSpecial HiLink p6RxP5PropId p6StringSpecial HiLink p6RxP5Quantifier p6StringSpecial HiLink p6RxP5CountId p6StringSpecial HiLink p6RxP5Verb p6StringSpecial HiLink p6Escape p6StringSpecial2 HiLink p6EscNull p6StringSpecial2 HiLink p6EscHash p6StringSpecial2 HiLink p6EscQQ p6StringSpecial2 HiLink p6EscQuote p6StringSpecial2 HiLink p6EscDoubleQuote p6StringSpecial2 HiLink p6EscBackTick p6StringSpecial2 HiLink p6EscForwardSlash p6StringSpecial2 HiLink p6EscVerticalBar p6StringSpecial2 HiLink p6EscExclamation p6StringSpecial2 HiLink p6EscDollar p6StringSpecial2 HiLink p6EscOpenCurly p6StringSpecial2 HiLink p6EscCloseCurly p6StringSpecial2 HiLink p6EscCloseBracket p6StringSpecial2 HiLink p6EscCloseAngle p6StringSpecial2 HiLink p6EscCloseFrench p6StringSpecial2 HiLink p6EscBackSlash p6StringSpecial2 HiLink p6RxEscape p6StringSpecial2 HiLink p6RxCapture p6StringSpecial2 HiLink p6RxAlternation p6StringSpecial2 HiLink p6RxP5 p6StringSpecial2 HiLink p6RxP5ReadRef p6StringSpecial2 HiLink p6RxP5Oct p6StringSpecial2 HiLink p6RxP5Hex p6StringSpecial2 HiLink p6RxP5EscMeta p6StringSpecial2 HiLink p6RxP5Meta p6StringSpecial2 HiLink p6RxP5Escape p6StringSpecial2 HiLink p6RxP5CodePoint p6StringSpecial2 HiLink p6RxP5WriteRef p6StringSpecial2 HiLink p6RxP5Prop p6StringSpecial2 HiLink p6Property Tag HiLink p6Attention Todo HiLink p6Type Type HiLink p6Error Error HiLink p6BlockLabel Label HiLink p6Float Float HiLink p6Normal Normal HiLink p6Package Normal HiLink p6PackageScope Normal HiLink p6Number Number HiLink p6VersionNum Number HiLink p6String String HiLink p6Repeat Repeat HiLink p6Keyword Keyword HiLink p6Pragma Keyword HiLink p6Module Keyword HiLink p6DeclareRoutine Keyword HiLink p6VarStorage Special HiLink p6FlowControl Special HiLink p6NumberBase Special HiLink p6Twigil Special HiLink p6StringSpecial2 Special HiLink p6VersionDot Special HiLink p6Comment Comment HiLink p6Include Include HiLink p6Shebang PreProc HiLink p6ClosureTrait PreProc HiLink p6Routine Function HiLink p6Operator Operator HiLink p6Version Operator HiLink p6Context Operator HiLink p6Quote Delimiter HiLink p6TypeConstraint PreCondit HiLink p6Exception Exception HiLink p6Placeholder Identifier HiLink p6Variable Identifier HiLink p6VarSlash Identifier HiLink p6VarNum Identifier HiLink p6VarExclam Identifier HiLink p6VarMatch Identifier HiLink p6VarName Identifier HiLink p6MatchVar Identifier HiLink p6RxP5ReadRefId Identifier HiLink p6RxP5ModDef Identifier HiLink p6RxP5ModName Identifier HiLink p6Conditional Conditional HiLink p6StringSpecial SpecialChar HiLink p6PodAbbr p6Pod HiLink p6PodAbbrEOF p6Pod HiLink p6PodAbbrNoCode p6Pod HiLink p6PodAbbrCode p6PodCode HiLink p6PodPara p6Pod HiLink p6PodParaEOF p6Pod HiLink p6PodParaNoCode p6Pod HiLink p6PodParaCode p6PodCode HiLink p6PodDelim p6Pod HiLink p6PodDelimEOF p6Pod HiLink p6PodDelimNoCode p6Pod HiLink p6PodDelimCode p6PodCode HiLink p6PodImplicitCode p6PodCode HiLink p6PodExtraConfig p6PodPrefix HiLink p6PodVerticalBar p6PodFormatCode HiLink p6PodColon p6PodFormatCode HiLink p6PodSemicolon p6PodFormatCode HiLink p6PodComma p6PodFormatCode HiLink p6PodFormatOne p6PodFormat HiLink p6PodFormatTwo p6PodFormat HiLink p6PodFormatThree p6PodFormat HiLink p6PodFormatFrench p6PodFormat HiLink p6PodType Type HiLink p6PodConfigOption String HiLink p6PodCode PreProc HiLink p6Pod Comment HiLink p6PodComment Comment HiLink p6PodAutoQuote Operator HiLink p6PodConfigOperator Operator HiLink p6PodPrefix Statement HiLink p6PodName Identifier HiLink p6PodFormatCode SpecialChar HiLink p6PodFormat SpecialComment delcommand HiLink endif " Syncing to speed up processing "syn sync match p6SyncPod groupthere p6PodAbbrRegion "^=\K\k*\>" "syn sync match p6SyncPod groupthere p6PodDirectRegion "^=\%(config\|use\|encoding\)\>" "syn sync match p6SyncPod groupthere p6PodParaRegion "^=for\>" "syn sync match p6SyncPod groupthere p6PodDelimRegion "^=begin\>" "syn sync match p6SyncPod groupthere p6PodDelimEndRegion "^=end\>" " Let's just sync whole file, the other methods aren't reliable (or I don't " know how to use them reliably) syn sync fromstart setlocal foldmethod=syntax let b:current_syntax = "perl6" let &cpo = s:keepcpo unlet s:keepcpo " vim:ts=8:sts=4:sw=4:expandtab:ft=vim