SILENT KILLERPanel

Current Path: > > > > usr > share > vim > vim80 > syntax


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: ////usr/share/vim/vim80/syntax

NameTypeSizeLast ModifiedActions
2html.vim File 69175 bytes August 02 2022 16:56:59.
README.txt File 1403 bytes August 02 2022 16:56:59.
a2ps.vim File 2426 bytes August 02 2022 16:56:59.
a65.vim File 6394 bytes August 02 2022 16:56:59.
aap.vim File 5697 bytes August 02 2022 16:56:59.
abap.vim File 9030 bytes August 02 2022 16:56:59.
abaqus.vim File 1094 bytes August 02 2022 16:56:59.
abc.vim File 1842 bytes August 02 2022 16:56:59.
abel.vim File 5114 bytes August 02 2022 16:56:59.
acedb.vim File 4871 bytes August 02 2022 16:56:59.
ada.vim File 13050 bytes August 02 2022 16:56:59.
aflex.vim File 4368 bytes August 02 2022 16:56:59.
ahdl.vim File 2771 bytes August 02 2022 16:56:59.
alsaconf.vim File 1546 bytes August 02 2022 16:56:59.
amiga.vim File 2967 bytes August 02 2022 16:56:59.
aml.vim File 24137 bytes August 02 2022 16:56:59.
ampl.vim File 4108 bytes August 02 2022 16:56:59.
ant.vim File 5816 bytes August 02 2022 16:56:59.
antlr.vim File 1793 bytes August 02 2022 16:56:59.
apache.vim File 14969 bytes August 02 2022 16:56:59.
apachestyle.vim File 1417 bytes August 02 2022 16:56:59.
aptconf.vim File 22228 bytes August 02 2022 16:56:59.
arch.vim File 1149 bytes August 02 2022 16:56:59.
arduino.vim File 2031 bytes August 02 2022 16:56:59.
art.vim File 1297 bytes August 02 2022 16:56:59.
asciidoc.vim File 10998 bytes August 02 2022 16:56:59.
asm.vim File 4338 bytes August 02 2022 16:56:59.
asm68k.vim File 14280 bytes August 02 2022 16:56:59.
asmh8300.vim File 1994 bytes August 02 2022 16:56:59.
asn.vim File 2578 bytes August 02 2022 16:56:59.
aspperl.vim File 811 bytes August 02 2022 16:56:59.
aspvbs.vim File 9099 bytes August 02 2022 16:56:59.
asterisk.vim File 5524 bytes August 02 2022 16:56:59.
asteriskvm.vim File 2332 bytes August 02 2022 16:56:59.
atlas.vim File 2602 bytes August 02 2022 16:56:59.
autodoc.vim File 3730 bytes August 02 2022 16:56:59.
autohotkey.vim File 11861 bytes August 02 2022 16:56:59.
autoit.vim File 48014 bytes August 02 2022 16:56:59.
automake.vim File 3972 bytes August 02 2022 16:56:59.
ave.vim File 1900 bytes August 02 2022 16:56:59.
avra.vim File 2683 bytes August 02 2022 16:56:59.
awk.vim File 7839 bytes August 02 2022 16:56:59.
ayacc.vim File 2585 bytes August 02 2022 16:56:59.
b.vim File 4902 bytes August 02 2022 16:56:59.
baan.vim File 73595 bytes August 02 2022 16:56:59.
basic.vim File 8128 bytes August 02 2022 16:56:59.
bc.vim File 1791 bytes August 02 2022 16:56:59.
bdf.vim File 3841 bytes August 02 2022 16:56:59.
bib.vim File 6004 bytes August 02 2022 16:56:59.
bindzone.vim File 4826 bytes August 02 2022 16:56:59.
blank.vim File 794 bytes August 02 2022 16:56:59.
bst.vim File 2825 bytes August 02 2022 16:56:59.
btm.vim File 9285 bytes August 02 2022 16:56:59.
bzl.vim File 374 bytes August 02 2022 16:56:59.
bzr.vim File 1560 bytes August 02 2022 16:56:59.
c.vim File 26366 bytes August 02 2022 16:56:59.
cabal.vim File 4310 bytes August 02 2022 16:56:59.
calendar.vim File 5042 bytes August 02 2022 16:56:59.
catalog.vim File 921 bytes August 02 2022 16:56:59.
cdl.vim File 3092 bytes August 02 2022 16:56:59.
cdrdaoconf.vim File 3647 bytes August 02 2022 16:56:59.
cdrtoc.vim File 22756 bytes August 02 2022 16:56:59.
cf.vim File 18644 bytes August 02 2022 16:56:59.
cfg.vim File 1351 bytes August 02 2022 16:56:59.
ch.vim File 922 bytes August 02 2022 16:56:59.
chaiscript.vim File 2887 bytes August 02 2022 16:56:59.
change.vim File 901 bytes August 02 2022 16:56:59.
changelog.vim File 2097 bytes August 02 2022 16:56:59.
chaskell.vim File 333 bytes August 02 2022 16:56:59.
cheetah.vim File 1752 bytes August 02 2022 16:56:59.
chicken.vim File 2618 bytes August 02 2022 16:56:59.
chill.vim File 8024 bytes August 02 2022 16:56:59.
chordpro.vim File 2521 bytes August 02 2022 16:56:59.
cl.vim File 3905 bytes August 02 2022 16:56:59.
clean.vim File 3151 bytes August 02 2022 16:56:59.
clipper.vim File 5576 bytes August 02 2022 16:56:59.
clojure.vim File 41933 bytes August 02 2022 16:56:59.
cmake.vim File 42148 bytes August 02 2022 16:56:59.
cmod.vim File 6271 bytes August 02 2022 16:56:59.
cmusrc.vim File 12921 bytes August 02 2022 16:56:59.
cobol.vim File 9920 bytes August 02 2022 16:56:59.
coco.vim File 1300 bytes August 02 2022 16:56:59.
colortest.vim File 3201 bytes August 02 2022 16:56:59.
conaryrecipe.vim File 8036 bytes August 02 2022 16:56:59.
conf.vim File 799 bytes August 02 2022 16:56:59.
config.vim File 2074 bytes August 02 2022 16:56:59.
context.vim File 6199 bytes August 02 2022 16:56:59.
cpp.vim File 2869 bytes August 02 2022 16:56:59.
crm.vim File 1197 bytes August 02 2022 16:56:59.
crontab.vim File 2215 bytes August 02 2022 16:56:59.
cs.vim File 6090 bytes August 02 2022 16:56:59.
csc.vim File 8449 bytes August 02 2022 16:56:59.
csdl.vim File 23755 bytes August 02 2022 16:56:59.
csh.vim File 6459 bytes August 02 2022 16:56:59.
csp.vim File 7152 bytes August 02 2022 16:56:59.
css.vim File 31941 bytes August 02 2022 16:56:59.
cterm.vim File 6406 bytes August 02 2022 16:56:59.
ctrlh.vim File 688 bytes August 02 2022 16:56:59.
cucumber.vim File 31887 bytes August 02 2022 16:56:59.
cuda.vim File 2691 bytes August 02 2022 16:56:59.
cupl.vim File 3873 bytes August 02 2022 16:56:59.
cuplsim.vim File 1916 bytes August 02 2022 16:56:59.
cvs.vim File 929 bytes August 02 2022 16:56:59.
cvsrc.vim File 1254 bytes August 02 2022 16:56:59.
cweb.vim File 2892 bytes August 02 2022 16:56:59.
cynlib.vim File 2548 bytes August 02 2022 16:56:59.
cynpp.vim File 1263 bytes August 02 2022 16:56:59.
d.vim File 28631 bytes August 02 2022 16:56:59.
datascript.vim File 3807 bytes August 02 2022 16:56:59.
dcd.vim File 1803 bytes August 02 2022 16:56:59.
dcl.vim File 6343 bytes August 02 2022 16:56:59.
debchangelog.vim File 2592 bytes August 02 2022 16:56:59.
debcontrol.vim File 8492 bytes August 02 2022 16:56:59.
debsources.vim File 2088 bytes August 02 2022 16:56:59.
def.vim File 1097 bytes August 02 2022 16:56:59.
denyhosts.vim File 7365 bytes August 02 2022 16:56:59.
desc.vim File 3077 bytes August 02 2022 16:56:59.
desktop.vim File 4144 bytes August 02 2022 16:56:59.
dictconf.vim File 3118 bytes August 02 2022 16:56:59.
dictdconf.vim File 6465 bytes August 02 2022 16:56:59.
diff.vim File 17282 bytes August 02 2022 16:56:59.
dircolors.vim File 6946 bytes August 02 2022 16:56:59.
dirpager.vim File 1787 bytes August 02 2022 16:56:59.
diva.vim File 4736 bytes August 02 2022 16:56:59.
django.vim File 3934 bytes August 02 2022 16:56:59.
dns.vim File 132 bytes August 02 2022 16:56:59.
dnsmasq.vim File 10067 bytes August 02 2022 16:56:59.
docbk.vim File 10321 bytes August 02 2022 16:56:59.
docbksgml.vim File 193 bytes August 02 2022 16:56:59.
docbkxml.vim File 191 bytes August 02 2022 16:56:59.
dockerfile.vim File 673 bytes August 02 2022 16:56:59.
dosbatch.vim File 6260 bytes August 02 2022 16:56:59.
dosini.vim File 1138 bytes August 02 2022 16:56:59.
dot.vim File 3018 bytes August 02 2022 16:56:59.
doxygen.vim File 38642 bytes August 02 2022 16:56:59.
dracula.vim File 2668 bytes August 02 2022 16:56:59.
dsl.vim File 1312 bytes August 02 2022 16:56:59.
dtd.vim File 4934 bytes August 02 2022 16:56:59.
dtml.vim File 16613 bytes August 02 2022 16:56:59.
dtrace.vim File 6442 bytes August 02 2022 16:56:59.
dts.vim File 1210 bytes August 02 2022 16:56:59.
dylan.vim File 3414 bytes August 02 2022 16:56:59.
dylanintr.vim File 1078 bytes August 02 2022 16:56:59.
dylanlid.vim File 664 bytes August 02 2022 16:56:59.
ecd.vim File 1229 bytes August 02 2022 16:56:59.
edif.vim File 1278 bytes August 02 2022 16:56:59.
eiffel.vim File 6926 bytes August 02 2022 16:56:59.
elf.vim File 2348 bytes August 02 2022 16:56:59.
elinks.vim File 10494 bytes August 02 2022 16:56:59.
elmfilt.vim File 2892 bytes August 02 2022 16:56:59.
erlang.vim File 10911 bytes August 02 2022 16:56:59.
eruby.vim File 2908 bytes August 02 2022 16:56:59.
esmtprc.vim File 938 bytes August 02 2022 16:56:59.
esqlc.vim File 2094 bytes August 02 2022 16:56:59.
esterel.vim File 3053 bytes August 02 2022 16:56:59.
eterm.vim File 19172 bytes August 02 2022 16:56:59.
euphoria3.vim File 6103 bytes August 02 2022 16:56:59.
euphoria4.vim File 14537 bytes August 02 2022 16:56:59.
eviews.vim File 5004 bytes August 02 2022 16:56:59.
exim.vim File 18085 bytes August 02 2022 16:56:59.
expect.vim File 3734 bytes August 02 2022 16:56:59.
exports.vim File 1747 bytes August 02 2022 16:56:59.
falcon.vim File 12013 bytes August 02 2022 16:56:59.
fan.vim File 5445 bytes August 02 2022 16:56:59.
fasm.vim File 8757 bytes August 02 2022 16:56:59.
fdcc.vim File 5648 bytes August 02 2022 16:56:59.
fetchmail.vim File 3308 bytes August 02 2022 16:56:59.
fgl.vim File 7274 bytes August 02 2022 16:56:59.
flexwiki.vim File 5435 bytes August 02 2022 16:56:59.
focexec.vim File 3525 bytes August 02 2022 16:56:59.
form.vim File 6385 bytes August 02 2022 16:56:59.
forth.vim File 10669 bytes August 02 2022 16:56:59.
fortran.vim File 32566 bytes August 02 2022 16:56:59.
foxpro.vim File 32856 bytes August 02 2022 16:56:59.
framescript.vim File 11679 bytes August 02 2022 16:56:59.
freebasic.vim File 10512 bytes August 02 2022 16:56:59.
fstab.vim File 15888 bytes August 02 2022 16:56:59.
fvwm.vim File 25026 bytes August 02 2022 16:56:59.
fvwm2m4.vim File 711 bytes August 02 2022 16:56:59.
gdb.vim File 4366 bytes August 02 2022 16:56:59.
gdmo.vim File 3299 bytes August 02 2022 16:56:59.
gedcom.vim File 2275 bytes August 02 2022 16:56:59.
git.vim File 4156 bytes August 02 2022 16:56:59.
gitcommit.vim File 4867 bytes August 02 2022 16:56:59.
gitconfig.vim File 1616 bytes August 02 2022 16:56:59.
gitolite.vim File 4454 bytes August 02 2022 16:56:59.
gitrebase.vim File 1852 bytes August 02 2022 16:56:59.
gitsendemail.vim File 580 bytes August 02 2022 16:56:59.
gkrellmrc.vim File 4116 bytes August 02 2022 16:56:59.
gnash.vim File 3462 bytes August 02 2022 16:56:59.
gnuplot.vim File 23663 bytes August 02 2022 16:56:59.
go.vim File 7904 bytes August 02 2022 16:56:59.
godoc.vim File 352 bytes August 02 2022 16:56:59.
gp.vim File 2965 bytes August 02 2022 16:56:59.
gpg.vim File 5591 bytes August 02 2022 16:56:59.
gprof.vim File 2117 bytes August 02 2022 16:56:59.
grads.vim File 1742 bytes August 02 2022 16:56:59.
gretl.vim File 3730 bytes August 02 2022 16:56:59.
groff.vim File 292 bytes August 02 2022 16:56:59.
groovy.vim File 22290 bytes August 02 2022 16:56:59.
group.vim File 1719 bytes August 02 2022 16:56:59.
grub.vim File 3882 bytes August 02 2022 16:56:59.
gsp.vim File 2031 bytes August 02 2022 16:56:59.
gtkrc.vim File 9318 bytes August 02 2022 16:56:59.
haml.vim File 7067 bytes August 02 2022 16:56:59.
hamster.vim File 13840 bytes August 02 2022 16:56:59.
haskell.vim File 8907 bytes August 02 2022 16:56:59.
haste.vim File 4994 bytes August 02 2022 16:56:59.
hastepreproc.vim File 1422 bytes August 02 2022 16:56:59.
hb.vim File 3158 bytes August 02 2022 16:56:59.
help.vim File 8348 bytes August 02 2022 16:56:59.
hercules.vim File 5720 bytes August 02 2022 16:56:59.
hex.vim File 4011 bytes August 02 2022 16:56:59.
hgcommit.vim File 1114 bytes August 02 2022 16:56:59.
hitest.vim File 3294 bytes August 02 2022 16:56:59.
hog.vim File 10672 bytes August 02 2022 16:56:59.
hostconf.vim File 3870 bytes August 02 2022 16:56:59.
hostsaccess.vim File 549 bytes August 02 2022 16:56:59.
html.vim File 17240 bytes August 02 2022 16:56:59.
htmlcheetah.vim File 488 bytes August 02 2022 16:56:59.
htmldjango.vim File 1011 bytes August 02 2022 16:56:59.
htmlm4.vim File 670 bytes August 02 2022 16:56:59.
htmlos.vim File 8313 bytes August 02 2022 16:56:59.
ia64.vim File 10547 bytes August 02 2022 16:56:59.
ibasic.vim File 7036 bytes August 02 2022 16:56:59.
icemenu.vim File 824 bytes August 02 2022 16:56:59.
icon.vim File 6976 bytes August 02 2022 16:56:59.
idl.vim File 19901 bytes August 02 2022 16:56:59.
idlang.vim File 13462 bytes August 02 2022 16:56:59.
indent.vim File 7171 bytes August 02 2022 16:56:59.
inform.vim File 19483 bytes August 02 2022 16:56:59.
initex.vim File 19224 bytes August 02 2022 16:56:59.
initng.vim File 3398 bytes August 02 2022 16:56:59.
inittab.vim File 2619 bytes August 02 2022 16:56:59.
ipfilter.vim File 1622 bytes August 02 2022 16:56:59.
ishd.vim File 27057 bytes August 02 2022 16:56:59.
iss.vim File 4988 bytes August 02 2022 16:56:59.
ist.vim File 2000 bytes August 02 2022 16:56:59.
j.vim File 9375 bytes August 02 2022 16:56:59.
jal.vim File 8963 bytes August 02 2022 16:56:59.
jam.vim File 26711 bytes August 02 2022 16:56:59.
jargon.vim File 611 bytes August 02 2022 16:56:59.
java.vim File 17979 bytes August 02 2022 16:56:59.
javacc.vim File 2256 bytes August 02 2022 16:56:59.
javascript.vim File 5084 bytes August 02 2022 16:56:59.
jess.vim File 6230 bytes August 02 2022 16:56:59.
jgraph.vim File 1212 bytes August 02 2022 16:56:59.
jovial.vim File 4107 bytes August 02 2022 16:56:59.
jproperties.vim File 5496 bytes August 02 2022 16:56:59.
json.vim File 6018 bytes August 02 2022 16:56:59.
jsp.vim File 2678 bytes August 02 2022 16:56:59.
kconfig.vim File 36304 bytes August 02 2022 16:56:59.
kivy.vim File 986 bytes August 02 2022 16:56:59.
kix.vim File 6329 bytes August 02 2022 16:56:59.
kscript.vim File 1985 bytes August 02 2022 16:56:59.
kwt.vim File 2454 bytes August 02 2022 16:56:59.
lace.vim File 4075 bytes August 02 2022 16:56:59.
latte.vim File 3511 bytes August 02 2022 16:56:59.
ld.vim File 2902 bytes August 02 2022 16:56:59.
ldapconf.vim File 13302 bytes August 02 2022 16:56:59.
ldif.vim File 1014 bytes August 02 2022 16:56:59.
less.vim File 4230 bytes August 02 2022 16:56:59.
lex.vim File 6728 bytes August 02 2022 16:56:59.
lftp.vim File 7471 bytes August 02 2022 16:56:59.
lhaskell.vim File 4435 bytes August 02 2022 16:56:59.
libao.vim File 636 bytes August 02 2022 16:56:59.
lifelines.vim File 6640 bytes August 02 2022 16:56:59.
lilo.vim File 10427 bytes August 02 2022 16:56:59.
limits.vim File 1317 bytes August 02 2022 16:56:59.
liquid.vim File 6184 bytes August 02 2022 16:56:59.
lisp.vim File 35810 bytes August 02 2022 16:56:59.
lite.vim File 4845 bytes August 02 2022 16:56:59.
litestep.vim File 6676 bytes August 02 2022 16:56:59.
loginaccess.vim File 4197 bytes August 02 2022 16:56:59.
logindefs.vim File 7537 bytes August 02 2022 16:56:59.
logtalk.vim File 16039 bytes August 02 2022 16:56:59.
lotos.vim File 2361 bytes August 02 2022 16:56:59.
lout.vim File 4325 bytes August 02 2022 16:56:59.
lpc.vim File 23138 bytes August 02 2022 16:56:59.
lprolog.vim File 3979 bytes August 02 2022 16:56:59.
lscript.vim File 12099 bytes August 02 2022 16:56:59.
lsl.vim File 15800 bytes August 02 2022 16:56:59.
lss.vim File 4870 bytes August 02 2022 16:56:59.
lua.vim File 14052 bytes August 02 2022 16:56:59.
lynx.vim File 6579 bytes August 02 2022 16:56:59.
m4.vim File 2693 bytes August 02 2022 16:56:59.
mail.vim File 6069 bytes August 02 2022 16:56:59.
mailaliases.vim File 2767 bytes August 02 2022 16:56:59.
mailcap.vim File 1135 bytes August 02 2022 16:56:59.
make.vim File 6197 bytes August 02 2022 16:56:59.
mallard.vim File 1726 bytes August 02 2022 16:56:59.
man.vim File 1590 bytes August 02 2022 16:56:59.
manconf.vim File 4344 bytes August 02 2022 16:56:59.
manual.vim File 909 bytes August 02 2022 16:56:59.
maple.vim File 28529 bytes August 02 2022 16:56:59.
markdown.vim File 8052 bytes August 02 2022 16:56:59.
masm.vim File 17225 bytes August 02 2022 16:56:59.
mason.vim File 3818 bytes August 02 2022 16:56:59.
master.vim File 1022 bytes August 02 2022 16:56:59.
matlab.vim File 4133 bytes August 02 2022 16:56:59.
maxima.vim File 18802 bytes August 02 2022 16:56:59.
mel.vim File 3406 bytes August 02 2022 16:56:59.
messages.vim File 2653 bytes August 02 2022 16:56:59.
mf.vim File 15423 bytes August 02 2022 16:56:59.
mgl.vim File 3724 bytes August 02 2022 16:56:59.
mgp.vim File 2000 bytes August 02 2022 16:56:59.
mib.vim File 2696 bytes August 02 2022 16:56:59.
mix.vim File 2942 bytes August 02 2022 16:56:59.
mma.vim File 11799 bytes August 02 2022 16:56:59.
mmix.vim File 4968 bytes August 02 2022 16:56:59.
mmp.vim File 1486 bytes August 02 2022 16:56:59.
modconf.vim File 1419 bytes August 02 2022 16:56:59.
model.vim File 1469 bytes August 02 2022 16:56:59.
modsim3.vim File 3623 bytes August 02 2022 16:56:59.
modula2.vim File 3225 bytes August 02 2022 16:56:59.
modula3.vim File 2012 bytes August 02 2022 16:56:59.
monk.vim File 10219 bytes August 02 2022 16:56:59.
moo.vim File 9234 bytes August 02 2022 16:56:59.
mp.vim File 44530 bytes August 02 2022 16:56:59.
mplayerconf.vim File 7487 bytes August 02 2022 16:56:59.
mrxvtrc.vim File 9603 bytes August 02 2022 16:56:59.
msidl.vim File 3464 bytes August 02 2022 16:56:59.
msmessages.vim File 6318 bytes August 02 2022 16:56:59.
msql.vim File 2390 bytes August 02 2022 16:56:59.
mupad.vim File 15476 bytes August 02 2022 16:56:59.
murphi.vim File 4619 bytes August 02 2022 16:56:59.
mush.vim File 13187 bytes August 02 2022 16:56:59.
muttrc.vim File 64055 bytes August 02 2022 16:56:59.
mysql.vim File 17609 bytes August 02 2022 16:56:59.
n1ql.vim File 12899 bytes August 02 2022 16:56:59.
named.vim File 9991 bytes August 02 2022 16:56:59.
nanorc.vim File 10620 bytes August 02 2022 16:56:59.
nasm.vim File 26285 bytes August 02 2022 16:56:59.
nastran.vim File 8504 bytes August 02 2022 16:56:59.
natural.vim File 6977 bytes August 02 2022 16:56:59.
ncf.vim File 13416 bytes August 02 2022 16:56:59.
neomuttrc.vim File 79227 bytes August 02 2022 16:56:59.
netrc.vim File 1934 bytes August 02 2022 16:56:59.
netrw.vim File 7219 bytes August 02 2022 16:56:59.
ninja.vim File 2889 bytes August 02 2022 16:56:59.
nosyntax.vim File 755 bytes August 02 2022 16:56:59.
nqc.vim File 14068 bytes August 02 2022 16:56:59.
nroff.vim File 7775 bytes August 02 2022 16:56:59.
nsis.vim File 33906 bytes August 02 2022 16:56:59.
obj.vim File 2786 bytes August 02 2022 16:56:59.
objc.vim File 41720 bytes August 02 2022 16:56:59.
objcpp.vim File 600 bytes August 02 2022 16:56:59.
ocaml.vim File 13541 bytes August 02 2022 16:56:59.
occam.vim File 4316 bytes August 02 2022 16:56:59.
omnimark.vim File 6377 bytes August 02 2022 16:56:59.
openroad.vim File 13979 bytes August 02 2022 16:56:59.
opl.vim File 4128 bytes August 02 2022 16:56:59.
ora.vim File 27141 bytes August 02 2022 16:56:59.
pamconf.vim File 5546 bytes August 02 2022 16:56:59.
papp.vim File 3789 bytes August 02 2022 16:56:59.
pascal.vim File 15008 bytes August 02 2022 16:56:59.
passwd.vim File 2443 bytes August 02 2022 16:56:59.
pcap.vim File 1496 bytes August 02 2022 16:56:59.
pccts.vim File 4093 bytes August 02 2022 16:56:59.
pdf.vim File 3539 bytes August 02 2022 16:56:59.
perl.vim File 38470 bytes August 02 2022 16:56:59.
perl6.vim File 74127 bytes August 02 2022 16:56:59.
pf.vim File 5294 bytes August 02 2022 16:56:59.
pfmain.vim File 92737 bytes August 02 2022 16:56:59.
php.vim File 80429 bytes August 02 2022 16:56:59.
phtml.vim File 151 bytes August 02 2022 16:56:59.
pic.vim File 3333 bytes August 02 2022 16:56:59.
pike.vim File 21807 bytes August 02 2022 16:56:59.
pilrc.vim File 5311 bytes August 02 2022 16:56:59.
pine.vim File 15411 bytes August 02 2022 16:56:59.
pinfo.vim File 5296 bytes August 02 2022 16:56:59.
plaintex.vim File 10301 bytes August 02 2022 16:56:59.
pli.vim File 13222 bytes August 02 2022 16:56:59.
plm.vim File 5361 bytes August 02 2022 16:56:59.
plp.vim File 1267 bytes August 02 2022 16:56:59.
plsql.vim File 12918 bytes August 02 2022 16:56:59.
po.vim File 6393 bytes August 02 2022 16:56:59.
pod.vim File 7283 bytes August 02 2022 16:56:59.
postscr.vim File 46133 bytes August 02 2022 16:56:59.
pov.vim File 9057 bytes August 02 2022 16:56:59.
povini.vim File 3488 bytes August 02 2022 16:56:59.
ppd.vim File 868 bytes August 02 2022 16:56:59.
ppwiz.vim File 2780 bytes August 02 2022 16:56:59.
prescribe.vim File 2383 bytes August 02 2022 16:56:59.
privoxy.vim File 3579 bytes August 02 2022 16:56:59.
procmail.vim File 2019 bytes August 02 2022 16:56:59.
progress.vim File 31748 bytes August 02 2022 16:56:59.
prolog.vim File 4360 bytes August 02 2022 16:56:59.
promela.vim File 1728 bytes August 02 2022 16:56:59.
proto.vim File 2933 bytes August 02 2022 16:56:59.
protocols.vim File 1429 bytes August 02 2022 16:56:59.
psf.vim File 4290 bytes August 02 2022 16:56:59.
ptcap.vim File 4128 bytes August 02 2022 16:56:59.
purifylog.vim File 3357 bytes August 02 2022 16:56:59.
pyrex.vim File 1663 bytes August 02 2022 16:56:59.
python.vim File 14280 bytes August 02 2022 16:56:59.
qf.vim File 596 bytes August 02 2022 16:56:59.
quake.vim File 8554 bytes August 02 2022 16:56:59.
r.vim File 14316 bytes August 02 2022 16:56:59.
racc.vim File 5619 bytes August 02 2022 16:56:59.
radiance.vim File 7155 bytes August 02 2022 16:56:59.
ratpoison.vim File 17221 bytes August 02 2022 16:56:59.
rc.vim File 10217 bytes August 02 2022 16:56:59.
rcs.vim File 2133 bytes August 02 2022 16:56:59.
rcslog.vim File 557 bytes August 02 2022 16:56:59.
readline.vim File 16999 bytes August 02 2022 16:56:59.
rebol.vim File 7167 bytes August 02 2022 16:56:59.
redif.vim File 87942 bytes August 02 2022 16:56:59.
registry.vim File 3355 bytes August 02 2022 16:56:59.
remind.vim File 2713 bytes August 02 2022 16:56:59.
resolv.vim File 3019 bytes August 02 2022 16:56:59.
reva.vim File 7581 bytes August 02 2022 16:56:59.
rexx.vim File 15331 bytes August 02 2022 16:56:59.
rhelp.vim File 12134 bytes August 02 2022 16:56:59.
rib.vim File 2192 bytes August 02 2022 16:56:59.
rmd.vim File 4406 bytes August 02 2022 16:56:59.
rnc.vim File 2263 bytes August 02 2022 16:56:59.
rng.vim File 817 bytes August 02 2022 16:56:59.
rnoweb.vim File 1908 bytes August 02 2022 16:56:59.
robots.vim File 1529 bytes August 02 2022 16:56:59.
rpcgen.vim File 1666 bytes August 02 2022 16:56:59.
rpl.vim File 25699 bytes August 02 2022 16:56:59.
rrst.vim File 1305 bytes August 02 2022 16:56:59.
rst.vim File 8834 bytes August 02 2022 16:56:59.
rtf.vim File 2330 bytes August 02 2022 16:56:59.
ruby.vim File 40643 bytes August 02 2022 16:56:59.
rust.vim File 16612 bytes August 02 2022 16:56:59.
samba.vim File 6131 bytes August 02 2022 16:56:59.
sas.vim File 34087 bytes August 02 2022 16:56:59.
sass.vim File 6323 bytes August 02 2022 16:56:59.
sather.vim File 3490 bytes August 02 2022 16:56:59.
sbt.vim File 880 bytes August 02 2022 16:56:59.
scala.vim File 11307 bytes August 02 2022 16:56:59.
scheme.vim File 19330 bytes August 02 2022 16:56:59.
scilab.vim File 3210 bytes August 02 2022 16:56:59.
screen.vim File 9104 bytes August 02 2022 16:56:59.
scss.vim File 409 bytes August 02 2022 16:56:59.
sd.vim File 2223 bytes August 02 2022 16:56:59.
sdc.vim File 1391 bytes August 02 2022 16:56:59.
sdl.vim File 6563 bytes August 02 2022 16:56:59.
sed.vim File 5033 bytes August 02 2022 16:56:59.
sendpr.vim File 905 bytes August 02 2022 16:56:59.
sensors.vim File 1513 bytes August 02 2022 16:56:59.
services.vim File 1823 bytes August 02 2022 16:56:59.
setserial.vim File 5229 bytes August 02 2022 16:56:59.
sgml.vim File 8866 bytes August 02 2022 16:56:59.
sgmldecl.vim File 2041 bytes August 02 2022 16:56:59.
sgmllnx.vim File 1851 bytes August 02 2022 16:56:59.
sh.vim File 40497 bytes August 02 2022 16:56:59.
sicad.vim File 18475 bytes August 02 2022 16:56:59.
sieve.vim File 1671 bytes August 02 2022 16:56:59.
simula.vim File 3371 bytes August 02 2022 16:56:59.
sinda.vim File 3666 bytes August 02 2022 16:56:59.
sindacmp.vim File 1274 bytes August 02 2022 16:56:59.
sindaout.vim File 1961 bytes August 02 2022 16:56:59.
sisu.vim File 22180 bytes August 02 2022 16:56:59.
skill.vim File 25769 bytes August 02 2022 16:56:59.
sl.vim File 4084 bytes August 02 2022 16:56:59.
slang.vim File 3302 bytes August 02 2022 16:56:59.
slice.vim File 2928 bytes August 02 2022 16:56:59.
slpconf.vim File 11791 bytes August 02 2022 16:56:59.
slpreg.vim File 5346 bytes August 02 2022 16:56:59.
slpspi.vim File 1181 bytes August 02 2022 16:56:59.
slrnrc.vim File 12811 bytes August 02 2022 16:56:59.
slrnsc.vim File 3098 bytes August 02 2022 16:56:59.
sm.vim File 2850 bytes August 02 2022 16:56:59.
smarty.vim File 2883 bytes August 02 2022 16:56:59.
smcl.vim File 12043 bytes August 02 2022 16:56:59.
smil.vim File 5616 bytes August 02 2022 16:56:59.
smith.vim File 793 bytes August 02 2022 16:56:59.
sml.vim File 9328 bytes August 02 2022 16:56:59.
snnsnet.vim File 2482 bytes August 02 2022 16:56:59.
snnspat.vim File 2228 bytes August 02 2022 16:56:59.
snnsres.vim File 1933 bytes August 02 2022 16:56:59.
snobol4.vim File 5334 bytes August 02 2022 16:56:59.
spec.vim File 12628 bytes August 02 2022 16:56:59.
specman.vim File 7345 bytes August 02 2022 16:56:59.
spice.vim File 2243 bytes August 02 2022 16:56:59.
splint.vim File 15786 bytes August 02 2022 16:56:59.
spup.vim File 13926 bytes August 02 2022 16:56:59.
spyce.vim File 4455 bytes August 02 2022 16:56:59.
sql.vim File 1120 bytes August 02 2022 16:56:59.
sqlanywhere.vim File 41929 bytes August 02 2022 16:56:59.
sqlforms.vim File 6734 bytes August 02 2022 16:56:59.
sqlhana.vim File 11027 bytes August 02 2022 16:56:59.
sqlinformix.vim File 5901 bytes August 02 2022 16:56:59.
sqlj.vim File 2970 bytes August 02 2022 16:56:59.
sqloracle.vim File 7243 bytes August 02 2022 16:56:59.
sqr.vim File 13012 bytes August 02 2022 16:56:59.
squid.vim File 6931 bytes August 02 2022 16:56:59.
srec.vim File 3815 bytes August 02 2022 16:56:59.
sshconfig.vim File 10579 bytes August 02 2022 16:56:59.
sshdconfig.vim File 11092 bytes August 02 2022 16:56:59.
st.vim File 2752 bytes August 02 2022 16:56:59.
stata.vim File 27056 bytes August 02 2022 16:56:59.
stp.vim File 5427 bytes August 02 2022 16:56:59.
strace.vim File 1970 bytes August 02 2022 16:56:59.
sudoers.vim File 22053 bytes August 02 2022 16:56:59.
svg.vim File 436 bytes August 02 2022 16:56:59.
svn.vim File 1852 bytes August 02 2022 16:56:59.
syncolor.vim File 4093 bytes August 02 2022 16:56:59.
synload.vim File 1984 bytes August 02 2022 16:56:59.
syntax.vim File 1228 bytes August 02 2022 16:56:59.
sysctl.vim File 1153 bytes August 02 2022 16:56:59.
systemd.vim File 184 bytes August 02 2022 16:56:59.
systemverilog.vim File 3539 bytes August 02 2022 16:56:59.
tads.vim File 6862 bytes August 02 2022 16:56:59.
tags.vim File 1155 bytes August 02 2022 16:56:59.
tak.vim File 2920 bytes August 02 2022 16:56:59.
takcmp.vim File 1593 bytes August 02 2022 16:56:59.
takout.vim File 2000 bytes August 02 2022 16:56:59.
tap.vim File 4362 bytes August 02 2022 16:56:59.
tar.vim File 373 bytes August 02 2022 16:56:59.
taskdata.vim File 1207 bytes August 02 2022 16:56:59.
taskedit.vim File 1130 bytes August 02 2022 16:56:59.
tasm.vim File 5672 bytes August 02 2022 16:56:59.
tcl.vim File 17286 bytes August 02 2022 16:56:59.
tcsh.vim File 13269 bytes August 02 2022 16:56:59.
teraterm.vim File 4938 bytes August 02 2022 16:56:59.
terminfo.vim File 4803 bytes August 02 2022 16:56:59.
tex.vim File 66689 bytes August 02 2022 16:56:59.
texinfo.vim File 25568 bytes August 02 2022 16:56:59.
texmf.vim File 2281 bytes August 02 2022 16:56:59.
tf.vim File 6904 bytes August 02 2022 16:56:59.
tidy.vim File 5927 bytes August 02 2022 16:56:59.
tilde.vim File 1538 bytes August 02 2022 16:56:59.
tli.vim File 1658 bytes August 02 2022 16:56:59.
tmux.vim File 6413 bytes August 02 2022 16:56:59.
tpp.vim File 3481 bytes August 02 2022 16:56:59.
trasys.vim File 5033 bytes August 02 2022 16:56:59.
treetop.vim File 3668 bytes August 02 2022 16:56:59.
trustees.vim File 1546 bytes August 02 2022 16:56:59.
tsalt.vim File 8325 bytes August 02 2022 16:56:59.
tsscl.vim File 5120 bytes August 02 2022 16:56:59.
tssgm.vim File 2787 bytes August 02 2022 16:56:59.
tssop.vim File 1785 bytes August 02 2022 16:56:59.
tt2.vim File 7923 bytes August 02 2022 16:56:59.
tt2html.vim File 516 bytes August 02 2022 16:56:59.
tt2js.vim File 522 bytes August 02 2022 16:56:59.
uc.vim File 6634 bytes August 02 2022 16:56:59.
udevconf.vim File 1227 bytes August 02 2022 16:56:59.
udevperm.vim File 2409 bytes August 02 2022 16:56:59.
udevrules.vim File 6960 bytes August 02 2022 16:56:59.
uil.vim File 2821 bytes August 02 2022 16:56:59.
updatedb.vim File 1220 bytes August 02 2022 16:56:59.
upstart.vim File 3151 bytes August 02 2022 16:56:59.
upstreamdat.vim File 14048 bytes August 02 2022 16:56:59.
upstreaminstalllog.vim File 971 bytes August 02 2022 16:56:59.
upstreamlog.vim File 2620 bytes August 02 2022 16:56:59.
upstreamrpt.vim File 14197 bytes August 02 2022 16:56:59.
usserverlog.vim File 3118 bytes August 02 2022 16:56:59.
usw2kagtlog.vim File 2702 bytes August 02 2022 16:56:59.
valgrind.vim File 3250 bytes August 02 2022 16:56:59.
vb.vim File 20299 bytes August 02 2022 16:56:59.
vera.vim File 19552 bytes August 02 2022 16:56:59.
verilog.vim File 5055 bytes August 02 2022 16:56:59.
verilogams.vim File 6083 bytes August 02 2022 16:56:59.
vgrindefs.vim File 1214 bytes August 02 2022 16:56:59.
vhdl.vim File 9389 bytes August 02 2022 16:56:59.
vim.vim File 68220 bytes August 02 2022 16:56:59.
viminfo.vim File 1241 bytes August 02 2022 16:56:59.
virata.vim File 11613 bytes August 02 2022 16:56:59.
vmasm.vim File 8512 bytes August 02 2022 16:56:59.
voscm.vim File 6975 bytes August 02 2022 16:56:59.
vrml.vim File 12788 bytes August 02 2022 16:56:59.
vroom.vim File 3492 bytes August 02 2022 16:56:59.
vsejcl.vim File 1004 bytes August 02 2022 16:56:59.
wdiff.vim File 716 bytes August 02 2022 16:56:59.
web.vim File 1114 bytes August 02 2022 16:56:59.
webmacro.vim File 3130 bytes August 02 2022 16:56:59.
wget.vim File 3961 bytes August 02 2022 16:56:59.
whitespace.vim File 357 bytes August 02 2022 16:56:59.
winbatch.vim File 12152 bytes August 02 2022 16:56:59.
wml.vim File 5731 bytes August 02 2022 16:56:59.
wsh.vim File 1242 bytes August 02 2022 16:56:59.
wsml.vim File 5400 bytes August 02 2022 16:56:59.
wvdial.vim File 1093 bytes August 02 2022 16:56:59.
xbl.vim File 568 bytes August 02 2022 16:56:59.
xdefaults.vim File 5887 bytes August 02 2022 16:56:59.
xf86conf.vim File 14725 bytes August 02 2022 16:56:59.
xhtml.vim File 186 bytes August 02 2022 16:56:59.
xinetd.vim File 14208 bytes August 02 2022 16:56:59.
xkb.vim File 3320 bytes August 02 2022 16:56:59.
xmath.vim File 10829 bytes August 02 2022 16:56:59.
xml.vim File 8609 bytes August 02 2022 16:56:59.
xmodmap.vim File 46511 bytes August 02 2022 16:56:59.
xpm.vim File 4403 bytes August 02 2022 16:56:59.
xpm2.vim File 4697 bytes August 02 2022 16:56:59.
xquery.vim File 7191 bytes August 02 2022 16:56:59.
xs.vim File 246745 bytes August 02 2022 16:56:59.
xsd.vim File 2125 bytes August 02 2022 16:56:59.
xslt.vim File 2166 bytes August 02 2022 16:56:59.
xxd.vim File 766 bytes August 02 2022 16:56:59.
yacc.vim File 5513 bytes August 02 2022 16:56:59.
yaml.vim File 12864 bytes August 02 2022 16:56:59.
z8a.vim File 2894 bytes August 02 2022 16:56:59.
zimbu.vim File 6446 bytes August 02 2022 16:56:59.
zsh.vim File 23489 bytes August 02 2022 16:56:59.

Reading File: ////usr/share/vim/vim80/syntax/ruby.vim

" Vim syntax file
" Language:		Ruby
" Maintainer:		Doug Kearns <dougkearns@gmail.com>
" URL:			https://github.com/vim-ruby/vim-ruby
" Release Coordinator:	Doug Kearns <dougkearns@gmail.com>
" ----------------------------------------------------------------------------
"
" Previous Maintainer:	Mirko Nasato
" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)
" ----------------------------------------------------------------------------

" Prelude {{{1
if exists("b:current_syntax")
  finish
endif

" this file uses line continuations
let s:cpo_sav = &cpo
set cpo&vim

" Folding Config {{{1
if has("folding") && exists("ruby_fold")
  setlocal foldmethod=syntax
endif

let s:foldable_groups = split(
      \	  get(
      \	    b:,
      \	    'ruby_foldable_groups',
      \	    get(g:, 'ruby_foldable_groups', 'ALL')
      \	  )
      \	)

function! s:foldable(...) abort
  if index(s:foldable_groups, 'ALL') > -1
    return 1
  endif

  for l:i in a:000
    if index(s:foldable_groups, l:i) > -1
      return 1
    endif
  endfor

  return 0
endfunction " }}}

syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo

" Whitespace Errors {{{1
if exists("ruby_space_errors")
  if !exists("ruby_no_trail_space_error")
    syn match rubySpaceError display excludenl "\s\+$"
  endif
  if !exists("ruby_no_tab_space_error")
    syn match rubySpaceError display " \+\t"me=e-1
  endif
endif

" Operators {{{1
if exists("ruby_operators")
  syn match  rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::"
  syn match  rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
  syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
endif

" Expression Substitution and Backslash Notation {{{1
syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}"						    contained display
syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
syn match rubyQuoteEscape  "\\[\\']"											    contained display

syn region rubyInterpolation	      matchgroup=rubyInterpolationDelimiter start="#{" end="}" contained contains=ALLBUT,@rubyNotTop
syn match  rubyInterpolation	      "#\%(\$\|@@\=\)\w\+"    display contained contains=rubyInterpolationDelimiter,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable,rubyPredefinedVariable
syn match  rubyInterpolationDelimiter "#\ze\%(\$\|@@\=\)\w\+" display contained
syn match  rubyInterpolation	      "#\$\%(-\w\|\W\)"       display contained contains=rubyInterpolationDelimiter,rubyPredefinedVariable,rubyInvalidVariable
syn match  rubyInterpolationDelimiter "#\ze\$\%(-\w\|\W\)"    display contained
syn region rubyNoInterpolation	      start="\\#{" end="}"	      contained
syn match  rubyNoInterpolation	      "\\#{"		      display contained
syn match  rubyNoInterpolation	      "\\#\%(\$\|@@\=\)\w\+"  display contained
syn match  rubyNoInterpolation	      "\\#\$\W"		      display contained

syn match rubyDelimiterEscape	"\\[(<{\[)>}\]]" transparent display contained contains=NONE

syn region rubyNestedParentheses    start="("  skip="\\\\\|\\)"  matchgroup=rubyString end=")"	transparent contained
syn region rubyNestedCurlyBraces    start="{"  skip="\\\\\|\\}"  matchgroup=rubyString end="}"	transparent contained
syn region rubyNestedAngleBrackets  start="<"  skip="\\\\\|\\>"  matchgroup=rubyString end=">"	transparent contained
syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]"	transparent contained

" Regular Expression Metacharacters {{{1
" These are mostly Oniguruma ready
syn region rubyRegexpComment	matchgroup=rubyRegexpSpecial   start="(?#"								  skip="\\)"  end=")"  contained
syn region rubyRegexpParens	matchgroup=rubyRegexpSpecial   start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)"  end=")"  contained transparent contains=@rubyRegexpSpecial
syn region rubyRegexpBrackets	matchgroup=rubyRegexpCharClass start="\[\^\="								  skip="\\\]" end="\]" contained transparent contains=rubyStringEscape,rubyRegexpEscape,rubyRegexpCharClass oneline
syn match  rubyRegexpCharClass	"\\[DdHhSsWw]"	       contained display
syn match  rubyRegexpCharClass	"\[:\^\=\%(alnum\|alpha\|ascii\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\):\]" contained
syn match  rubyRegexpEscape	"\\[].*?+^$|\\/(){}[]" contained
syn match  rubyRegexpQuantifier	"[*?+][?+]\="	       contained display
syn match  rubyRegexpQuantifier	"{\d\+\%(,\d*\)\=}?\=" contained display
syn match  rubyRegexpAnchor	"[$^]\|\\[ABbGZz]"     contained display
syn match  rubyRegexpDot	"\."		       contained display
syn match  rubyRegexpSpecial	"|"		       contained display
syn match  rubyRegexpSpecial	"\\[1-9]\d\=\d\@!"     contained display
syn match  rubyRegexpSpecial	"\\k<\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\=>" contained display
syn match  rubyRegexpSpecial	"\\k'\%([a-z_]\w*\|-\=\d\+\)\%([+-]\d\+\)\='" contained display
syn match  rubyRegexpSpecial	"\\g<\%([a-z_]\w*\|-\=\d\+\)>" contained display
syn match  rubyRegexpSpecial	"\\g'\%([a-z_]\w*\|-\=\d\+\)'" contained display

syn cluster rubyStringSpecial	      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape
syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
syn cluster rubyRegexpSpecial	      contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment

" Numbers and ASCII Codes {{{1
syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>"								display
syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>"						display
syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>"								display
syn match rubyInteger	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)*r\=i\=\>"								display
syn match rubyFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>"					display
syn match rubyFloat	"\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>"	display

" Identifiers {{{1
syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
syn match rubyBlockArgument	    "&[_[:lower:]][_[:alnum:]]"		 contains=NONE display transparent

syn match  rubyConstant		"\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)\@!"
syn match  rubyClassVariable	"@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
syn match  rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"	display
syn match  rubyGlobalVariable	"$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
syn match  rubySymbol		"[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
syn match  rubySymbol		"[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
syn match  rubySymbol		"[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
syn match  rubySymbol		"[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="

if s:foldable(':')
  syn region rubySymbol		start="[]})\"':]\@1<!:'"  end="'"  skip="\\\\\|\\'"  contains=rubyQuoteEscape fold
  syn region rubySymbol		start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
else
  syn region rubySymbol		start="[]})\"':]\@1<!:'"  end="'"  skip="\\\\\|\\'"  contains=rubyQuoteEscape
  syn region rubySymbol		start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
endif

syn match  rubyCapitalizedMethod	"\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@="

syn match  rubyBlockParameter	  "\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" contained
syn region rubyBlockParameterList start="\%(\%(\<do\>\|{\)\_s*\)\@32<=|" end="|" oneline display contains=rubyBlockParameter

syn match rubyInvalidVariable	 "$[^ A-Za-z_-]"
syn match rubyPredefinedVariable #$[!$&"'*+,./0:;<=>?@\`~]#
syn match rubyPredefinedVariable "$\d\+"										   display
syn match rubyPredefinedVariable "$_\>"											   display
syn match rubyPredefinedVariable "$-[0FIKadilpvw]\>"									   display
syn match rubyPredefinedVariable "$\%(deferr\|defout\|stderr\|stdin\|stdout\)\>"					   display
syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|LOAD_PATH\|PROGRAM_NAME\|SAFE\|VERBOSE\)\>" display
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"

" Normal Regular Expression {{{1
if s:foldable('/')
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
else
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
endif

" Generalized Regular Expression {{{1
if s:foldable('%')
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{"				end="}[iomxneus]*"   skip="\\\\\|\\}"	 contains=@rubyRegexpSpecial fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<"				end=">[iomxneus]*"   skip="\\\\\|\\>"	 contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\["				end="\][iomxneus]*"  skip="\\\\\|\\\]"	 contains=@rubyRegexpSpecial fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r("				end=")[iomxneus]*"   skip="\\\\\|\\)"	 contains=@rubyRegexpSpecial fold
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)"				end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
else
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{"				end="}[iomxneus]*"   skip="\\\\\|\\}"	 contains=@rubyRegexpSpecial
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<"				end=">[iomxneus]*"   skip="\\\\\|\\>"	 contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\["				end="\][iomxneus]*"  skip="\\\\\|\\\]"	 contains=@rubyRegexpSpecial
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r("				end=")[iomxneus]*"   skip="\\\\\|\\)"	 contains=@rubyRegexpSpecial
  syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)"				end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
endif

" Normal String {{{1
let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' .
      \ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' .
      \ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape'	 . s:spell_cluster

" Shell Command Output {{{1
if s:foldable('%')
  syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold
else
  syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
endif

" Generalized Single Quoted String, Symbol and Array of Strings {{{1
if s:foldable('%')
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{"				     end="}"   skip="\\\\\|\\}"	  fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<"				     end=">"   skip="\\\\\|\\>"	  fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\["				     end="\]"  skip="\\\\\|\\\]"  fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]("				     end=")"   skip="\\\\\|\\)"	  fold contains=rubyNestedParentheses,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)"			     end="\z1" skip="\\\\\|\\\z1" fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"    end="\z1" skip="\\\\\|\\\z1" fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{"				     end="}"   skip="\\\\\|\\}"	  fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<"				     end=">"   skip="\\\\\|\\>"	  fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\["				     end="\]"  skip="\\\\\|\\\]"  fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s("				     end=")"   skip="\\\\\|\\)"	  fold contains=rubyNestedParentheses,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)"			     end="\z1" skip="\\\\\|\\\z1" fold
else
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{"				     end="}"   skip="\\\\\|\\}"	  contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<"				     end=">"   skip="\\\\\|\\>"	  contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\["				     end="\]"  skip="\\\\\|\\\]"  contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]("				     end=")"   skip="\\\\\|\\)"	  contains=rubyNestedParentheses,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)"			     end="\z1" skip="\\\\\|\\\z1"
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)"    end="\z1" skip="\\\\\|\\\z1"
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{"				     end="}"   skip="\\\\\|\\}"	  contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<"				     end=">"   skip="\\\\\|\\>"	  contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\["				     end="\]"  skip="\\\\\|\\\]"  contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s("				     end=")"   skip="\\\\\|\\)"	  contains=rubyNestedParentheses,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)"			     end="\z1" skip="\\\\\|\\\z1"
endif

" Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1
" Note: %= is not matched here as the beginning of a double quoted string
if s:foldable('%')
  syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)"	      end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={"			      end="}"	skip="\\\\\|\\}"   contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape    fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<"			      end=">"	skip="\\\\\|\\>"   contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape  fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\["			      end="\]"	skip="\\\\\|\\\]"  contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=("			      end=")"	skip="\\\\\|\\)"   contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape    fold
  syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)"			      end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
else
  syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)"	      end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={"			      end="}"	skip="\\\\\|\\}"   contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<"			      end=">"	skip="\\\\\|\\>"   contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\["			      end="\]"	skip="\\\\\|\\\]"  contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=("			      end=")"	skip="\\\\\|\\)"   contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
  syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)"			      end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
endif

" Array of Symbols {{{1
if s:foldable('%')
  " Array of Symbols
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"	fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{"				  end="}"   skip="\\\\\|\\}"	fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<"				  end=">"   skip="\\\\\|\\>"	fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\["				  end="\]"  skip="\\\\\|\\\]"	fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i("				  end=")"   skip="\\\\\|\\)"	fold contains=rubyNestedParentheses,rubyDelimiterEscape

  " Array of interpolated Symbols
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"	contains=@rubyStringSpecial fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{"				  end="}"   skip="\\\\\|\\}"	contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape    fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<"				  end=">"   skip="\\\\\|\\>"	contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape  fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\["				  end="\]"  skip="\\\\\|\\\]"	contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I("				  end=")"   skip="\\\\\|\\)"	contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape    fold
else
  " Array of Symbols
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{"				  end="}"   skip="\\\\\|\\}"	contains=rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<"				  end=">"   skip="\\\\\|\\>"	contains=rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\["				  end="\]"  skip="\\\\\|\\\]"	contains=rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i("				  end=")"   skip="\\\\\|\\)"	contains=rubyNestedParentheses,rubyDelimiterEscape

  " Array of interpolated Symbols
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"	contains=@rubyStringSpecial
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{"				  end="}"   skip="\\\\\|\\}"	contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<"				  end=">"   skip="\\\\\|\\>"	contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\["				  end="\]"  skip="\\\\\|\\\]"	contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
  syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I("				  end=")"   skip="\\\\\|\\)"	contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
endif

" Here Document {{{1
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+	 end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop

if s:foldable('<<')
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc		    fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend

  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart		    fold keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
else
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc		    keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2	matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend

  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3    matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart		    keepend
  syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3  matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
endif

" eRuby Config {{{1
if exists('main_syntax') && main_syntax == 'eruby'
  let b:ruby_no_expensive = 1
end

" Module, Class, Method and Alias Declarations {{{1
syn match  rubyAliasDeclaration    "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
syn match  rubyAliasDeclaration2   "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
syn match  rubyMethodDeclaration   "[^[:space:];#(]\+"	 contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
syn match  rubyClassDeclaration    "[^[:space:];#<]\+"	 contained contains=rubyConstant,rubyOperator
syn match  rubyModuleDeclaration   "[^[:space:];#<]\+"	 contained contains=rubyConstant,rubyOperator
syn match  rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
syn match  rubyFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
syn match  rubyFunction "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration

syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter

" Keywords {{{1
" Note: the following keywords have already been defined:
" begin case class def do end for if module unless until while
syn match   rubyControl	       "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
syn match   rubyOperator       "\<defined?" display
syn match   rubyKeyword	       "\<\%(super\|yield\)\>[?!]\@!"
syn match   rubyBoolean	       "\<\%(true\|false\)\>[?!]\@!"
syn match   rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
syn match   rubyBeginEnd       "\<\%(BEGIN\|END\)\>[?!]\@!"

" Expensive Mode {{{1
" Match 'end' with the appropriate opening keyword for syntax based folding
" and special highlighting of module/class/method definitions
if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
  syn match  rubyDefine "\<alias\>"  nextgroup=rubyAliasDeclaration  skipwhite skipnl
  syn match  rubyDefine "\<def\>"    nextgroup=rubyMethodDeclaration skipwhite skipnl
  syn match  rubyDefine "\<undef\>"  nextgroup=rubyFunction	     skipwhite skipnl
  syn match  rubyClass	"\<class\>"  nextgroup=rubyClassDeclaration  skipwhite skipnl
  syn match  rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl

  if s:foldable('def')
    syn region rubyMethodBlock start="\<def\>"	matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyMethodBlock start="\<def\>"	matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  if s:foldable('class')
    syn region rubyBlock start="\<class\>"	matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyBlock start="\<class\>"	matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  if s:foldable('module')
    syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  " modifiers
  syn match rubyLineContinuation    "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl
  syn match rubyConditionalModifier "\<\%(if\|unless\)\>"
  syn match rubyRepeatModifier	    "\<\%(while\|until\)\>"

  if s:foldable('do')
    syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  " curly bracket block or hash literal
  if s:foldable('{')
    syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
  endif

  if s:foldable('[')
    syn region rubyArrayLiteral	matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyArrayLiteral	matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop
  endif

  " statements without 'do'
  if s:foldable('begin')
    syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  if s:foldable('case')
    syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  if s:foldable('if')
    syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
  else
    syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
  endif

  syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!"	contained containedin=rubyCaseExpression
  syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression

  syn match rubyExceptional	  "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyBlockExpression
  syn match rubyMethodExceptional "\<\%(\%(\%(;\|^\)\s*\)\@<=rescue\|else\|ensure\)\>[?!]\@!" contained containedin=rubyMethodBlock

  " statements with optional 'do'
  syn region rubyOptionalDoLine   matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop

  if s:foldable('for')
    syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
  else
    syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
  endif

  if !exists("ruby_minlines")
    let ruby_minlines = 500
  endif
  exec "syn sync minlines=" . ruby_minlines

else
  syn match rubyControl "\<def\>[?!]\@!"    nextgroup=rubyMethodDeclaration skipwhite skipnl
  syn match rubyControl "\<class\>[?!]\@!"  nextgroup=rubyClassDeclaration  skipwhite skipnl
  syn match rubyControl "\<module\>[?!]\@!" nextgroup=rubyModuleDeclaration skipwhite skipnl
  syn match rubyControl "\<\%(case\|begin\|do\|for\|if\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"
  syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
endif

" Special Methods {{{1
if !exists("ruby_no_special_methods")
  syn keyword rubyAccess    public protected private public_class_method private_class_method public_constant private_constant module_function
  " attr is a common variable name
  syn match   rubyAttribute "\%(\%(^\|;\)\s*\)\@<=attr\>\(\s*[.=]\)\@!"
  syn keyword rubyAttribute attr_accessor attr_reader attr_writer
  syn match   rubyControl   "\<\%(exit!\|\%(abort\|at_exit\|exit\|fork\|loop\|trap\)\>[?!]\@!\)"
  syn keyword rubyEval	    eval class_eval instance_eval module_eval
  syn keyword rubyException raise fail catch throw
  " false positive with 'include?'
  syn match   rubyInclude   "\<include\>[?!]\@!"
  syn keyword rubyInclude   autoload extend load prepend refine require require_relative using
  syn keyword rubyKeyword   callcc caller lambda proc
endif

" Comments and Documentation {{{1
syn match   rubySharpBang "\%^#!.*" display
syn keyword rubyTodo	  FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
syn match   rubyComment   "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
if !exists("ruby_no_comment_fold") && s:foldable('#')
  syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
  syn region rubyDocumentation	  start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
else
  syn region rubyDocumentation	  start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
endif

" Keyword Nobbling {{{1
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE
syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]"			       transparent contains=NONE

" More Symbols {{{1
syn match  rubySymbol		"\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1
syn match  rubySymbol		"[]})\"':]\@1<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
syn match  rubySymbol		"\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
syn match  rubySymbol		"[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1

" __END__ Directive {{{1
if s:foldable('__END__')
  syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
else
  syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
endif

" Default Highlighting {{{1
hi def link rubyClass			rubyDefine
hi def link rubyModule			rubyDefine
hi def link rubyMethodExceptional	rubyDefine
hi def link rubyDefine			Define
hi def link rubyFunction		Function
hi def link rubyConditional		Conditional
hi def link rubyConditionalModifier	rubyConditional
hi def link rubyExceptional		rubyConditional
hi def link rubyRepeat			Repeat
hi def link rubyRepeatModifier		rubyRepeat
hi def link rubyOptionalDo		rubyRepeat
hi def link rubyControl			Statement
hi def link rubyInclude			Include
hi def link rubyInteger			Number
hi def link rubyASCIICode		Character
hi def link rubyFloat			Float
hi def link rubyBoolean			Boolean
hi def link rubyException		Exception
if !exists("ruby_no_identifiers")
  hi def link rubyIdentifier		Identifier
else
  hi def link rubyIdentifier		NONE
endif
hi def link rubyClassVariable		rubyIdentifier
hi def link rubyConstant		Type
hi def link rubyGlobalVariable		rubyIdentifier
hi def link rubyBlockParameter		rubyIdentifier
hi def link rubyInstanceVariable	rubyIdentifier
hi def link rubyPredefinedIdentifier	rubyIdentifier
hi def link rubyPredefinedConstant	rubyPredefinedIdentifier
hi def link rubyPredefinedVariable	rubyPredefinedIdentifier
hi def link rubySymbol			Constant
hi def link rubyKeyword			Keyword
hi def link rubyOperator		Operator
hi def link rubyBeginEnd		Statement
hi def link rubyAccess			Statement
hi def link rubyAttribute		Statement
hi def link rubyEval			Statement
hi def link rubyPseudoVariable		Constant
hi def link rubyCapitalizedMethod	rubyLocalVariableOrMethod

hi def link rubyComment			Comment
hi def link rubyData			Comment
hi def link rubyDataDirective		Delimiter
hi def link rubyDocumentation		Comment
hi def link rubyTodo			Todo

hi def link rubyQuoteEscape		rubyStringEscape
hi def link rubyStringEscape		Special
hi def link rubyInterpolationDelimiter	Delimiter
hi def link rubyNoInterpolation		rubyString
hi def link rubySharpBang		PreProc
hi def link rubyRegexpDelimiter		rubyStringDelimiter
hi def link rubySymbolDelimiter		rubySymbol
hi def link rubyStringDelimiter		Delimiter
hi def link rubyHeredoc			rubyString
hi def link rubyString			String
hi def link rubyRegexpEscape		rubyRegexpSpecial
hi def link rubyRegexpQuantifier	rubyRegexpSpecial
hi def link rubyRegexpAnchor		rubyRegexpSpecial
hi def link rubyRegexpDot		rubyRegexpCharClass
hi def link rubyRegexpCharClass		rubyRegexpSpecial
hi def link rubyRegexpSpecial		Special
hi def link rubyRegexpComment		Comment
hi def link rubyRegexp			rubyString

hi def link rubyInvalidVariable		Error
hi def link rubyError			Error
hi def link rubySpaceError		rubyError

" Postscript {{{1
let b:current_syntax = "ruby"

let &cpo = s:cpo_sav
unlet! s:cpo_sav

" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:

SILENT KILLER Tool